Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 8686|Ответ: 0

Управление конфигурацией: установка и использование марионеток (1)

[Скопировать ссылку]
Опубликовано 20.10.2014 9:47:45 | | |
1. Введение в Puppet

Системные администраторы часто застревают в ряде повторяющихся задач: обновление пакетов, управление конфигурационными файлами, системными сервисами, задачи cron, добавление новых конфигураций, исправление ошибок и т.д. Эти задачи часто повторяются и неэффективны, и первая реакция на их решение — автоматизировать их, чтобы появлялись пользовательские скрипты. Из-за сложности среды кастомные скрипты и приложения разрабатываются снова и сложно подстраиваются на несколько платформ, а гибкость и функциональность сложно гарантировать, поэтому появились автоматизированные инструменты управления конфигурацией, такие как Puppet.

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

    Puppet (http://puppet.reductivelabs.com/): инструмент управления конфигурацией, написанный на Ruby, который использует архитектуру C/S для настройки клиента на декларативном языке.
    Cfengine (http://www.cfengine.org): Один из первых инструментов конфигурации с открытым исходным кодом, выпущенный в 1993 году, также является C/S архитектурой, обычно используемой в образовательных учреждениях.
    LCFG(http://www.lcfg.org/): инструмент управления конфигурацией для C/S архитектур, использующий XML для определения конфигураций.
    Bcfg2: инструмент управления конфигурацией для архитектуры C/S, написанный на Python, который использует спецификации и ответы клиентов для настройки целевого хоста.

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

О Puppet:

1. Для чего используется Puppet?

Puppet — это открытый инструмент управления конфигурацией системы на базе Ruby, который использует архитектуру развертывания C/S. Основным разработчиком является Люк Канис, который следует лицензии GPLv2 по авторским правам. С 1997 года Канис занимается администрированием систем UNIX, и разработка Puppet возникла благодаря этому опыту. Не удовлетворившись доступными инструментами конфигурации, Канис начал разрабатывать их в редуктивной лаборатории с 2001 по 2005 год. Вскоре Reductive Labs выпустила свой флагманский продукт — Puppet.

2. Особенности Pupput

Многие инструменты управления конфигурацией системы работают очень похоже, например, cfengine. Что делает Puppet уникальной?

Синтаксис Puppet позволяет создать отдельный скрипт для создания пользователя на всех целевых хостах. Все целевые узлы по очереди интерпретируют и выполняют модуль, используя синтаксис, применимый к локальной системе. Например, если эта конфигурация выполняется на сервере Red Hat, создайте пользователя с помощью команды useradd; Если эта конфигурация выполняется на хосте FreeBSD, используется команда adduser.

Ещё одна замечательная особенность Puppet — её гибкость. Из-за специфики открытого программного обеспечения вы можете свободно получать исходный код Puppet, а если столкнётесь с проблемами и есть такая возможность, вы можете модифицировать или улучшать код Puppet под свою среду. Кроме того, разработчики сообщества и доноры продолжают расширять возможности Puppet. Большое сообщество разработчиков и пользователей также стремится предоставлять документацию и техническую поддержку для Puppet.

Puppet также легко масштабироваться. Поддержка пользовательских пакетов и специальные конфигурации системной среды можно быстро и легко добавить в установщик Puppet.

3. Рабочий режим куклы

Puppet — это инструмент управления конфигурацией архитектуры C/S, который устанавливает пакет puppet-server (известный как Puppet master) на центральный сервер. Установите клиентское программное обеспечение Puppet (называемое Puppet Client) на целевом хосте, которым нужно управлять. Когда клиент подключается к Puppet Master, конфигурационный файл, определённый на Puppet Master, компилируется и запускается на клиенте. По умолчанию каждый клиент общается с сервером каждые полчаса для подтверждения обновления конфигурационной информации. Если появляется новая конфигурационная информация или изменена, конфигурация будет перекомпилирована и опубликована каждому клиенту для выполнения. Вы также можете активно запускать обновление конфигурационной информации на сервере, чтобы заставить каждого клиента настраивать её. Если информация о конфигурации клиента изменяется, он может получить исходную конфигурацию с сервера для исправления.

Управление конфигурацией: установка и использование марионеток (1)


4. Будущее Puppet

Наконец, Puppet — это молодой инструмент, который всё ещё находится в стадии разработки и развития. Сообщество Puppet быстро растёт, и постоянно внедряются новые идеи, что стимулирует ежедневное представление разработки, обновлений и новых модулей.

2. Конфигурация и установка (установка Puppet 2.6.4 CentOS 5.4):

Настройте репозиторий на сервере марионеток и клиенте:
обороты в минуту — UVH http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
[root@puppetmaster ~]# vi /etc/yum.repos.d/epel.repo
Добавить к:
[эпель-марионетка]
имя=Кукла Эпел
baseurl=http://tmz.fedorapeople.org/repo/puppet/epel/5/$basearch/
включено=0
gpgcheck=0

Добавьте репозиторий puppet.repo:
[root@puppetmaster ~]# vi /etc/yum.repos.d/puppet.repo
[кукольные лаборатории]
name=Пакеты Puppet Labs
baseurl=http://yum.puppetlabs.com/base/
включено=0
gpgcheck=0

Установка кукольника:
[root@puppetmaster ~]# yum --enablerepo=epel,epel-puppet install puppet-server

Измените хосты и добавьте следующие две записи:
[root@puppetmaster ~]# vi /etc/hosts
192.168.0.10 puppetmaster.leju.com кукла
192.168.0.100 puppetclient.leju.com

Настройка марионетки:
[root@puppetmaster ~]# cd /etc/puppet/
[root@puppetmaster марионетка]# vi puppet.conf

[главная]
    # Каталог журнала кукол.
    # Значение по умолчанию — '$vardir/log'.
    logdir = /var/log/puppet

    # Где хранятся файлы Puppet PID.
    # По умолчанию значение — '$vardir/run'.
    Rundir = /var/run/puppet

    # Где хранятся сертификаты SSL.
    # Значение по умолчанию — '$confdir/ssl'.
    SSLDIR = $vardir/SSL

[агент]
    # Файл, в котором марионетка хранит список классов
    # связанное с полученной конфигурацией.  Можно загрузить
    # отдельный исполняемый файл '''puppet'' с использованием ''--loadclasses''
    # вариант.
    # По умолчанию значение — '$confdir/classes.txt'.
    classfile = $vardir/classes.txt

    # Где puppetd кэширует локальную конфигурацию.  An
    # расширение, указывающее формат кэша, добавляется автоматически.
    # Значение по умолчанию — '$confdir/localconfig'.
    localconfig = $vardir/localconfig
    Server = puppetmaster.leju.com
    доклад = правда
    слушать = правда

[мастер]
    ssl_client_header = SSL_CLIENT_S_DN
    ssl_client_verify_header = SSL_CLIENT_VERIFY
    autosign = true
    Reports = Store
   
[root@puppetmaster puppet]# vi fileserver.conf
     [файлы]
    path /etc/puppet/files
    разрешить *

[модули]
    разрешить *

[плагины]
    разрешить *

[root@puppetmaster марионетка]# mkdir /etc/puppet/files
   
[root@puppetmaster Puppet]# CD Manifest/
Создайте site.pp, который является конфигурационным файлом записи марионеток:
[root@puppetmaster manifests]# vi site.pp
Импортировать "modules.pp"
импортировать "roles.pp"
Импортировать "nodes.pp"

# Общие настройки для стандартных типов
Exec { path => "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" }

filebucket { main: server => "puppetmaster.leju.com" }
File { backup => main }

Создайте modules.pp для импорта модулей:
[root@puppetmaster manifests]# vi modules.pp
Импортный «тест»

Создайте roles.pp для определения ролей сервера:
[root@puppetmaster проявляется]# vi roles.pp
класс baseclass {
        Включить тест
}

Создайте nodes.pp для настройки серверных узлов:
[root@puppetmaster manifests]# vi nodes.pp
узел 'basenode' {
        включать базовый класс
}

узел 'puppetclient.leju.com' наследует basenode {
        tag("тест")
}

узел 'puppetmaster.leju.com' наследует базовый узел {
        tag("тест")
}

[root@puppetmaster манифеста]# CD ..
[root@puppetmaster puppet]# mkdir modules
Создайте тестовый модуль:
[root@puppetmaster модули]# mkdir -p test/manifests/
[root@puppetmaster модули]# mkdir test/files/
[root@puppetmaster модули]# CD-тест/файлы/
[root@puppetmaster файлы]# vi test.txt
Тестовая линия!
[root@puppetmaster файлы]# CD .. /проявляется/
Создайте тестовый класс для доставки файла клиенту:
[root@puppetmaster проявляется]# vi init.pp
Классовый тест {
        File { "/tmp/test.txt":
                обеспечить => присутствовать,
                группа => «корень»,
                владелец => «корень»,
                режим => "0644",
                источник => «puppet:///test/test.txt»
        }
}

Запуск Кукловода:
[root@puppetmaster проявляется]# /etc/init.d/puppetmaster start
Убедитесь, что порт 8140 включён.

Установка клиента Puppet:
[root@puppetclient ~]# yum --enablerepo="epel,epel-puppet" установить марионетку

Измените хосты и добавьте следующие две записи:
[root@puppetclient ~]# vi /etc/hosts
192.168.0.10 puppetmaster.leju.com кукла
192.168.0.100 puppetclient.leju.com

Настройка куклы:
[root@puppetclient ~]# cd /etc/puppet/
[root@puppetclient кукла]# vi puppet.conf
[главная]
    # Каталог журнала кукол.
    # Значение по умолчанию — '$vardir/log'.
    logdir = /var/log/puppet

    # Где хранятся файлы Puppet PID.
    # По умолчанию значение — '$vardir/run'.
    Rundir = /var/run/puppet

    # Где хранятся сертификаты SSL.
    # Значение по умолчанию — '$confdir/ssl'.
    SSLDIR = $vardir/SSL

[агент]
    # Файл, в котором марионетка хранит список классов
    # связанное с полученной конфигурацией.  Можно загрузить
    # отдельный исполняемый файл '''puppet'' с использованием ''--loadclasses''
    # вариант.
    # По умолчанию значение — '$confdir/classes.txt'.
    classfile = $vardir/classes.txt

    # Где puppetd кэширует локальную конфигурацию.  An
    # расширение, указывающее формат кэша, добавляется автоматически.
    # Значение по умолчанию — '$confdir/localconfig'.
    localconfig = $vardir/localconfig

    Server = puppetmaster.leju.com
    доклад = правда
    слушать = правда
   
[root@puppetclient марионетка]# vi namespaceauth.conf
[кукольный бегун]
    Разрешить puppetmaster.leju.com
    разрешить *.leju.com
   
[root@puppetclient марионетка]# vi auth.conf
Добавить allow * к последней строке
......
Путь /
Автор любой
разрешить *

[root@puppetclient кукла]# CD
Казни марионетку:
[root@puppetclient ~]# марионетка --noop --тест --trace --debug
Если Puppet Master не устанавливает: autosign=true, это необходимо выполнить в Puppet Master:
[root@puppetmaster ~]# Сертификат марионеток -L
puppetclient.leju.com
[root@puppetmaster ~]# Сертификат куклы -S puppetclient.leju.com
Подписывайте puppetclient.leju.com вот так. Затем вернитесь к клиенту для выполнения здесь:
[root@puppetclient ~]# марионетка --noop --тест --trace --debug
Соедините --noop, конфигурация практически не будет применяться к клиенту, в основном для тестирования, чтобы проверить наличие ошибок в распечатке, и выполнить без ошибок:
[root@puppetclient ~]# марионетка --тест --trace --debug

Просмотр документа:
[root@puppetclient ~]# ll /tmp/
всего 8
-rw-r--r-- 1 корень 11 фев 25 22:35 test.txt
Документ был выпущен.

Также можно протолкнуть на Кукловоде:
[root@puppetmaster ~]# Puppet Kick -D --ведущий puppetclient.leju.com
Триггер puppetclient.leju.com
Получение статуса
Статус — это успех
puppetclient.leju.com закончил с кодом выхода 0
Завершено
Возврат 0 означает, что марионетка на клиенте была успешно активирована.

Установите для марионетки автозапуск:
chkconfig --puppet level 2345 on

Модифицировать кукловода, чтобы использовать Passenger
Passenger — это расширение Apache 2.x для использования рельсов или реек в Apache. puppetmaster использует WEBrick для предоставления файловых сервисов по умолчанию, если у вас много puppet-клиентов, производительность файловых сервисов Puppetmaster будет низкой, чтобы сделать Puppetmaster более надёжным, поэтому используйте Apache для предоставления файловых сервисов.

Установка:
[root@puppetmaster ~]# yum install httpd httpd-devel ruby-devel rubygems
Пассажирская версия 2.2.2 RHEL5 работает нормально.
Add foreman.repo repository:
[root@puppetmaster ~]# vi /etc/yum.repos.d/foreman.repo
[Бригадир]
name=Репозиторий Foreman stable
baseurl=http://yum.theforeman.org/stable
gpgcheck=0
включено=1
[root@puppetmaster ~]# yum install rubygem-passenger-2.2.2-1
[root@puppetmaster ~]# rubygem-rack-1.0.1-1
[root@puppetmaster ~]# Passenger-install-apache2-module

Установка SSL-модуля Apache:
[root@puppetmaster ~]# yum install mod_ssl

Для настройки приложения Puppet Rack:
mkdir -p /etc/puppet/rack/puppetmaster/
mkdir /etc/puppet/rack/puppetmasterd/public /etc/puppet/rack/puppetmasterd/tmp
cp /usr/share/puppet/ext/rack/files/apache2.conf /etc/httpd/conf.d/puppetmasterd.conf
cp /usr/share/puppet/ext/rack/files/config.ru /etc/puppet/rack/puppetmasterd/
chown puppet /etc/puppet/rack/puppetmasterd/config.ru

[root@puppetmaster ~]# vi /etc/httpd/conf.d/passenger.conf
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.2/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.2
ПассажирРубин /usr/bin/ruby
Пассажир MaxPoolSize 30
Пассажирский бассейн IdleTime 1500
Пассажир МаксЗапрашивает 1000
ПассажирStatThrottleRate 120
RackAutoDetect выключен
RailsAutoDetect Off

[root@puppetmaster ~]# vi /etc/httpd/conf.d/puppetmasterd.conf
# Наверное, вам стоит настроить эти настройки
ПассажирВысокая производительность включена
ПассажирМаксРазмер бассейна 12
Пассажирский бассейн IdleTime 1500
# Пассажир МаксЗапрашивает 1000
ПассажирStatThrottleRate 120
RackAutoDetect выключен
RailsAutoDetect Off

Слушай, 8140

<VirtualHost *:8140>
        SSLEngine on
        SSLProtocol -ALL +SSLv3 +TLSv1
        SSLCipherSuite ВСЕ:! ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP

        SSLCertificateFile /var/lib/puppet/ssl/certs/puppetmaster.leju.com.pem
        SSLCertificateKeyFile /var/lib/puppet/ssl/private_keys/puppetmaster.leju.com.pem
        SSLCertificateChainFile /var/lib/puppet/ssl/ca/ca_crt.pem
        SSLCACertificateFile /var/lib/puppet/ssl/ca/ca_crt.pem
        # Если Apache жалуется на недействительные подписи на CRL, можно попробовать отключить
        # Проверка CRL, комментируя следующую строку, но это не рекомендуется.
        SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem
        SSLVerifyClient опционально
        SSLVerifyDepth 1
        SSLOptions +StdEnvVars

        # Следующие заголовки клиента позволяют работать с Pound той же конфигурацией.
        RequestHeader set X-SSL-Subject %{SSL_CLIENT_S_DN}e
        RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e
        RequestHeader set X-Client-Verify %{SSL_CLIENT_VERIFY}e

        DocumentRoot /etc/puppet/rack/puppetmasterd/public/
        RackBaseURI /
        <Каталог /и т.д./куколь/стойка/кукольный мастер/>
                Опции отсутствуют
                РазрешитьПереопределить Нет
                Приказ разрешить, запретить
                разрешить от всех
        </Directory>
</VirtualHost>

Измените конфигурационный файл puppetmaster, чтобы добавить следующие две строки:
[root@puppetmaster ~]# vi /etc/puppet/puppet.conf
[мастер]
    ssl_client_header = SSL_CLIENT_S_DN
    ssl_client_verify_header = SSL_CLIENT_VERIFY
   
Модифицировать /etc/sysconfig/puppetmaster:
[root@puppetmaster ~]# vi /etc/sysconfig/puppetmaster
# Добавьте следующую строку в конце:
PUPPETMASTER_EXTRA_OPTS="--хранилище отчетов"
Если нужно подчиняться и бригадиру, и кукольному дашборду, добавьте следующую строку:
PUPPETMASTER_EXTRA_OPTS="--докладывает магазин, прораб, puppet_dashboard"

Остановите службу кукловода и начните службу апачей:
[root@puppetmaster ~]# /etc/init.d/puppetmaster stop
[root@puppetmaster ~]# /etc/init.d/httpd start

Загрузка не запускает сервис puppetmaster, загрузка запускает httpd-сервис:
[root@puppetmaster ~]# chkconfig --puppetmaster уровня 2345 выключен
[root@puppetmaster ~]# chkconfig --level 2345 httpd on

Убедитесь, что порт 8140 включён:
[root@puppetmaster ~]# netstat -tunlp |grep 8140
tcp 0 0 :::8140 :::* СЛУШАЙТЕ 9834/httpd

Проверьте на стороне клиента, напечатан ли журнал ошибок:
[root@puppetclient ~]# марионетка --тест --trace --debug




Предыдущий:php-fpm.conf Важные параметры подробно объясняются
Следующий:25 октября 2014 года (суббота) в 22:00 была протестирована сигнализация по противовоздушной обороне и предотвращению катастроф
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com