Как установить Puppet 4 в Ubuntu 16.04

Вступление

Puppet - это инструмент управления конфигурацией, который помогает системным администраторам автоматизировать предоставление, настройку и управление серверной инфраструктурой. Заблаговременное планирование и использование инструментов управления конфигурациями, таких как Puppet, могут сократить время, затрачиваемое на повторение основных задач, и помочь обеспечить согласованность и точность конфигураций в вашей инфраструктуре.

Puppet выпускается в двух вариантах: Puppet Enterprise и Puppet с открытым исходным кодом. Оба они работают в большинстве дистрибутивов Linux, на разных платформах UNIX и в Windows.

В этом руководстве мы покажем, как установить Puppet 4 с открытым исходным кодом в настройке master-agent в Ubuntu 16.04. В этой настройке главный сервер * Puppet *, на котором выполняется программное обеспечение сервера Puppet, может использоваться для управления всеми другими вашими серверами, называемыми узлами * агента Puppet *.

Предпосылки

Чтобы следовать этому руководству, вам понадобятся * три сервера Ubuntu 16.04 *, каждый с пользователем без полномочий root с привилегиями + sudo +. Вы можете узнать больше о том, как настроить пользователя с привилегиями sudo, в нашей Initial Server Setup с Ubuntu 16.04 руководство.

Один кукловод

Один сервер будет * Хозяином Марионеток *. Мастер Puppet будет запускать Puppet Server, который требует значительных ресурсов и требует:

  • не менее 4 ГБ памяти

  • как минимум 2 ядра процессора

Для управления более крупными инфраструктурами мастеру Puppet потребуется больше ресурсов.

Два кукольных агента

Два других сервера будут * узлами агента Puppet *, управляемыми мастером Puppet. Мы назовем их + db1 + и + web1 +.

Когда эти три сервера на месте, вы готовы начать.

Шаг 1 - Настройка / etc / hosts

Главные серверы Puppet и узлы, которыми они управляют, должны иметь возможность взаимодействовать друг с другом. В большинстве случаев это будет достигнуто с помощью DNS, настроенного на внешнем размещенном сервисе или на автономных DNS-серверах, обслуживаемых как часть инфраструктуры.

DNS является собственной областью компетенции, однако, даже для размещенных сервисов, поэтому, чтобы сосредоточиться на основах самой Puppet и устранить потенциальную сложность в устранении неполадок во время обучения, в этом руководстве мы будем использовать `+ / etc / hosts + `вместо файла.

На каждой машине

На каждом компьютере отредактируйте файл + / etc / hosts +. В конце файла укажите главный сервер Puppet следующим образом, заменив IP-адрес на your Мастер Puppet:

sudo nano /etc/hosts

/ и т.д. / хосты

. . .
   puppet
. . .

Когда вы закончите, сохраните и выйдите.

Шаг 2 - Установка Puppet Server

Puppet Server - это программное обеспечение, которое передает конфигурацию от мастера Puppet к другим серверам. Он работает только на Хозяина Марионеток; другие хосты будут запускать Puppet Agent.

Мы включим официальный репозиторий Puppet Labs с помощью следующих команд:

curl -O https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
sudo dpkg -i puppetlabs-release-pc1-xenial.deb
sudo apt-get update

Когда + apt-get update завершится, и мы будем извлекать данные из репозитория Puppet Labs, мы установим пакет` + puppet server`:

sudo apt-get install puppetserver

Нажмите + Y + для продолжения. После завершения установки и до того, как мы запустим сервер, мы потратим немного времени на настройку памяти.

Настроить распределение памяти

По умолчанию Puppet Server настроен на использование 2 ГБ оперативной памяти. Вы можете настроить этот параметр в зависимости от того, сколько свободной памяти имеет главный сервер и сколько узлов агента он будет управлять.

Чтобы настроить его, откройте + / etc / default / puppetserver +:

sudo nano /etc/default/puppetserver

Затем найдите строку + JAVA_ARGS + и используйте параметры + -Xms + и + -Xmx + для установки выделения памяти. Мы увеличим наш до 3 гигабайт:

/ И т.д. / по умолчанию / puppetserver

JAVA_ARGS="-Xmsg -Xmxg -XX:MaxPermSize=256m"

Сохраните и выйдите, когда закончите.

Откройте брандмауэр

Когда мы запускаем Puppet Server, он будет использовать порт 8140 для связи, поэтому мы убедимся, что он открыт:

sudo ufw allow 8140

Далее мы запустим Puppet-сервер.

Запустите Puppet сервер

Мы будем использовать + systemctl + для запуска сервера Puppet:

sudo systemctl start puppetserver

Это займет некоторое время, чтобы завершить.

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

sudo systemctl status puppetserver

Мы должны увидеть строку с надписью «active (running)», а последняя строка должна выглядеть примерно так:

OutputDec 07 16:27:33 puppet systemd[1]: Started puppetserver Service.

Теперь, когда мы убедились, что сервер работает, мы настроим его для запуска при загрузке:

sudo systemctl enable puppetserver

Теперь, когда сервер работает, мы готовы настроить Puppet Agent на двух наших агентских компьютерах: + db1 + и + web1 +.

Шаг 3 - Установка агента Puppet

Программное обеспечение агента Puppet должно быть установлено на любом сервере, которым будет управлять мастер Puppet. В большинстве случаев это будет включать каждый сервер в вашей инфраструктуре.

Включить официальный репозиторий Puppet Labs

Сначала мы включим официальный репозиторий Puppet Labs с помощью следующих команд:

wget https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
sudo dpkg -i puppetlabs-release-pc1-xenial.deb
sudo apt-get update

Установите пакет агента Puppet

Затем мы установим пакет + puppet-agent:

sudo apt-get install puppet-agent

Мы запустим агент и включим его при загрузке:

sudo systemctl start puppet
sudo systemctl enable puppet

Наконец, мы повторим эти шаги для + web1 +:

wget https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
sudo dpkg -i puppetlabs-release-pc1-xenial.deb
sudo apt-get update
sudo apt-get install puppet-agent
sudo systemctl enable puppet
sudo systemctl start puppet

Теперь, когда на обоих узлах агента запущено программное обеспечение агента Puppet, мы подпишем сертификаты на мастере Puppet.

Шаг 4 - Подписание сертификатов на Puppet Master

При первом запуске Puppet на узле агента он отправляет запрос на подпись сертификата мастеру Puppet. Прежде чем Puppet Server сможет взаимодействовать с узлом агента и контролировать его, он должен подписать сертификат этого конкретного узла агента.

Список текущих запросов сертификатов

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

sudo /opt/puppetlabs/bin/puppet cert list

Для каждого настроенного хоста должен быть один запрос, который выглядит примерно так:

Output:  "db1.localdomain"  (SHA256) 46:19:79:3F:70:19:0A:FB:DA:3D:C8:74:47:EF:C8:B0:05:8A:06:50:2B:40:B3:B9:26:35:F6:96:17:85:5E:7C
 "web1.localdomain" (SHA256) 9D:49:DE:46:1C:0F:40:19:9B:55:FC:97:69:E9:2B:C4:93:D8:A6:3C:B8:AB:CB:DD:E6:F5:A0:9C:37:C8:66:A0

+ перед сертификатом указывает, что он был подписан. Отсутствие знака плюс означает, что наш новый сертификат еще не подписан.

Подписывать запросы

Чтобы подписать один запрос сертификата, используйте команду + puppet cert sign + с именем хоста сертификата, которое отображается в запросе сертификата.

Например, чтобы подписать сертификат db1, вы должны использовать следующую команду:

sudo /opt/puppetlabs/bin/puppet cert sign

Вывод, аналогичный приведенному ниже, показывает, что запрос сертификата был подписан:

Output:Notice: Signed certificate request for
Notice: Removing file Puppet::SSL::CertificateRequest  at '/etc/puppetlabs/puppet/ssl/ca/requests/.pem'

Хозяин Puppet теперь может связываться и контролировать узел, которому принадлежит подписанный сертификат. Вы также можете подписать все текущие запросы сразу.

Мы будем использовать опцию + - all +, чтобы подписать оставшийся сертификат:

sudo /opt/puppetlabs/bin/puppet cert sign --all

Теперь, когда все сертификаты подписаны, Puppet может управлять инфраструктурой. Вы можете узнать больше об управлении сертификатами в How to Manage Puppet 4 Certificates шпаргалке.

Шаг 5 - Проверка установки

Puppet использует специфичный для домена язык для описания конфигураций системы, и эти описания сохраняются в файлах, называемых «манифестами», которые имеют расширение «+ .pp +». Вы можете узнать больше об этом в руководстве Getting Started with Puppet: Manifests and Modules, но сейчас мы создадим краткую директиву, чтобы убедиться, что Puppet Server может управлять агентами, как и ожидалось.

Начнем с создания манифеста по умолчанию + site.pp + в расположении по умолчанию:

sudo nano /etc/puppetlabs/code/environments/production/manifests/site.pp

Мы будем использовать специфичный для домена язык Puppet для создания файла с именем + it_works.txt + на узлах агента, расположенного в каталоге + tmp +, который содержит публичный IP-адрес сервера агента и устанавливает разрешения для `+ -rw -r - т - + `:

пример site.pp

file {'/tmp/it_works.txt':                        # resource type file and filename
 ensure  => present,                             # make sure it exists
 mode    => '0644',                              # file permissions
 content => "It works on ${ipaddress_eth0}!\n",  # Print the eth0 IP fact
}

По умолчанию Puppet Server запускает команды в своих манифестах по умолчанию каждые 30 минут. Если файл будет удален, директива + sure + приведет к его воссозданию. Директива + mode + устанавливает права доступа к файлу, а директива + content + добавляет контент в директиву.

Мы также можем протестировать манифест на одном узле, используя + puppet agent --test. Обратите внимание, что + - test + не является флагом для пробного запуска; в случае успеха он изменит конфигурацию агента.

Вместо того, чтобы ждать, пока мастер Puppet применит изменения, мы теперь применим манифест к + db1 +:

sudo /opt/puppetlabs/bin/puppet agent --test

Вывод должен выглядеть примерно так:

OutputInfo: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Caching catalog for db1.localdomain
Info: Applying configuration version '1481131595'
Notice: /Stage[main]/Main/File[/tmp/it_works.txt]/ensure: defined content as '{md5}acfb1c7d032ed53c7638e9ed5e8173b0'
Notice: Applied catalog in 0.03 seconds

Когда это будет сделано, мы проверим содержимое файла:

cat /tmp/it_works.txt
Output It works on !

Повторите это для + web1 + или, если хотите, вернитесь через полчаса или около того, чтобы убедиться, что мастер Puppet работает автоматически.

Поздравляем! Вы успешно установили Puppet в режиме Master / Agent.

Заключение

Теперь, когда у вас есть базовая установка агента / мастера Puppet, вы готовы узнать больше о том, как использовать Puppet для управления вашей серверной инфраструктурой. Ознакомьтесь со следующим учебником: Getting Started with Puppet Code: Manifests and Modules.

Related