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