Введение
Для управления конфигурациями серверов, их обслуживания на всём жизненном цикле имеет актуальное значение связка работы трёх компонентов: foreman, puppet, ansible.
- Foreman - инструмент, предназначенный для помощи системным администраторам в управлении серверами, обеспечивающий простой способ взаимодействия с системами управления конфигурациями (Ansible, Puppet и др.) для автоматизации задач администрирования и развертывания приложений. Foreman поддерживает WEB-интерфейс, API и CLI, которые можно использовать для предоставления, настройки и мониторинга серверов. Подходит для инфраструктур любых размеров.
- Puppet - инструмент управления конфигурацией, который помогает системным администраторам автоматизировать предоставление, настройку и управление серверной инфраструктурой.
- Ansible - система управления конфигурациями, использующаяся для автоматизации настройки и развертывания программного обеспечения. Позволяет автоматизировать сложные задачи, например, непрерывное развертывание или непрерывное обновление без простоев.
Описание стенда
Сервер: 10.0.2.120 master.astra.lan
Клиент: 10.0.2.121 agent1.astra.lan
На стенде отсутствует настроенный DNS-сервер, поэтому для разрешения IP-адресов используются файлы /etc/hosts на сервере и на клиенте.
Установка
Puppet
Настройка сервера
Имя и адрес сервера
Коммуникация между Puppet Server и Puppet Agent осуществляется по имени хоста. Для правильной работы нужно либо настроить DNS-сервер, либо указать адреса хостов в файлах /etc/hosts на всех хостах.
Для сервера используем имя master.astra.lan, и команда назначения имени будет иметь следующий вид:
Осуществим настройку каждой машины через /etс/hosts, в файла указание IP-адреса Puppet Server (10.0.2.120) и его имени хоста (master.astra.lan и master и pupet).
В итоге файл /etc/hosts должен выглядеть примерно так:
127.0.0.1 localhost 10.0.2.120 master.astra.lan master puppet # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Подразумевается, что серверу назначен статический адрес 10.0.2.120
Настройка локалей на сервере.
Проверить наличие локали en_US.utf8 выполнив команду:
sudo locale-gen
sudo dpkg-reconfigure locales
Установка Puppet Server
Для установки выполнить на сервере следующие команды:
sudo apt install puppetserver
sudo systemctl start puppetserver
Установка Puppet Agent на клиентском компьютере
Настроить статический IP-адрес сервера (далее - 10.0.2.121)
Настроить разрешение имён сервера и клиента с помощью файла /etc/hosts. Файл /etc/hosts на клиентском компьютере должен иметь примерно такой вид:
127.0.0.1 localhost 10.0.2.121 agent1.astra.lan agent1 10.0.2.120 puppet # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Для установки агента выполнить на компьютере-агенте следующие команды:
sudo apt install puppet-agent
server = master.astra.lan show_diff = true
Добавить службу Puppet Agent в автозагрузку и запустить её:
sudo systemctl start puppet
Подписание сертификатов клиента
При первом запуске служба Puppet Agent отправит на Puppet Server запрос на подпись сертификата.
Для просмотра списка запросов на подпись сертификата выполнить на сервере следующую команду:
Requested Certificates: agent1.astra.lan (SHA256) F7:D5:E5:AB:AA:86:7F:EF:19:3D:D9:B9:E3:E9:63:DC:AE:31:17:57:67:3D:2B:D7:A5:1C:71:E3:46:E0:A7:1E
Подписать сертификат:
Successfully signed certificate request for agent1.astra.lan
Остановить службу
sudo systemctl stop puppet- Выполнить тестирование работы, в процессе котрого служба получит сертификат:sudo /opt/puppetlabs/bin/puppet agent --test
Info: csr_attributes file loading from /etc/puppetlabs/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for agent1.astra.lan
Info: Certificate Request fingerprint (SHA256): F7:D5:E5:AB:AA:86:7F:EF:19:3D:D9:B9:E3:E9:63:DC:AE:31:17:57:67:3D:2B:D7:A5:1C:71:E3:46:E0:A7:1E
Info: Downloaded certificate for agent1.astra.lan from puppet
Info: Using configured environment 'production'
Info: Retrieving pluginfacts Info: Retrieving plugin
Info: Retrieving locales
Info: Caching catalog for agent1.astra.lan
Info: Applying configuration version '1568370748'
Info: Creating state file /opt/puppetlabs/puppet/cache/state/state.yaml Notice: Applied catalog in 0.02 seconds Повторно запустить службу:
sudo systemctl start puppet
Ansible
Установить Ansible, выполнив на сервере следующие команды:
sudo apt install ansible
agent1.astra.lan | SUCCESS => {
"changed": false,
"ping": "pong"
}
Foreman
Для установки пакета Foreman выполнить следующие команды:
sudo apt install foreman-installer
Preparing installation Done *
Foreman is running at https://master.astra.lan
Initial credentials are admin / NRLJth9ufmAkTsF5 *
Foreman Proxy is running at https://master.astra.lan:8443 *
Puppetmaster is running at port 8140 The full log is at /var/log/foreman-installer/foreman.log
Проверить работоспособность foreman-proxy:
["httpboot","logs","puppet","puppetca","tftp"]
Настройка
Foreman + Puppet
Открыть в браузере ссылку https://master.astra.lan (подтвердить согласие на подключение)
В качестве логина и пароля использовать имя admin и автоматически созданный пароль, полученный после выполнения установщика.
Перейти в "Узлы" - "All hosts" ("Hosts" -> "All Hosts" в английском варианте), где должен появится список доступных узлов:
Если узлы отсутствуют, то подождать, пока информация обновится, или на нужных узлах (на клиенте) выполнить команду:
Убедиться, что в "Инфраструктура" - "Капсулы" ( в английском варианте "Infrastructure" -> "Smart Proxies") имеется отображение созданного по умолчанию proxy. Если proxy не создан, то:
- Перейти в "Администратор" - "Местоположения" ("Administer" - "Locations");
- Выбрать Default location;
- Нажать кнопку "Устранить несоответствия" ("Fix mismatches");
- Нажать кнопку "Применить" ("Submit");
- Аналогично "Администратор" - "Организации" ("Administer" - "Organizations");
- Выбрать Default organization;
- Нажать кнопку "Устранить несоответствия" ("Fix mismatches");
- Нажать кнопку "Применить" ("Submit");
После выполнения этих шагов в "Инфраструктура" - "Капсулы" ( в английском варианте "Infrastructure" -> "Smart Proxies") появится отображение созданного по умолчанию proxy.
Foreman + Ansible
Установить необходимые плагины:
для работы с Ansible: foreman-plugin-ansible, foreman-proxy-plugin-ansible;
для запуска Ansible playbooks как запланированные задачи: foreman-plugin-remote-execution, foreman-proxy-plugin-remote-execution-ssh
--enable-foreman-proxy-plugin-ansible \
--enable-foreman-plugin-remote-execution \
--enable-foreman-proxy-plugin-remote-execution-ssh
Проверить работу связки. Создать файл cat_hosts.yml со следующим содержимым:
- - hosts: all become: true tasks: - name: cat /etc/hosts command: cat /etc/hosts register: cat_all_hosts ...
Выполнить команду:
PLAY [all] *********************************************************************
TASK [setup] *******************************************************************
ok: [agent1.astra.lan]
TASK [cat /etc/hosts] **********************************************************
changed: [agent1.astra.lan]
PLAY RECAP *********************************************************************
agent1.astra.lan : ok=2 changed=1 unreachable=0 failed=0
Возможные проблемы
При запуске сервиса foreman появляется ошибка:
Для устранения ошибки отредактировать файл /etc/postgresql/9.6/main/postgresql.conf, изменив значение параметра listen_addresses на '*'.
После этого выполнить команду: