1. 程式人生 > >使用Ansible的Playbook修改nginx配置文件

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

static cati server ane playbook write mar req ansi

目錄結構:

技術分享圖片

文件內容

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 }

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