Puppet
Reduce the cost of maintaining your servers. Automate the configuration and management of your infrastructure with the next-generation open source server automation tool.
- Discover resources within minutes.
- Provision new nodes easily in cloud, hybrid or physical environments.
- Configure a range of setups.
- Orchestrate changes and events across clusters of nodes.
Complete the form to get access.
Also, regardless of whether you're just getting started with Puppet or an expert looking to advance your skills, we've got a variety of training options to help.
Установка
Требования для нормальной работы: открытый порт 8140 в обе стороны, нормально работающий DNS (прямая и обратная зона), точное время. http://apt.puppet.com/ - репозитории.
# Добавить репозиторий. Ссылка на пакет выглядит так: # https://apt.puppet.com/<PLATFORM_VERSION>-release-<VERSION CODE NAME>.deb, т. е., wget https://apt.puppet.com/puppet6-release-stretch.deb # для Debian wget https://apt.puppet.com/puppet6-release-bionic.deb # для Ubuntu dpkg -i puppet6-*.deb && rm *.deb apt-get update apt-get install puppetserver # Изначально сервер настроен на использование 2 ГБ памяти, можно настроить на меньшее потребление nano /etc/default/puppetserver # Modify this if you'd like to change the memory allocation, enable JMX, etc JAVA_ARGS="-Xms2g -Xmx2g" # JAVA_ARGS="-Xms1g -Xmx1g" # JAVA_ARGS="-Xms512m -Xmx512m" # Запуск сервера # puppet resource service puppetserver ensure=running enable=true nano /etc/puppetlabs/puppet/puppet.conf # Настройки агента НА СЕРВЕРЕ (агент ставится вместе с сервером автоматически). # Над секцией [master] вставить [main] # имя сертификата агента certname = puppetserver # имя сервера, куда обращаться server = puppetserver # выйти с сохранением # Добавить путь к паппету в PATH, чтобы каждый раз не набирать путь к команде export PATH=/opt/puppetlabs/bin:$PATH # Запустить агента, добавить в автозагрузку puppet resource service puppet ensure=running enable=true # Проверка: вывести все сертификаты puppetserver ca list --all # тест агента puppet agent --test # показать версию puppet --version puppetserver --version
Можно дополнительно поставить PuppetDB для доп. функций типа улучшенных запросов и отчётов об инфраструктуре.
Установка агентов на другие машины
Выбрать нужный репозиторий с http://apt.puppet.com/, затем
wget https://apt.puppet.com/puppet6-release-stretch.deb dpkg -i puppet6-*.deb && rm *.deb apt-get update apt-get install puppet-agent nano /etc/puppetlabs/puppet/puppet.conf [agent] server = puppetserver # certname можно не указывать - будет совпадать с именем машины. # Запустить sudo /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true
Настройка
Подпись агентских сертификатов на сервере
# Список puppetserver ca list # Подписать сертификаты для web2 и web3 puppetserver ca sign --certname web2,web3 # Подписать все сертификаты puppetserver ca sign --all
Проверить агента
puppet agent --test
Манифесты
Путь указан в /etc/puppetlabs/puppet/puppet.conf параметром codedir = /etc/puppetlabs/code. По этому пути лежат среды (environments) - изначально там только одна: production, её название можно видеть во время теста агента. Для удобства можно скопировать production и сделать на её основе новую среду, например, test:
cd /etc/puppetlabs/code/environments cp -R production/ test
Внутри среды есть папка manifests, там можно создать файл с расширением .pp
package { 'mc': ensure => installed, } user { 'engineers': name => 'ivp', ensure => present, comment => 'Ivanov Vasily Petrovich', home => '/home/ivp', managehome => true, password => '$1$F38j8Kz6$o2oRcO2MB6OkrQy5uIJcf/', groups = sudo, shell => '/bin/bash', }
Пароль в открытом виде в манифесте вписать нельзя, необходимо создать его хэш c помощью openssl, который и вставляется в манифест:
openssl passwd -1 Password: Verifying - Password: $1$F38j8Kz6$o2oRcO2MB6OkrQy5uIJcf/
https://puppet.com/docs/puppet/latest/types/package.html
https://puppet.com/docs/puppet/latest/types/user.html
Чтобы переключить среду на клиентах:
nano /etc/puppetlabs/puppet/puppet.conf environment = test
Конфиг агента - https://puppet.com/docs/puppet/latest/configuration.html
Среды - https://puppet.com/docs/puppet/latest/environments_creating.html