Puppet: различия между версиями

Материал из ALT Linux Wiki
мНет описания правки
Нет описания правки
(не показаны 2 промежуточные версии этого же участника)
Строка 44: Строка 44:
<pre># puppet agent -t</pre>
<pre># puppet agent -t</pre>
==== Создание манифестов и модулей puppet ====
==== Создание манифестов и модулей puppet ====
Для создания манифестов и модулей для puppet необходимо наличие следующий директорий в {{path|/etc/puppet}}:
Для создания манифестов и модулей для puppet необходимо наличие следующих каталогов в {{path|/etc/puppet}}:
<pre>code
<pre>code
modules
modules
Строка 51: Строка 51:


Внесем корректировки в файл puppet.conf:
Внесем корректировки в файл puppet.conf:
<pre>
<pre>[master]
environment=production</pre>
environment=production</pre>
Это добавляет окружение '''production''' в сервер. <br>
Это добавляет окружение '''production''' в сервер.
В папке manifests,необходимо создать файл site.pp<br>
 
В папке {{path|/etc/puppet/manifests}},необходимо создать файл {{path|site.pp}}<br>
Содержание файла:
Содержание файла:
<pre>file { "/etc/passwd":
<source lang="ruby">file { "/etc/passwd":
owner => "root",
owner => "root",
group => "bin",
group => "bin",
mode => 644,
mode => "644",
}</pre>
}</source>
Все обновление манифестов происходят автоматически. На агентах опрос сервера на предмет новых манифестов составляет 30 минут. <br>
Все обновление манифестов происходят автоматически. На агентах опрос сервера на предмет новых манифестов составляет 30 минут. <br>
Для ускорения обновления конфигурации на агенте используется команда:<br>
Для ускорения обновления конфигурации на агенте используется команда:<br>
<pre># puppet agent -t --debug</pre>
 
Ключ --debug используется для наглядной демонстрации применения манифеста на агенте.  
# puppet agent -t --debug
 
Ключ --debug используется для наглядной демонстрации применения манифеста на агенте.
 
Проверка выполнения конкретного манифеста:
<source lang="text" highlight="1"># puppet apply /etc/puppet/manifests/site.pp
Notice: Compiled catalog for puppet in environment production in 0.02 seconds
Notice: /Stage[main]/Main/File[/etc/passwd]/group: group changed 'root' to 'bin'
Notice: Applied catalog in 0.03 seconds</source>
 
===== puppetd =====
===== puppetd =====


'''TODO'''
{{todo|* В соответствии с http://reductivelabs.com/trac/puppet/wiki/CertificatesAndSecurity при первом запуске puppetd клиента, необходимо обратиться к серверу с запросом подписания сертификата. Для этого puppetd должен быть запущен с ключом <tt>--waitforcert</tt>. Предлагаю исправить /etc/init.d/puppetd -- добавить режим sign, при котором puppetd стартует с  этой опцией.  
* В соответсвии с http://reductivelabs.com/trac/puppet/wiki/CertificatesAndSecurity при первом запуске puppetd клиента, необходимо обратиться к серверу с запросом подписания сертификата. Для этого puppetd должен быть запущен с ключом <tt>--waitforcert</tt>. Предлагаю исправить /etc/init.d/puppetd -- добавить режим sign, при котором puppetd стартует с  этой опцией.  
* Необходимо добавить в /etc/init.d/puppetd проверку на задание переменной PUPPET_SERVER, чтобы при старте происходило подключение к последнему. А то висит процесс, вроде всё работает, но на самом деле клиент ничего не делает -- не знает ip-сервера.}}
* Необходимо добавить в /etc/init.d/puppetd проверку на задание переменной PUPPET_SERVER, чтобы при старте происходило подключение к последнему. А то висит процесс, вроде всё работает, но на самом деле клиент ничего не делает -- не знает ip-сервера.
 
[[Category: puppet]]
= Готовые манифесты =
==== Обновление системы ====
 
== Обновление системы ==
Для обновления системы каждый день в промежутке между 5-8 утра можно использовать следующий манифест:
Для обновления системы каждый день в промежутке между 5-8 утра можно использовать следующий манифест:


<pre>schedule { 'update':
<source lang="ruby">schedule { 'update':
     range  => '5 - 8',
     range  => '5 - 8',
     period => daily,
     period => daily,
Строка 86: Строка 97:
     command => '/usr/bin/apt-get dist-upgrade -y',
     command => '/usr/bin/apt-get dist-upgrade -y',
     schedule => 'update',
     schedule => 'update',
}</pre>
}</source>
 
[[Category: puppet]]
[[Категория:Управление конфигурациями]]
{{Category navigation|title=Управление конфигурациями|category=Управление конфигурациями|sortkey={{SUBPAGENAME}}}}

Версия от 13:32, 19 апреля 2018

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


Черновик

Установка puppet agent и puppet server

Необходимо установить следующие пакеты:

# apt-get install puppet puppet-server

Настройка puppet master

Прежде всего нужно настроить ваш dns сервер на резолва адресов. Для примера можно внести настройки в файл hosts (/etc/hosts):

127.0.0.1       localhost.localdomain localhost
10.10.3.107     puppetserver
10.10.3.5       puppetclient

После установки всех пакетов настройки dns, конфигурационные файлы puppet находятся в директории /etc/puppet/ Файл настройки - puppet.conf:

[main]
certname=puppetserver
server=puppetserver

[master]
certname=puppetserver
environment=production

В секции main находятся глобальные настройки сервиса, а в секции master, находятся настройки сервера puppet.
Параметр server говорит клиенту, с каким сервером работать. Параметр certname задает имя с которым клиент будет ображаться к серверу. Запуск сервисов:

# systemctl start puppet
# systemctl start puppetmaster

Для подписи всех сертификатов необходимо выполнить команду:

# puppet cert sign –all

Настройка агента puppet

Для того, чтобы натсроить агент puppet, нужно установить пакет puppet:

# apt-get install puppet 

Для примера так же на клиенте был настроен файл hosts, как показано выше.
Файл настроек агента puppet.conf выглядит следующим образом:

[agent]
server=puppetserver

Для проверки работы агента необходимо выполнить команду:

# puppet agent -t

Создание манифестов и модулей puppet

Для создания манифестов и модулей для puppet необходимо наличие следующих каталогов в /etc/puppet:

code
modules
environments
manifests

Внесем корректировки в файл puppet.conf:

[master]
environment=production

Это добавляет окружение production в сервер.

В папке /etc/puppet/manifests,необходимо создать файл site.pp
Содержание файла:

file { "/etc/passwd":
owner => "root",
group => "bin",
mode => "644",
}

Все обновление манифестов происходят автоматически. На агентах опрос сервера на предмет новых манифестов составляет 30 минут.
Для ускорения обновления конфигурации на агенте используется команда:

# puppet agent -t --debug

Ключ --debug используется для наглядной демонстрации применения манифеста на агенте.

Проверка выполнения конкретного манифеста:

# puppet apply /etc/puppet/manifests/site.pp
Notice: Compiled catalog for puppet in environment production in 0.02 seconds
Notice: /Stage[main]/Main/File[/etc/passwd]/group: group changed 'root' to 'bin'
Notice: Applied catalog in 0.03 seconds
puppetd
TODO:
  • В соответствии с http://reductivelabs.com/trac/puppet/wiki/CertificatesAndSecurity при первом запуске puppetd клиента, необходимо обратиться к серверу с запросом подписания сертификата. Для этого puppetd должен быть запущен с ключом --waitforcert. Предлагаю исправить /etc/init.d/puppetd -- добавить режим sign, при котором puppetd стартует с этой опцией.
  • Необходимо добавить в /etc/init.d/puppetd проверку на задание переменной PUPPET_SERVER, чтобы при старте происходило подключение к последнему. А то висит процесс, вроде всё работает, но на самом деле клиент ничего не делает -- не знает ip-сервера.


Готовые манифесты

Обновление системы

Для обновления системы каждый день в промежутке между 5-8 утра можно использовать следующий манифест:

schedule { 'update':
    range  => '5 - 8',
    period => daily,
    repeat => 1,
}
exec { 'apt-update':
    command => '/usr/bin/apt-get update',
}
exec { 'apt-distupgrade':
    require => Exec['apt-update'],
    command => '/usr/bin/apt-get dist-upgrade -y',
    schedule => 'update',
}