@installdoc/ansible-gas-station
Version:
An Ansible playbook that provisions your network with software from GitHub Awesome lists, developed with disaster recovery in mind ⛽🔥🤤
114 lines (96 loc) • 3.52 kB
YAML
- name: Install NGINX Optimized base dependencies
package:
name: "{{ nginx_dependencies }}"
state: present
when: ansible_os_family != 'Darwin'
- name: Update nginx module link
include_tasks: linux/update-module-link.yml
when: nginx_module_dir is defined and nginx_module_link is defined
- name: Gather the package facts
package_facts:
manager: auto
when: ansible_system == 'Linux'
- name: Set a variable equal to the NGINX version
set_fact:
nginx_version: "{{ ansible_facts.packages['nginx'][0].version | regex_search('^[0-9.]*') }}"
when: ansible_system == 'Linux'
- name: Gather the package facts # noqa 301
become: false
command: "/usr/local/bin/brew list --versions"
register: package_versions
when: ansible_system == 'Darwin'
- name: Set a variable equal to the NGINX version
set_fact:
nginx_version: "{{ package_versions.stdout_lines | join(',') | regex_search('nginx (\\d*\\.)*\\d*') | regex_replace('nginx ','') }}"
when: ansible_system == 'Darwin'
- name: Add styled status code response pages from Git repository
include_tasks: linux/status-pages.yml
when: error_page_repository | bool
- name: Modify the NGINX service to prevent failures on start up when /etc/hosts is not loaded quickly enough
lineinfile:
path: "{{ nginx_service_path[ansible_distribution] }}"
regexp: "After=(.*)network.target(.*)"
line: 'After=\1network-online.target\2'
owner: root
mode: 0644
when:
- ansible_distribution is defined and ( nginx_service_path is defined or nginx_service_path[ansible_distribution] is defined )
- ansible_os_family != 'Darwin'
# @action Ensures Nginx is configured
# Installs Brotli on Linux and MacOS Systems
- name: Compile Brotli modules
include_tasks: linux/brotli.yml
when:
- enable_nginx_brotli
- name: Ensure dhparam.pem exists
include_tasks: linux/dhparam.yml
# @action Ensures Nginx is configured
# Installs Nginx Amplify Agent on Linux and MacOS Systems
- name: Install NGINX Amplify
include_tasks: linux/amplify.yml
when:
- nginx_amplify_api_key is defined
- enable_nginx_amplify
- ansible_os_family != 'Darwin'
- name: Register the file status of the ModSecurity WAF module configuration file
stat:
path: "{{ modsec_waf_conf_directory }}/crs-setup.conf"
register: modsec_config
# @action Ensures Nginx is configured
# Installs ModSecurity WAF on Linux and MacOS Systems
- name: Compile ModSecurity WAF module
include_tasks: linux/modsecurity.yml
when:
- enable_nginx_modsecurity_waf
- not modsec_config.stat.exists
- name: Update the NGINX configuration files
include_tasks: linux/nginx-configuration.yml
tags: nginx_configuration
- name: Generate sites-available
include_tasks: site-available.yml
loop: "{{ apps }}"
tags: nginx_configuration
- name: Generate sites-available for proxy host
vars:
nginx_proxy_host_override: true
include_tasks: site-available.yml
loop: "{{ hosts | list }}"
when:
- nginx_proxy_host
- not (item in apps)
- name: Symlink sites-enabled
file:
src: "{{ sites_available_path }}/{{ item | default(item.name) }}.conf"
path: "{{ sites_enabled_path }}/{{ item | default(item.name) }}.conf"
state: link
loop: "{{ apps }}"
tags: nginx_configuration
when: (item | default(item.name)) != host_id
- name: Reload systemd and restart NGINX
systemd:
daemon_reload: true
name: nginx
state: restarted
tags: nginx_configuration
when: ansible_os_family != 'Darwin'