Веб-сервер NGINX#
Развертывание веб-сервера NGINX с использованием коллекции astra.nginx из реестра Automation Hub позволяет автоматизировать процесс установки и настройки на необходимом количестве узлов.
Описание сценария#
Роль astra.nginx.nginx
из реестра коллекций Automation Hub позволяет за несколько минут в автоматическом режиме развернуть веб-сервер NGINX.
Процесс установки и настройки веб-сервера NGINX состоит из следующих этапов:
Создание стенда.
В качестве стенда в этом руководстве используется ВМ VirtualBox, созданная с помощью Vagrant.
Она обладает следующими характеристиками:
количество ядер CPU – 2;
объем RAM, ГБ – 2;
объем хранилища, ГБ – 30;
операционная система – Astra Linux Special Edition 1.7.4 без графического интерфейса;
уровень защищенности ОС – максимальный («Смоленск»).
Подготовка файлов Ansible:
requirements.yml
– зависимости;ansible.cfg
– настройки Ansible;inventory
– инвентарь;playbook-nginx.yml
– playbook, содержащий сценарии настройки управляемых узлов.
Настройка стенда с помощью Ansible.
Для запуска Ansible используется образ, описанный в документе Среда исполнения.
Настройки разворачиваемого веб-сервера NGINX отличаются от значений по умолчанию:
worker_connections
– 2048;keepalive_timeout
– 30.
Для подключения к стенду используется протокол SSH.
Подготовка к работе#
Подготовьте рабочее окружение:
Изучите описание коллекции astra.nginx.
Подготовьте управляющий узел к работе с реестром Automation Hub и стендом согласно инструкции.
Установите VirtualBox, Vagrant и его расширение для работы с образами Astra Linux согласно инструкции.
Создайте каталог для хранения файлов проекта, например:
mkdir ~/nginx/
Примечание
Далее этот каталог будет называться каталогом проекта. Все упомянутые ниже файлы следует создавать в этом каталоге, если явно не указано иное.
Согласно инструкции создайте пару ключей SSH, которая будет использоваться для подключения к ВМ.
Развертывание ВМ#
Для подготовки ВМ выполните следующие действия:
Создайте файл
Vagrantfile
со следующим содержимым:# frozen_string_literal: true Vagrant.configure('2') do |config| # Настройки Vagrant Box config.vm.box = 'alse-vanilla-max/1.7.4' # Имя бокса config.vm.box_url = 'https://dl.astralinux.ru/vagrant/alse-vanilla-max%2F1.7.4' # Настройки SSH config.vm.provision 'file', source: '~/.ssh/deployment.pub', destination: '/home/vagrant/.ssh/deployment.pub' config.vm.provision 'shell', inline: 'cat /home/vagrant/.ssh/deployment.pub >> /home/vagrant/.ssh/authorized_keys' # Настройка параметров ВМ config.vm.define 'host01' do |node| node.vm.hostname = 'host01' # Короткое имя хоста # Настройки, специфичные для VirtualBox node.vm.provider 'virtualbox' do |vb| vb.cpus = 2 # Кол-во ядер CPU vb.memory = 2296 # Объем RAM, МБ end # Параметры сети node.vm.network 'private_network', ip: '192.168.56.11', # Статический IP-адрес virtualbox__host_ip: '192.168.56.1', # Шлюз virtualbox__netmask: '255.255.255.0', # Маска подсети virtualbox__dhcp_enabled: false # Запрет использования DHCP end end
Для создания и запуска ВМ с помощью Vagrant в каталоге проекта выполните команду:
vagrant up
Подготовка Ansible#
Подготовьте ресурсы, необходимые для использования Ansible.
Создайте файл
ansible.cfg
, содержащий настройки Ansible для проекта:[defaults] collections_path = ./collections ansible_python_interpreter = /usr/bin/python3 inventory = inventory host_key_checking = false
Здесь:
collections_path
– путь к каталогу, в который будут загружены файлы коллекцииastra.nginx
.host_key_checking
– проверка ключей SSH при подключении к управляемым узлам. В данном случае она отключена, так как playbook запускается внутри контейнера.ansible_python_interpreter
– версия Python, которую следует использовать на управляемых узлах.inventory
– путь к файлу инвентаря.
Создайте файл инвентаря
inventory
:[all] host01 ansible_host=192.168.56.11 ansible_user=vagrant ansible_ssh_private_key_file=/root/.ssh/deployment
В этом файле содержатся настройки подключения к управляемому узлу
host01
:Название учетной записи пользователя –
vagrant
.IP-адрес –
192.168.56.11
.Должен совпадать с IP-адресом, указанным в
Vagrantfile
.Путь к файлу приватного ключа SSH, используемого для подключения к ВМ.
Создайте файл зависимостей Ansible
requirements.yml
:--- collections: - name: astra.nginx type: git version: 1.6.0 source: ssh://git@hub.astra-automation.ru:2222/aa-gca/ARFA/nginx.git
В этом файле указаны параметры подключаемой коллекции:
name
– название коллекции из реестра Automation Hub, в данном случае –astra.nginx
.type
– способ установки. Для установки коллекций из реестра Automation Hub используется Git.version
– версия используемой коллекции,1.6.0
.source
– ссылка на репозиторий Git, в котором хранится коллекция.
Создайте файл playbook
playbook-nginx.yml
:--- - name: Install NGINX server hosts: host01 become: true gather_facts: true roles: - role: astra.nginx.nginx vars: nginx_worker_connections: 2048 nginx_keepalive_timeout: 30
В файле
playbook-nginx.yml
настройки NGINX заданы через значения переменных ролиastra.nginx.nginx
.
Запуск playbook#
Чтобы развернуть веб-сервер NGINX с параметрами, описанными в конфигурационном файле playbook-nginx.yml
, выполните в каталоге проекта следующие действия:
Запустите Docker-контейнер с EE:
docker run \ --rm \ --interactive \ --tty \ --volume ~/.ssh/deployment:/root/.ssh/deployment \ --volume ~/.ssh/hub.astra-automation.ru:/root/.ssh/id_rsa \ --volume "$(pwd):/app/" \ registry.astralinux.ru/aa/aa-base-ee:0.2.1 \ bash -c 'ansible-galaxy collection install -r requirements.yml && ` `ansible-playbook playbook-nginx.yml'
Подробное описание EE см. в документе Среда исполнения.
В терминал выводится сообщение о подключении к Automation Hub:
Введите значение
yes
и нажмите Enter.Если приватный ключ для доступа к реестру Automation Hub защищен паролем, будет выведен запрос на его ввод:
Введите пароль и нажмите Enter. Дождитесь выполнения playbook, это может занять некоторое время. По окончании выполнения в терминал выводится строка вида:
Проверка работоспособности развернутой инфраструктуры#
Чтобы проверить корректность развертывания веб-сервера NGINX, выполните следующие действия:
Подключитесь к ВМ по SSH:
vagrant ssh
Проверьте статус службы
nginx
:systemctl status nginx
При успешном развертывании в терминал выводится сообщение вида:
Убедитесь, что в файле
/etc/nginx/nginx.conf
значения параметровworker_connections
иkeepalive_timeout
соответствуют заданным в playbook.Для отключения от ВМ выполните команду:
exit
Освобождение ресурсов#
Если созданная ВМ больше не нужна, для ее остановки и удаления выполните в каталоге проекта команду:
vagrant destroy --force
Особенности проекта#
Обратите внимание на следующие особенности проекта:
Порядок подключения коллекции.
Настройка параметров роли.
Настройка параметров Ansible.
Параметры, передаваемые в EE при запуске Ansible.
Заключение#
В этом сценарии вы познакомились с основными шагами по развертыванию веб-сервера NGINX с использованием коллекции из реестра Automation Hub. Из всей последовательности шагов важно выделить следующие действия:
Подготовка окружения.
Описание коллекции в файле зависимостей.
Описание параметров доступа к управляемому узлу в файле инвентаря.
Связывание управляемого узла и роли в playbook.
Запуск playbook в среде исполнения.
Проверка корректности развертывания NGINX.