Skip to content

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

Инструкция по использованию

  1. Сохраните этот код в файл с расширением .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 под свои нужды.