Ansible Playbook для установки Nginx с пользовательской
конфигурацией
yaml --- - name: Установка и настройка Nginx hosts: all become:
yes vars:
# Пользовательская конфигурация Nginx
nginx_custom_config: | user www-data; worker_processes auto; pid
/run/nginx.pid; include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
}
http { sendfile on; tcp_nopush on; tcp_nodelay on;
keepalive_timeout 65; types_hash_max_size 2048; include
/etc/nginx/mime.types; default_type
application/octet-stream; ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on; access_log
/var/log/nginx/access.log; error_log
/var/log/nginx/error.log; gzip on; include
/etc/nginx/conf.d/*.conf; include
/etc/nginx/sites-enabled/*;
}
# Конфигурация сайта по умолчанию
nginx_default_site: | server { listen 80 default_server; listen
[::]:80 default_server; server_name _; root /var/www/html;
index index.html; location / {
try_files $uri $uri/ =404;
}
}
tasks:
# Установка Nginx
- name: Установка Nginx ansible.builtin.apt: name: nginx state:
present update_cache: yes
tags: install
# Останавливаем Nginx перед изменением конфигурации
- name: Остановка Nginx ansible.builtin.service: name: nginx
state: stopped
tags: config
# Размещаем основную конфигурацию Nginx
- name: Установка пользовательской конфигурации nginx.conf
ansible.builtin.copy:
dest: /etc/nginx/nginx.conf content: "{{ nginx_custom_config
}}"
owner: root group: root mode: '0644' tags: config
# Отключаем сайт по умолчанию
- name: Отключение дефолтного сайта ansible.builtin.file: path:
/etc/nginx/sites-enabled/default state: absent
tags: config
# Создаем новый конфиг сайта по умолчанию
- name: Создание нового конфига сайта по умолчанию
ansible.builtin.copy:
dest: /etc/nginx/sites-available/default content: "{{
nginx_default_site }}" owner: root group: root mode: '0644'
tags: config
# Включаем сайт по умолчанию
- name: Включение сайта по умолчанию ansible.builtin.file: src:
/etc/nginx/sites-available/default dest:
/etc/nginx/sites-enabled/default state: link
tags: config
# Создаем стандартную index.html страницу
- name: Создание стандартной веб-страницы ansible.builtin.copy:
dest: /var/www/html/index.html content: |
<!DOCTYPE html> <html> <head> <title>Welcome to
Nginx!</title>
</head> <body> <h1>Nginx успешно установлен и настроен с
помощью Ansible!</h1>
</body> </html> owner: www-data group: www-data mode:
'0644'
tags: config
# Запускаем Nginx
- name: Запуск Nginx ansible.builtin.service: name: nginx state:
started enabled: yes
tags: service
# Проверяем что Nginx работает
- name: Проверка работы Nginx ansible.builtin.uri: url:
"http://localhost" return_content: yes
register: nginx_status until: nginx_status.status == 200
retries: 5 delay: 3 ignore_errors: yes tags: verify
Инструкция по использованию
- Сохраните этот код в файл с расширением
.yml
, напримерnginx_install.yml
2. Подготовьте инвентарный файл с хостами, на которые нужно установить Nginx 3. Запустите playbook командой:bash ansible-playbook -i inventory_file nginx_install.yml
Особенности этого playbook:
- Устанавливает последнюю версию Nginx из репозиториев - Заменяет
стандартную конфигурацию на пользовательскую - Создает простую
веб-страницу для проверки работы - Проверяет, что сервер запустился и
отвечает - Подходит для Ubuntu/Debian систем (для CentOS/RHEL нужно
заменить apt на yum)
Вы можете изменить содержимое переменных
nginx_custom_config
иnginx_default_site
под свои нужды.