Развертывание веб-сервера NGINX#
Использование коллекции astra.nginx
из реестра Automation Hub позволяет автоматизировать процесс установки и настройки веб-сервера NGINX на необходимом количестве узлов.
Описание сценария#
Процесс установки и настройки веб-сервера NGINX состоит из следующих этапов:
Создание стенда.
В качестве стенда рекомендуется использовать управляемые узлы, обладающие следующими характеристиками:
Характеристика
Значение
Кол-во ядер CPU
≥ 2
Кол-во RAM, ГБ
≥ 2
Размер хранилища, ГБ
≥ 20
ОС
Astra Linux Special Edition 1.7.5uu1
Для подключения к стенду используется протокол SSH.
Если у вас нет подходящего стенда, вы можете создать его с помощью Vagrant, используя приложенный
Vagrantfile
.Подготовка проекта Ansible.
requirements.yml
– зависимости;ansible.cfg
– настройки Ansible;inventory.ini
– инвентарь;playbooks/nginx.yml
– playbook, содержащий сценарий настройки управляемых узлов.
В демонстрационных целях для NGINX задаются следующие настройки:
worker_connections
– 2048;keepalive_timeout
– 30.
Запуск playbook.
Проверка работоспособности развернутой инфраструктуры.
Подготовка к работе#
Подготовьте окружение к управлению задачами автоматизации:
Настройте управляемые узлы согласно инструкций:
Согласно инструкции настройте Private Automation Hub на синхронизацию с Automation Hub.
Синхронизируйте Private Automation Hub с Automation Hub. Убедитесь, что коллекция
astra.nginx
загружена в репозиторий, доступный пользователям.Изучите описание коллекции
astra.nginx
.Подготовьте каталог для хранения файлов проекта.
Если для управления задачами автоматизации используется Automation Controller, выполните следующие действия:
В одном из сервисов хранения репозиториев Git создайте пустой репозиторий для проекта.
Клонируйте этот репозиторий на локальный компьютер.
Если для управления задачами автоматизации используется Ansible Navigator, создайте в любом удобном месте пустой каталог, например:
mkdir ~/ansible-nginx/
Подготовка проекта Ansible#
Подготовьте ресурсы, необходимые для использования Ansible.
Создайте файл
ansible.cfg
со следующим содержимым:[defaults] ansible_python_interpreter = /usr/bin/python3 host_key_checking = false inventory = inventory.ini [galaxy] server_list = galaxy, private_automation_hub [galaxy_server.galaxy] url = https://galaxy.ansible.com/ [galaxy.private_automation_hub] url = <private_automation_hub_repository_url>
Согласно инструкции добавьте в
ansible.cfg
настройки, обеспечивающие доступ к репозиторию Private Automation Hub, содержащему коллекциюastra.nginx
.Создайте файл инвентаря
inventory.ini
, например:[all] node1.example.com ansible_host=192.168.56.11 ansible_user=vagrant
В этом примере показаны настройки подключения к одному управляемому узлу.
Создайте файл зависимостей Ansible
requirements.yml
:--- collections: - name: astra.nginx version: 1.8.3
В этом файле указаны параметры подключаемой коллекции:
name
– название;version
– версия.Важно
Для получения актуального номера версии коллекции обратитесь к ее описанию в Private Automation Hub.
Создайте подкаталог
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
.Выполните дополнительные настройки, соответствующие выбранному инструменту для управления задачами автоматизации.
Если для запуска заданий автоматизации используется Automation Controller, выполните следующие действия:
Зафиксируйте сделанные в проекте изменения и опубликуйте их в репозитории Git.
Согласно инструкции создайте в контроллере полномочие, обеспечивающее доступ к Private Automation Hub.
Если для управления задачами автоматизации используется Ansible Navigator, выполните команду установки зависимостей:
ansible-navigator exec -- ansible-galaxy collection install -r requirements.yml
Если настройки выполнены корректно, в терминал выводятся сообщения следующего вида:
Starting galaxy collection install process Process install dependency map Starting collection install process Downloading https://hub.astra-automation.ru/api/galaxy/v3/plugin/ansible/content/validated/collections/artifacts/astra-nginx-1.8.3.tar.gz to /root/.ansible/tmp/ansible-local-157z5isxaa/tmpdjhla2qi/astra-nginx-1.8.3-kzmwnb1x Installing 'astra.nginx:1.8.3' to '/home/vagrant/nginx/collections/ansible_collections/astra/nginx' astra.nginx:1.8.3 was installed successfully
Запуск playbook#
Способ запуска playbook зависит от инструмента, используемого для управления задачами автоматизации.
Для запуска задания автоматизации в Automation Controller выполните следующие действия:
Для доступа к управляемым узлам создайте необходимое количество полномочий типа Машина.
Если для доступа к репозиторию с кодом проекта требуется авторизация, создайте полномочие типа Система управления версиями.
Создайте проект со следующими свойствами:
Название: NGINX.
Тип системы управления исходными данными: Git.
URL системы управления исходными данными: укажите ссылку на репозиторий с кодом проекта.
Полномочия на систему управления исходными данными: если для доступа к репозиторию с кодом проекта требуется авторизация, выберите созданное ранее полномочие типа «Система управления версиями».
Создайте обычный инвентарь и добавьте в него сведения об управляемых узлах.
Совет
Вы можете использовать файл
inventory.ini
в качестве источника сведений об управляемых узлах.Создайте шаблон задания со следующими свойствами:
Тип задания: Выполнение.
Инвентарь: выберите инвентарь, созданный на предыдущем шаге.
Проект: выберите проект NGINX.
Playbook: выберите файл
playbooks/nginx.yml
.
Запустите задание на основе созданного шаблона.
При использовании Ansible Navigator для запуска playbook выполните команду:
ansible-navigator run playbooks/nginx.yml
При этом открывается псевдографический интерфейс, в котором показывается ход выполнения, например:
Для просмотра более подробной информации о ходе выполнения нажмите 0.
Статус задания выводится в правом нижнем углу.
Дождитесь перехода задания в статус Successful
.
Проверка работоспособности развернутой инфраструктуры#
Чтобы проверить корректность развертывания веб-сервера NGINX, выполните следующие действия:
Подключитесь к любому из управляемых узлов по SSH.
Для проверки статуса службы
nginx
выполните команду:systemctl status nginx
При успешном развертывании в терминал выводится сообщение вида:
Убедитесь, что в файле
/etc/nginx/nginx.conf
значения параметровworker_connections
иkeepalive_timeout
соответствуют заданным в playbook.
Особенности проекта#
Обратите внимание на следующие особенности проекта:
Порядок подключения коллекции.
Настройка проекта на использование Private Automation Hub для загрузки коллекций.
Настройка параметров роли.
Настройка параметров Ansible.
Заключение#
В этом сценарии вы познакомились с основными шагами по развертыванию веб-сервера NGINX с использованием коллекции astra.nginx
.
Из всей последовательности шагов важно выделить следующие действия:
Подготовка окружения.
Описание коллекции в файле зависимостей.
Описание параметров доступа к управляемым узлам в файле инвентаря.
Связывание управляемых узлов и ролей в playbook.
Запуск playbook с помощью Ansible Navigator и в Automation Controller.
Проверка корректности развертывания NGINX.