Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 8686|Відповідь: 0

Управління конфігурацією: Встановлення та використання ляльок (1)

[Копіювати посилання]
Опубліковано 20.10.2014 09:47:45 | | |
1. Вступ до ляльки

Системні адміністратори часто застрягають у низці повторюваних завдань: оновлення пакетів, керування конфігураційними файлами, системними сервісами, завданнями 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 — це відкритий інструмент управління конфігурацією систем на базі Ruby, який базується на архітектурі розгортання C/S. Головним розробником є Luke Kanies, який дотримується ліцензії на авторське право GPLv2. З 1997 року Каніс займається адмініструванням систем UNIX, і розробка Puppet виникла саме з цього досвіду. Не задоволений наявними інструментами конфігурації, Каніс почав розробляти інструменти в редуктивній лабораторії між 2001 і 2005 роками. Незабаром Reductive Labs випустили свій флагманський продукт Puppet.

2. Особливості Pupput

Багато інструментів управління конфігурацією систем працюють дуже схоже, наприклад cfengine. Що робить Puppet унікальним?

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

Ще одним визначним аспектом Puppet є її гнучкість. Завдяки специфіці відкритого програмного забезпечення ви можете вільно отримати вихідний код Puppet, а якщо виникнуть проблеми і маєте таку можливість, можете змінювати або покращувати код Puppet відповідно до свого середовища. Крім того, розробники та донори спільноти продовжують покращувати можливості Puppet's. Велика спільнота розробників і користувачів також прагне надавати документацію та технічну підтримку 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):

Налаштуйте репозиторій на ляльковому сервері та клієнті:
об/хв -Увх 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

Додайте repository 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

    # Де зберігаються PID-файли Puppet.
    # Значення за замовчуванням — '$vardir/run'.
    Rundir = /var/run/лялька

    # Де зберігаються сертифікати SSL.
    # Значення за замовчуванням — '$confdir/ssl'.
    SSLDIR = $vardir/SSL

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

    # Де лялька кешує локальну конфігурацію.  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
    звіти = сховище
   
[root@puppetmaster puppet]# vi fileserver.conf
     [файли]
    path /etc/puppet/files
    дозволити *

[модулі]
    дозволити *

[плагіни]
    дозволити *

[root@puppetmaster лялька]# mkdir /etc/puppet/files
   
[root@puppetmaster лялька]# CD Manifests/
Створіть 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' успадковує basenode {
        tag("тест")
}

[root@puppetmaster маніфест]# CD ..
[root@puppetmaster puppet]# mkdir modules
Створіть тестовий модуль:
[root@puppetmaster модулі]# mkdir -p test/manifests/
[root@puppetmaster modules]# 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 початок
Переконайтеся, що порт 8140 увімкнений.

Встановлення Puppet client:
[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

    # Де зберігаються PID-файли Puppet.
    # Значення за замовчуванням — '$vardir/run'.
    Rundir = /var/run/лялька

    # Де зберігаються сертифікати SSL.
    # Значення за замовчуванням — '$confdir/ssl'.
    SSLDIR = $vardir/SSL

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

    # Де лялька кешує локальну конфігурацію.  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
Join --noop, конфігурація насправді не буде застосована до клієнта, переважно використовується для тестування, щоб перевірити наявність помилок у друкованому виданні, і виконати без помилок:
[root@puppetclient ~]# лялька --тест --trace --debug

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

Також можна проштовхнути Puppet Master:
[root@puppetmaster ~]# Puppet Kick -D --ведучий puppetclient.leju.com
Тригерні puppetclient.leju.com
Отримання статусу
статус — це успіх
puppetclient.leju.com закінчили з кодом виходу 0
Завершено
Повернення 0 означає, що маріонетка на клієнті була успішно активована.

Встановіть ляльку на автоматичний старт:
chkconfig --рівень 2345 puppet увімкнено

Модифікувати лялькаря для використання 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
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 /тощо/лялька/стійка/puppetmasterd/
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
ПасажирRuby /usr/bin/ruby
Пасажир MaxPoolSize 30
Пасажирський басейнБезповільний час 1500
Пасажир МаксПросить 1000
PassengerStatThrottleRate 120
RackAutoDetect вимкнено
RailsAutoDetect Off

[root@puppetmaster ~]# vi /etc/httpd/conf.d/puppetmasterd.conf
# Ви, мабуть, хочете налаштувати ці налаштування
ПасажирВисокоПродуктивність увімкнена
ПасажирMaxPoolРозмір 12
Пасажирський басейнБезповільний час 1500
# Пасажир МаксПросить 1000
PassengerStatThrottleRate 120
RackAutoDetect вимкнено
RailsAutoDetect Off

Слухай 8140

<VirtualHost *:8140>
        SSLEngine увімкнено
        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 --рівень 2345 Puppetmaster вимкнено
[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 року (субота) о 23:00 було протестовано сигналізацію для протиповітряної оборони та запобігання стихійним лихам.
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com