6
---
- name: Install and configure Nginx
hosts: all
become: true # Запуск с правами sudo
tasks:
- name: Update apt cache (Debian/Ubuntu)
apt:
update_cache: yes
when: ansible_os_family == 'Debian'
- name: Install Nginx (Debian/Ubuntu)
apt:
name: nginx
state: present
when: ansible_os_family == 'Debian'
- name: Install Nginx (CentOS/RHEL)
yum:
name: nginx
state: present
when: ansible_os_family == 'RedHat'
- name: Ensure Nginx is running and enabled
service:
name: nginx
state: started
enabled: yes
- name: Ensure default Nginx config is backed up
copy:
src: /etc/nginx/nginx.conf
dest: /etc/nginx/nginx.conf.bak
remote_src: yes
when: ansible_os_family == 'RedHat' # В CentOS конфиг лежит здесь, в Debian - /etc/nginx/nginx.conf тоже
- name: Place custom index.html
copy:
content: "<h1>Welcome to my Nginx server!</h1>"
dest: /var/www/html/index.html
mode: 0644
notify: Restart Nginx
handlers:
- name: Restart Nginx
service:
name: nginx
state: restarted
Сохраните этот код в файл install_nginx.yml.
Убедитесь, что у вас есть файл инвентаря (inventory.ini), например:
ini [webservers] server1 ansible_host=192.168.1.10 server2 ansible_host=192.168.1.11
[all:vars] ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa Запустите плейбук:
bash ansible-playbook -i inventory.ini install_nginx.yml