Развертывание веб-сервера NGINX#

Использование коллекции astra.nginx из реестра Automation Hub позволяет автоматизировать процесс установки и настройки веб-сервера NGINX на необходимом количестве узлов.

Описание сценария#

Процесс установки и настройки веб-сервера NGINX состоит из следующих этапов:

  1. Создание стенда.

    В качестве стенда рекомендуется использовать управляемые узлы, обладающие следующими характеристиками:

    Характеристика

    Значение

    Кол-во ядер CPU

    ≥ 2

    Кол-во RAM, ГБ

    ≥ 2

    Размер хранилища, ГБ

    ≥ 20

    ОС

    Astra Linux Special Edition 1.8.1uu2

    Для подключения к стенду используется протокол SSH.

    Если у вас нет подходящего стенда, вы можете создать его с помощью Vagrant, используя приложенный Vagrantfile.

  2. Подготовка проекта Ansible.

    Проект включает в себя следующие файлы:

    • ansible.cfg – настройки Ansible;

    • inventory.ini – инвентарь;

    • playbooks/nginx.yml – playbook, содержащий сценарий настройки управляемых узлов.

    В демонстрационных целях для NGINX задаются следующие настройки:

    • worker_connections: 2048;

    • keepalive_timeout: 30.

  3. Запуск playbook.

  4. Проверка работоспособности развернутой инфраструктуры.

Подготовка к работе#

Подготовьте окружение к управлению задачами автоматизации:

  1. Настройте управляемые узлы согласно инструкций:

  2. Настройте Private Automation Hub на синхронизацию с Automation Hub.

  3. Загрузите в Private Automation Hub образы среды исполнения aa-1.2/aa-full-ee.

  4. Изучите описание коллекции astra.nginx.

  5. Подготовьте каталог для хранения файлов проекта.

    Если для управления задачами автоматизации используется Automation Controller, выполните следующие действия:

    1. В одном из сервисов хранения репозиториев Git создайте пустой репозиторий для проекта.

    2. Клонируйте этот репозиторий на локальный компьютер.

    Если для управления задачами автоматизации используется Ansible Navigator, создайте в любом удобном месте пустой каталог, например:

    mkdir ~/ansible-nginx/
    

Подготовка проекта Ansible#

Подготовьте ресурсы, необходимые для использования Ansible.

  1. Создайте файл ansible.cfg со следующим содержимым:

    ansible.cfg#
    [defaults]
    host_key_checking = false
    inventory = inventory.ini
    
  2. Создайте файл инвентаря inventory.ini, например:

    inventory.ini#
    [all]
    node1.example.com   ansible_host=192.168.56.11   ansible_user=vagrant
    

    В этом примере показаны настройки подключения к одному управляемому узлу.

  3. Создайте каталог playbooks/, а в нем – файл сценария nginx.yml:

    playbooks/nginx.yml#
    ---
    - name: Install and configure NGINX server
      hosts: all
      become: true
    
      roles:
        - role: astra.nginx.nginx
          vars:
            nginx_worker_connections: 2048
            nginx_keepalive_timeout: 30
    

    В этом файле настройки NGINX заданы через значения переменных роли astra.nginx.nginx.

  4. Если для запуска заданий автоматизации используется Automation Controller, зафиксируйте сделанные в проекте изменения и опубликуйте их в репозитории Git.

Запуск playbook#

Способ запуска playbook зависит от инструмента, используемого для управления задачами автоматизации.

Для запуска задания автоматизации в Automation Controller выполните следующие действия:

  1. Для доступа к управляемым узлам создайте необходимое количество полномочий типа Машина.

  2. Если для доступа к репозиторию с кодом проекта требуется авторизация, создайте полномочие типа Система управления версиями.

  3. Создайте проект со следующими свойствами:

    • Название: NGINX.

    • Среда исполнения: выберите среду исполнения, использующую образ aa-full-ee.

      Примечание

      Среда исполнения на основе образа aa-full-ee используется в Automation Controller по умолчанию. Вы можете добавить среду исполнения самостоятельно, следуя инструкции.

    • Тип системы управления исходными данными: Git.

    • URL системы управления исходными данными: укажите ссылку на репозиторий с кодом проекта.

    • Полномочия на систему управления исходными данными: если для доступа к репозиторию с кодом проекта требуется авторизация, выберите созданное ранее полномочие типа Система управления версиями.

  4. Создайте обычный инвентарь и добавьте в него сведения об управляемых узлах.

    Совет

    Вы можете использовать файл inventory.ini в качестве источника сведений об управляемых узлах.

  5. Создайте шаблон задания со следующими свойствами:

    • Тип задания: Выполнение.

    • Инвентарь: выберите инвентарь, созданный на предыдущем шаге.

    • Проект: выберите проект NGINX.

    • Playbook: выберите файл playbooks/nginx.yml.

  6. Запустите задание на основе созданного шаблона.

При использовании Ansible Navigator для запуска playbook выполните команду:

ansible-navigator run playbooks/nginx.yml \
   --eei private-hub.example.com/aa-1.2/aa-full-ee

При этом открывается псевдографический интерфейс, в котором показывается ход выполнения, например:

  Play name                           Ok Changed Unreachable  Failed Skipped Ignored In progress  Task count   Progress
0│Install and configure NGINX server   5       0           0       0       0       0           1           6   ▇▇▇▇▇▇


^b/PgUp page up       ^f/PgDn page down       ↑↓ scroll       esc back       [0-9] goto       :help help      Running

Для просмотра более подробной информации о ходе выполнения нажмите 0.

Статус задания выводится в правом нижнем углу. Дождитесь перехода задания в статус Successful.

Проверка работоспособности развернутой инфраструктуры#

Чтобы проверить корректность развертывания веб-сервера NGINX, выполните следующие действия:

  1. Подключитесь к любому из управляемых узлов по SSH.

  2. Для проверки статуса службы nginx выполните команду:

    systemctl status nginx
    

    При успешном развертывании в терминал выводится сообщение вида:

     ● nginx.service - A high performance web server and a reverse proxy server
        Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
        Active: active (running) since Mon 2024-10-21 09:28:25 MSK; 2h 22min ago
          Docs: man:nginx(8)
      Main PID: 643 (nginx)
         Tasks: 3 (limit: 2586)
        Memory: 4.6M
           CPU: 14ms
        CGroup: /system.slice/nginx.service
                ├─643 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
                ├─645 nginx: worker process
                └─646 nginx: worker process
    
  3. Убедитесь, что в файле /etc/nginx/nginx.conf значения параметров worker_connections и keepalive_timeout соответствуют заданным в playbook (2048 и 30 соответственно).

Особенности проекта#

Обратите внимание на следующие особенности проекта:

  • Использование образа среды исполнения aa-full-ee в Automation Controller и Ansible Navigator.

  • Настройка параметров роли через переменные.

Заключение#

В этом сценарии вы познакомились с основными шагами по развертыванию веб-сервера NGINX с использованием коллекции astra.nginx. Из всей последовательности шагов важно выделить следующие действия:

  • Подготовка окружения.

  • Описание параметров доступа к управляемым узлам в файле инвентаря.

  • Связывание управляемых узлов и ролей в playbook.

  • Запуск playbook с помощью Ansible Navigator и в Automation Controller.

  • Проверка корректности развертывания NGINX.