Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 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 архитектурата за внедряване. Основният разработчик е 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. Голяма общност от разработчици и потребители също е ангажирана с предоставянето на документация и техническа поддръжка за Puppet.

Puppet също е лесен за мащабиране. Поддръжка на персонализирани пакети и специални конфигурации на системна среда могат да бъдат добавени бързо и лесно към инсталатора на Puppet.

3. Работен режим на куклата

Puppet е инструмент за управление на конфигурация в C/S архитектура, който инсталира пакета за кукли-сървър (известен като 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

Инсталация на Puppet Master:
[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

    # Където puppetd кешира локалната конфигурация.  An
    # разширение, което показва формат на кеша, се добавя автоматично.
    # По подразбиране стойността е '$confdir/localconfig'.
    localconfig = $vardir/localconfig
    Сървър = 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 се проявява/
Създайте 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 {
        таг("тест")
}

Възел 'puppetmaster.leju.com' наследява basenode {
        таг("тест")
}

[root@puppetmaster се проявява]# CD ..
[root@puppetmaster puppet]# mkdir модули
Създайте тестов модул:
[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"
        }
}

Изстрелване на Puppet Master:
[root@puppetmaster се проявява]# /etc/init.d/puppetmaster start
Увери се, че порт 8140 е активен.

Инсталация на куклен клиент:
[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

    # Където puppetd кешира локалната конфигурация.  An
    # разширение, което показва формат на кеша, се добавя автоматично.
    # По подразбиране стойността е '$confdir/localconfig'.
    localconfig = $vardir/localconfig

    Сървър = puppetmaster.leju.com
    доклад = вярно
    слушай = вярно
   
[root@puppetclient кукла]# vi namespaceauth.conf
[Puppetrunner]
    Позволете puppetmaster.leju.com
    позволи *.leju.com
   
[root@puppetclient кукла]# vi auth.conf
Добави let * към последния ред
......
Път /
Удостоверение на всякакъв
позволи *

[root@puppetclient кукла]# CD
Екзекутирай куклата:
[root@puppetclient ~]# Puppetd --noop --тест --trace --debug
Ако Puppet Master не зададе: autosign=true, трябва да се изпълни в Puppet Master:
[root@puppetmaster ~]# Сертификат за кукли -L
puppetclient.leju.com
[root@puppetmaster ~]# Сертификат за кукли -с puppetclient.leju.com
Подпишете puppetclient.leju.com така. След това се върнете към клиента, за да изпълните тук:
[root@puppetclient ~]# Puppetd --noop --тест --trace --debug
Join --noop, конфигурацията няма да се приложи на клиента, основно използван за тестване, за да се провери дали има грешки в разпечатката, и се изпълнява без грешки:
[root@puppetclient ~]# Puppetd --тест --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 е разширение на Apache 2.x за използване на релси или стойки приложения в Apache. puppetmaster използва WEBrick за предоставяне на файлови услуги по подразбиране; ако имате много куклени клиенти, производителността на файловите услуги на 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=Репозиториум на Форман
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 /и т.н./puppet/rack/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
ПътникРубин /usr/bin/ruby
ПътникМаксБасейнРазмер 30
Пътнически басейнСвободно време 1500
ПътникМаксИска 1000
PassengerStatThrottleRate 120
RackAutoDetect изключено
RailsAutoDetect Off

[root@puppetmaster ~]# vi /etc/httpd/conf.d/puppetmasterd.conf
# Вероятно искаш да настроиш тези настройки
ПътникВисокоПроизводителност включен
ПътникМаксПулРазмер 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 /и т.н./кукла/rack/puppetmasterd/public/
        RackBaseURI /
        <Директория /и т.н./кукли/стойка/куклен майстор/>
                Опции нямат
                AllowOverride None
                Заповед позволявай, отказвай
                Позволи от всички
        </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="--store за доклади"
Ако трябва да докладвате както на foreman, така и на куклово табло, добавете следния ред:
PUPPETMASTER_EXTRA_OPTS="--докладва магазин, бригадир, puppet_dashboard"

Спрете услугата на кукловод и започнете услугата с апачите:
[root@puppetmaster ~]# /etc/init.d/puppetmaster спри
[root@puppetmaster ~]# /etc/init.d/httpd start

Boot не стартира puppetmaster услугата, boot стартира 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 ~]# Puppetd --тест --trace --debug




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

Mail To:help@itsvse.com