Чтобы внести изменения в конфигурацию Nginx с помощью Ansible без использования шаблонов, можно воспользоваться модулем `lineinfile` или `blockinfile`. Данный подход позволяет редактировать файл непосредственно, добавляя или заменяя строки. Мы рассмотрим пример использования `lineinfile` для редактирования элементов в блоке `server`.
Допустим, ваш файл конфигурации Nginx находится по пути `/etc/nginx/conf.d/default.conf`. Ниже приведен пример плейбука Ansible, который внесет необходимые изменения:
```yaml
---
- name: Update Nginx configuration
hosts: nginx_servers
become: yes
tasks:
- name: Ensure ssl_certificate is set correctly
lineinfile:
path: /etc/nginx/conf.d/default.conf
regexp: '^ssl_certificate '
line: 'ssl_certificate /etc/nginx/ssl/fullchain.pem;'
state: present
- name: Ensure ssl_certificate_key is set correctly
lineinfile:
path: /etc/nginx/conf.d/default.conf
regexp: '^ssl_certificate_key '
line: 'ssl_certificate_key /etc/nginx/ssl/privkey.pem;'
state: present
- name: Update error_log for SIEM
lineinfile:
path: /etc/nginx/conf.d/default.conf
regexp: '^error_log '
line: 'error_log syslog:server=<Адрес сервера SIEM>:<Порт сервера SIEM>,facility=local6,tag=siemnginxerrlog info;'
state: present
- name: Update access_log for SIEM
lineinfile:
path: /etc/nginx/conf.d/default.conf
regexp: '^access_log '
line: 'access_log syslog:server=<Адрес сервера SIEM>:<Порт сервера SIEM>,facility=local6,tag=siemnginxacclog,severity=info combined;'
state: present
- name: Reload Nginx to apply changes
service:
name: nginx
state: reloaded
```
### Объяснение кода:
1. **Модуль `lineinfile`:** Этот модуль будет редактировать файл по указанному пути. Он ищет строки, соответствующие регулярному выражению (`regexp`), и заменяет их. Если такой строки нет, он добавит новую.
2. **Регулярные выражения (`regexp`):** Они позволят находить и заменять строки по шаблону, что важно для корректного редактирования конфигурации.
3. **Перезапуск Nginx:** После всех изменений необходимо перезагрузить Nginx, чтобы новые настройки вступили в силу. Для этого используется модуль `service`.
Таким образом, используя `lineinfile`, вы сможете внести корректировки в конфигурацию Nginx без применения шаблонов.