使用Ansible的Playbook修改nginx配置文件

目录结构:

文件内容

tasks 目录下的“file.yml”文件,内容如下:

tasks目录下的“main.yml”

templates目录下的“nginx.conf.j2”

{% if nginx_use_proxy %}
{% for proxy in nginx_proxies %}
upstream {{ proxy.name }} {
    server {{ ansible_eth0.ipv4.address }}:{{ proxy.port }}
}
{% endfor %}
{% endif %}
server {
    listen 80;
    server_name {{ nginx_server_name }};
    access_log off;
    error_log /dev/null crit;
    rewrite ^ https://$server_name$request_uri? permanent;
}
server {
    listen 443 ssl;
    server_name {{ nginx_server_name }};
    ssl_certificate /etc/nginx/ssl/{{ nginx_ssl_cert_name }};
    ssl_certificate_key /etc/nginx/ssl/{{ nginx_ssl_cert_key }};

    root {{ nginx_web_root }};
    index index.html index.html;

    {% if nginx_use_auth %}
        auth_basic  "Restricted";
        auth_basic_user_file /etc/nginx/{{ project_name }}.htpasswd;
    {% endif %}

    {% if nginx_use_proxy %}
    {% for proxy in nginx_proxies %}

        location {{ proxy.location }} {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-Proto http;
            proxy_set_header X-Url-Scheme $scheme;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;
            proxy_redirect off;
            proxy_pass http://{{ proxy.name }};
        }
    {% endfor %}
    {% endif %}

    {% if nginx_server_static %}
        location / {
            try_file $uri $uri/ =404
    {% endif %}

}

var目录下的“main.yml”

---

nginx_server_name: www.test.com
nginx_web_root: /opt/test/
nginx_proxies:
    - name: suspicious
      location: /
      port: 2368
    - name: suspocoous-api
      location: /api
      port: 3000

执行入口文件“nginxconf.yml”

- name: Nginx Proxy Server‘s Conf Dynamic Create
    hosts: your IP
    vars:
        nginx_use_proxy: true
        nginx_ssl_cert_name: test.crt
        nginx_ssl_cert_key: test.key
        nginx_use_auth: true
        project_name: suspicious
        nginx_server_static: true
    gather_facts: true    //收集主机配置信息

    roles:
        - { role: nginxconf }

- name: Nginx WebServer‘s Conf Dynamic Create
    hosts: your IP
    vars:
        nginx_use_proxy: false
        nginx_ssl_cert_name: test.crt
        nginx_ssl_cert_key: test.key
        nginx_use_auth: false
        project_name: suspicious
        nginx_server_static: false
    gather_facts: no

    roles:
        - { role: nginxconf }

原文地址:http://blog.51cto.com/wymanlee/2069417

时间: 2024-10-24 05:58:09

使用Ansible的Playbook修改nginx配置文件的相关文章

Consul+Registrator+Consul-template实现动态修改nginx配置文件

实现需求 用nginx做负载均衡,手动的方式是在upstream中添加或删除后端服务器,比较麻烦. 通过Registrator收集需要注册到Consul作为Nginx后端服务器信息然后注册到Consul key/value.Consul-template去Consul key/value中读取信息,然后自动修改Nginx配置文件并平滑重启Nginx.不需要修改nginx.conf 环境 192.168.0.149 Mesos-master Zookeeper Consul-server Cons

修改nginx配置文件支持Thinkphp pathinfo以及rewrite模式

server { listen 80; server_name localhost; include /etc/nginx/default.d/*.conf; root /usr/share/nginx/thinkercms; location / { index index.php; if (!-e $request_filename) { rewrite ^/(.*)$ /index.php/$1 last; break; } } location ~ .+\.php($|/) { set

linux下Nginx配置文件(nginx.conf)配置设置详解(windows用phpstudy集成)

linux备份nginx.conf文件举例: cp /usr/local/nginx/nginx.conf /usr/local/nginx/nginx.conf-20171111(日期) 在进程列表里 面找master进程,它的编号就是主进程号. ps -ef | grep nginx 查看进程 cat /usr/local/nginx/nginx.pid 每次修改完nginx文件都要重新加载配置文件linux命令: /usr/local/nginx -t //验证配置文件是否合法 若ngin

nginx之旅第一篇:nginx下载安装、nginx配置文件详解、nginx默认网站

一.nginx下载安装 版本nginx 1.15.5 系统环境centos7.5(本机ip192.168.199.228) 关闭selinux 和防火墙firewall 1.下载 wget http://nginx.org/download/nginx-1.15.5.tar.gz -P /usr/src 2.安装 安装大概过程 配置---编译---安装 配置 1)检查环境 是否 满足安装条件 依赖解决 2)指定安装方式 配置文件 命令文件 各种文件放哪里 开启模块功能[内 置模块 三方模块] 3

ansible管理nginx配置文件

#生产环境中大多时候是需要管理配置文件的,安装软件包只是在初始化环境的时候用一下.下面我们来写个管理nginx配置文件的playbook 一.创建相关目录 mkdir  -p /etc/ansible/nginx_config/roles/{new,old}/{files,handlers,vars,tasks} #其中new为更新时用到的,old为回滚时用到的,files下面为nginx.conf和vhosts目录,handlers为重启nginx服务的命令. #关于回滚,需要在执行playb

ansible-管理nginx配置文件

背景:安装软件包,只是在初始化环境时用一下,大多时候需要修改配置文件:管理Nginx配置文件的playbook,执行playbook之前,一定要备份旧的配置:机器上的配置文件需和new/files保持一致 1. 创建目录和配置文件 说明:new为更新时用到,old为回滚时用到,即将new目录内容拷贝进来 mkdir -p /etc/anxible/nginx_config/roles/new/{files,handlers,vars,tasks} mkdir -p /etc/anxible/ng

4.3-ansible实例-管理nginx配置文件

Ansible 管理配置文件 * 生产环境中大多时候是需要管理配置文件的,安装软件包只是在初始化环境的时候用一下.下面我们来写个管理nginx配置文件的playbook 1.mkdir  -p /etc/ansible/nginx_config/roles/{new,old}/{files,handlers,vars,tasks} 说明:其中new为更新时用到的,old为回滚时用到的,files下面为nginx.conf和vhosts目录,handlers为重启nginx服务的命令 关于回滚,需

Ansible 之 playbook使用

1  概述 Playbook组织格式是YAML格式,编排的是任务(task),用来记录重复执行的命令 YAML:YAML(/?j?m?l/,尾音类似camel骆驼)是一个可读性高,用来表达数据序列的格式.YAML参考了其他多种语言,包括:C语言.Python.Perl,并从XML.电子邮件的数据格式(RFC 2822)中获得灵感.Clark Evans在2001年首次发表了这种语言,另外Ingy d?t Net与Oren Ben-Kiki也是这语言的共同设计者.目前已经有数种编程语言或脚本语言支

3.3 ansible之playbook

playbook 1 playbook是由一个或多个"play"组成的列表2 play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色.从根本上来讲,所谓task无非是调用ansible的一个module.将多个play组织在一个playbook中,即可以让它们联同起来按事先编排的机制同唱一台大戏3 Playbook采用YAML语言编写 YAML语法简介 List:列表,其所有元素均使用"-"打头示例 A list of ta