Установка Puppet на виртуальный выделенный сервер

Published by Leave your thoughts

Puppet – это кроссплатформенная система управления конфигурациями, которая позволяет автоматизировать оркестровку инфраструктуры и другие рутинные задачи с помощью специальных сценариев – манифестов.

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

Примечание: Терминология Puppet подробнее изложена в статье Создание манифестов Puppet.

Данное руководство поможет установить и настроить Puppet.

Puppet реализует централизованное управление с помощью модели клиент-сервер, или агент-мастер. Мастер – это ведущий сервер, который управляет нодами инфраструктуры (или агентами). Больше о компонентах и инфраструктуре Puppet можно узнать в статьях:

Требования

По умолчанию Puppet обнаруживает мастер-сервер по имени хоста puppet через DNS.

Для работы вам понадобится:

  • Мастер-сервер Puppet и его IP-адрес.
  • Агенты Puppet.
  • Установленные имена хостов и FQDN на каждом сервере инфраструктуры.
  • NTP-демон на каждом сервере (инструкции по настройке – в этой статье).
  • Записи А и CNAME для мастер-сервера (имя хоста – puppet).

Настройка брандмауэра

CentOS использует очень строгую политику iptables. Если вы используете брандмауэр iptables, убедитесь, что мастер поддерживает подключения на порт 3000, 8139 и 8140.

Обновление пакетов

Чтобы обновить пакеты, используйте:

sudo apt-get update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade && sudo apt-get -y autoremove && sudo reboot

1: Установка мастера Puppet

Установить мастер-сервер Puppet можно несколькими способами:

  • Использовать пакет из официального репозитория системы.
  • Добавить репозиторий Puppet Labs. Такой вариант лучше, поскольку даёт доступ к более современной версии пакета.

Чтобы добавить репозиторий Puppet Labs, загрузите и установите пакет puppetlabs-release (с этого сайта).

Например, чтобы установить мастер Puppet на сервер Ubuntu 12.04 LTS из репозитория Puppet Labs, нужно запустить:

sudo wget http://apt.puppetlabs.com/puppetlabs-release-precise.deb
sudo dpkg -i puppetlabs-release-precise.deb
sudo apt-get update && sudo apt-get -y install puppetmaster

Примечание: Инструкции по установке Puppet в другие дистрибутивы Linux, OS X, Windows и другие системы можно найти здесь.

2: Настройка мастера Puppet

Выполните команду:

sudo touch /etc/puppet/manifests/site.pp

Puppet предлагает много параметров для настройки поведения системы.

Главный конфигурационный файл Puppet находится в /etc/puppet/puppet.conf. Он содержит разделы [main], [agent] и [master]. Настройки агентов находятся в разделах [agent] и [main], настройки мастера – в [master] и [main].

Примечание: Обычно мастер-сервер работает также и как агент.

3: Настройка DNS

Теперь нужно настроить доменное имя (FQDN) мастера, чтобы он мог подписывать сертификаты агентов.

Если у мастера Puppet не будет псевдонимов (т.е., будет только одно имя хоста) и ранее вы создали А-запись для мастера, введите следующие команды:

sudo service puppetmaster stop
sudo rm -rf /var/lib/puppet/ssl
sudo vim /etc/puppet/puppet.conf

Добавьте следующую строку в раздел [main].

server = puppet.yourdomain.tld

Если вы создали запись CNAME для мастера, тогда нужно выполнить команды:

sudo service puppetmaster stop
sudo rm -rf /var/lib/puppet/ssl
sudo vim /etc/puppet/puppet.conf

И добавить в блок [master] все псевдонимы:

dns_alt_names = puppet, [alias1], [alias2], puppet.yourdomain.tld

Затем запустите мастер:

sudo service puppetmaster start

4: Зависимости мастера Puppet

Теперь нужно установить зависимости на мастер-сервер Puppet:

sudo apt-get update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade &&  sudo apt-get -y autoremove && sudo reboot

5: Установка агентов Puppet

Добавьте репозиторий Puppet Labs и установите программу:

sudo wget http://apt.puppetlabs.com/puppetlabs-release-precise.deb
sudo dpkg -i puppetlabs-release-precise.deb
sudo apt-get update && sudo apt-get -y install puppet

Примечание: Инструкции по установке Puppet в другие дистрибутивы Linux можно найти здесь.

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

6: Настройка агента Puppet

Примечание: Эти инструкции нужно выполнить на всех нодах Puppet.

Теперь нужно подключить клиент Puppet к мастеру.

sudo vim /etc/puppet/puppet.conf

Добавьте в этот файл следующее:

[agent]
server = puppet.yourdomain.tld
report = true
pluginsync = true
certname = [hostname of Puppet client].yourdomain.tld

Теперь нужно настроить автозапуск Puppet. Откройте файл:

sudo vim /etc/default/puppet

Найдите строку, которая начинается со слова START. Она должна выглядеть так:

START=yes

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

sudo service puppet start

7: Настройка взаимодействия мастера и агентов Puppet

Чтобы настроить взаимодействие клиентов и сервера Puppet, нужно подписать SSL-сертификаты клиентов. Перейдите на мастер-сервер и просмотрите список запросов на подпись:

sudo puppet cert --list

Чтобы подписать сертификат, используйте команду:

sudo puppet cert --sign [hostname of Puppet client]

8: Модули и манифесты

Теперь мастер может управлять настройками агентов. Попробуйте использовать модуль для установки MySQL на агенты Puppet. Для этого запустите на мастере следующие команды:

sudo apt-get -y install git
sudo git clone https://github.com/puppetlabs/puppetlabs-mysql mysql
sudo vim /etc/puppet/manifests/site.pp

Скопируйте и вставьте следующий код в site.pp.

node [hostname of Puppet client] {
class { 'mysql': }
class { 'mysql::server':
config_hash => { 'root_password' => '[desired password]' }
}
}

На клиенте нужно запустить команду:

sudo puppet agent --test

После этого клиент перечитает директивы в настройках мастера и установит MySQL.

Tags: ,

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>