Қуыршақ шебері: Қуыршақ конфигурациясын қашықтан басқару жүйесін орнату және конфигурациялау. Қуыршақ шебері: Қуыршақ конфигурациясын қашықтан басқару жүйесін орнату және конфигурациялау Қуыршақты орнату

Қуыршақты тиімдірек пайдалану үшін модульдер мен манифесттердің қалай құрастырылғанын түсіну керек. Бұл оқулық Ubuntu 14.04 серверінде LAMP стекін орнату арқылы осы Қуыршақ құрамдастары қалай жұмыс істейтінін көрсетеді.

Талаптар

  • Қуыршақты орнату (шебер және агент). Бұл туралы толығырақ -.
  • Қуыршақ агент түйініне қызмет көрсету үшін кем дегенде бір Ubuntu 14.04 виртуалды серверін жасау мүмкіндігі.

Қуыршақ кодының негіздері

Ресурстар

Қуыршақ код негізінен ресурстардан тұрады. Ресурс – жүйенің күйін сипаттайтын және оған қажетті өзгерістерді анықтайтын код бөлігі. Мысалы:

пайдаланушы («митчелл»:
қамтамасыз ету => бар,
uid => "1000",
gid => "1000",
shell => "/bin/bash",
үй => "/home/mitchell"
}

Ресурс декларациясының келесі форматы бар:

ресурс_түрі("ресурс_атауы"
атрибут => мән
...
}

Қуыршақ ресурстарының барлық түрлерін көру үшін пәрменді беріңіз:

қуыршақ ресурсы --түрлері

Бұл нұсқаулықта ресурс түрлері туралы көбірек біле аласыз.

Манифесттер

Манифест – оркестрлік сценарий. .pp кеңейтімі бар қуыршақ бағдарламалары манифест деп аталады. Әдепкі Қуыршақ манифесті /etc/puppet/manifests/site.pp.

Сабақтар

Кез келген қарапайым бағдарламалау тілінде сияқты, сыныптар оркестрдің бөліктерін ұйымдастыруға және қайта пайдалануға жауапты.

Класс анықтамасында сыныптың қалай жұмыс істейтінін сипаттайтын код блогы бар. Классты анықтағаннан кейін оны манифесттерде пайдалануға болады.

Класс анықтамасы келесі форматқа ие:

сынып мысалы_сынып(
...
код
...
}

Бұл код example_class сыныбын анықтайды. Қуыршақ коды бұйра жақшаларда болады.

Класс декларациясы - кодтағы белгілі бір класс шақырылатын орын. Класс мәлімдемесі арқылы Puppet оның кодын өңдейді.

Класс мәлімдемесі қарапайым және ресурс түрі бойынша болуы мүмкін.

Кәдімгі класс декларациясы include кілт сөзін пайдаланып кодқа қосылады.

мысал_сыныбын қосыңыз

Ресурс түрі ретінде жарияланған кезде сынып ресурс пішімінде жарияланады:

сынып («мысал_сынып»:)

Бұл мәлімдеме кодыңызға сынып атрибуттарының әдепкі мәндерін қайта анықтайтын сынып параметрлерін қосуға мүмкіндік береді. Мысалы:

"хост2" түйіні (
сынып («apache»: ) # apache модулін пайдаланыңыз
apache::vhost ( "example.com": # vhost ресурсын анықтаңыз
порт => "80",
docroot => "/var/www/html"
}
}

Модульдер

Модуль – оркестрдің жеке бөліктерін ортақ пайдалануды және қайта пайдалануды жеңілдететін, алдын ала анықталған жолмен ұйымдастырылған манифесттер мен басқа файлдар тобы. Модульдер қуыршақ кодын ұйымдастыруға көмектеседі, себебі олар кодты бірнеше манифестерге бөлу үшін пайдаланылуы мүмкін.

Қуыршақ модульдері /etc/puppet/modules каталогында сақталады.

Манифест жазу

Ubuntu серверінде LAMP стегін орнату мысалын пайдаланып қуыршақ манифесттерін, модульдерін және сыныптарын жазуға жаттыға аласыз (нәтиже болады).

Сонымен, Ubuntu 14.04 серверін ұйымдастыру және оған LAMP стекін орнату үшін келесі әрекеттер үшін ресурстар қажет:

  • apache2 бумасын орнату.
  • apache2 қызметін іске қосу.
  • пакетті орнату MySQL сервері, MySQL-сервері.
  • mysql қызметін іске қосу.
  • php5 бумасын орнату
  • PHP сынақ сценарийін жасау, info.php.
  • әрбір буманы орнатпас бұрын apt индексін жаңарту.

Төменде осындай LAMP стек орнатуына қол жеткізу үшін пайдалануға болатын қуыршақ кодының үш мысалын табасыз.

Бірінші мысал негізгі манифесттерді бір файлға жазуды үйретеді. Екінші мысал бұрын жазылған манифесттерге негізделген сынып пен модульді жинауға және пайдалануға көмектеседі. Үшінші мысал LAMP стекін орнату үшін алдын ала жасалған жалпыға ортақ модульдерді қалай пайдалану керектігін көрсетеді.

Ескерту: Тестілеу үшін жаңа виртуалды серверді қолданған дұрыс.

1-мысал: бір манифестпен LAMP орнату

Қуыршақ манифестін агент түйінінде жазуға болады, содан кейін қуыршақ қолдану пәрмені арқылы орындауға болады (бұл әрекетті орындау үшін сізге басты және агент орнату қажет емес).

Бұл бөлімде сіз ресурс мәлімдемелерінің осы түрлерін пайдаланатын манифесттерді жазуды үйренесіз:

  • exec: пәрмендерді орындау.
  • бума: бумаларды орнату.
  • қызмет көрсету: қызметті басқару.
  • файл: файлды басқару.

Манифест құру

Жаңа манифест жасаңыз:

sudo vi /etc/puppet/manifests/lamp.pp

Қажетті ресурстарды жариялау үшін оған келесі кодты қосыңыз.

# «apt-get update» пәрменін іске қосыңыз
exec("apt-update": # ресурс exec "apt-update"
пәрмен => "/usr/bin/apt-get update" # осы ресурс іске қосылатын пәрмен
}
# apache2 бумасын орнату
бума («apache2»:
талап => Exec["apt-update"], # буманы орнату алдында "apt-update" сұрауы
қамтамасыз ету => орнатылған,
}
# apache2 қызметін іске қосыңыз
қызмет («apache2»:
қамтамасыз ету => жүгіру,
}
# mysql серверін орнату
пакет («mysql-сервер»:
талап => Exec["apt-update"], # қайта орнату арқылы "apt-update" сұраңыз
қамтамасыз ету => орнатылған,
}
# mysql қызметін іске қосыңыз
қызмет («mysql»:
қамтамасыз ету => жүгіру,
}
# php5 бумасын орнату
бума («php5»:
талап => Exec["apt-update"], # орнату алдында "apt-update" сұраңыз
қамтамасыз ету => орнатылған,
}
# info.php қызметін іске қосыңыз
файл("/var/www/html/info.php":
қамтамасыз ету => файл,
мазмұны => «", # phpinfo коды
талап => Пакет["apache2"], "apache2" бумасына # сұрау
}

Манифестті қолдану

Жаңа манифестті пайдалану үшін пәрменді енгізіңіз:

sudo puppet application --test

Ол қоршаған орта күйіндегі барлық өзгерістерді көрсететін көлемді нәтижені көрсетеді. Шығаруда қателер болмаса, сыртқы IP мекенжайыңызды немесе браузеріңізде домен атын аша алуыңыз керек. Экранда стек ақпараты бар PHP сынақ беті пайда болады. Бұл Apache және PHP жұмыс істеп тұрғанын білдіреді.

Енді LAMP стек Қуыршақ арқылы серверге орнатылды.

Бұл өте қарапайым манифест, себебі оны агентте орындауға болады. Егер сізде Қуыршақ шебері болмаса, басқа агент түйіндері бұл манифестті пайдалана алмайды.

Қуыршақ шебері сервері сервер күйінің өзгеруін әрбір 30 минут сайын тексереді.

2-мысал: модуль арқылы LAMP стекін орнату

Енді алдыңғы бөлімде жазған LAMP манифестіне негізделген қарапайым модуль жасап көріңіз.

Модуль жасау үшін модульдер каталогында жаңа каталог жасаңыз (оның аты модуль атауына сәйкес келуі керек). Бұл каталогта манифесттер каталогы және init.pp файлы болуы керек. init.pp файлы Қуыршақ класын көрсетеді (оның аты модуль атауына да сәйкес келуі керек).

Модуль құру

Қуыршақ басты серверіне өтіп, модуль үшін каталог құрылымын жасаңыз:

cd /etc/puppet/modules
sudo mkdir -p шамы/манифесттер

Редакторда init.pp файлын жасаңыз және ашыңыз:

sudo vi lamp/manifests/init.pp

Шамдар класын файлға енгізіңіз:

сынып шамы(
}

1-бөлімдегі манифесттің мазмұнын көшіріп, оны лампа класының блогына қойыңыз. Сізде енді шам класс анықтамасы бар. Басқа манифесттер бұл классты модуль ретінде пайдалана алады.

Файлды сақтаңыз және жабыңыз.

Негізгі манифестте модульді пайдалану

Енді негізгі манифестті конфигурациялауға және LAMP стекін серверге орнату үшін шам модулін пайдалануға болады.

Қуыршақ шебері серверінде келесі файлды өңдеңіз:

sudo vi /etc/puppet/manifests/site.pp

Сірә, қосулы осы сәтфайл бос. Оған келесі жолдарды қосыңыз:

түйін әдепкі ( )
«шам-1» түйіні (
}

Ескерту: Шам-1 орнына стек орнатылатын Қуыршақ агентінің хост атауымен ауыстырыңыз.

Түйін блогы кейбір түйіндерге ғана қолданылатын қуыршақ кодын көрсетуге мүмкіндік береді.

Әдепкі блок жеке блогы жоқ барлық агент түйіндеріне қолданылады (оны бос қалдырыңыз). Шам-1 блогы шам-1 агент түйініне қолданылады.

Шам модулін пайдаланатын осы блокқа келесі жолды қосыңыз:

Файлды сақтаңыз және жабыңыз.

Енді Қуыршақ агентінің түйіні негізгі серверден параметрлерді жүктеп алып, LAMP стекін орната алады. Дәл қазір өзгертулер енгізгіңіз келсе, агентте пәрменді іске қосыңыз:

sudo қуыршақ агенті - тест

Модульдер - қуыршақ кодын қайта пайдаланудың ең қолайлы жолы. Сонымен қатар, модульдер кодты логикалық түрде ұйымдастыруға көмектеседі.

3-мысал: жалпы модульдерді пайдаланып LAMP орнату

MySQL модулі де дәл осылай қолданылады. Түйін блогына келесі жолдарды қосыңыз:

class("mysql::server":
root_password => "пароль",
}

Сондай-ақ MySQL модулінің параметрлерін беруге болады.

info.php файлын қажетті орынға көшіретін ресурсты қосыңыз. Бастапқы параметрді пайдаланыңыз. Түйін блогына келесі жолдарды қосыңыз:

file("info.php": # ресурс файл атауы
жол => "/var/www/html/info.php", # мақсатты жол
қамтамасыз ету => файл,
=> Class["apache"], пайдалану үшін # apache сыныбы қажет
көзі => "puppet:///modules/apache/info.php", файлды көшіру үшін # орын
}

Бұл сынып декларациясы мазмұнның орнына бастапқы параметрді пайдаланады. Бұл опция файлдың мазмұнын пайдаланып қана қоймайды, сонымен қатар оны көшіреді.

Қуыршақ puppet:///modules/apache/info.php файлын /etc/puppet/modules/apache/files/info.php ішіне көшіреді.

Файлды сақтаңыз және жабыңыз.

info.php файлын жасаңыз.

sudo sh -c «жаңғырық»"> /etc/puppet/modules/apache/files/info.php"

Енді Қуыршақ агентінің түйіні негізгі серверден параметрлерді жүктеп алып, LAMP стекін орната алады. Агент ортасына дәл қазір өзгертулер енгізгіңіз келсе, осы түйінде пәрменді іске қосыңыз:

sudo қуыршақ агенті - тест

Бұл пәрмен ағымдағы түйін үшін барлық жаңартуларды жүктеп алып, оған стек орнатады. Apache және PHP жұмыс істеп тұрғанына көз жеткізу үшін браузерде түйіннің IP мекенжайын немесе доменін ашыңыз:

http://lamp_1_public_IP/info.php

Қорытынды

Сізде Қуыршақ модульдерімен және манифестерімен жұмыс істеу туралы негізгі біліміңіз бар. Қарапайым манифест пен модульді өзіңіз жасап көріңіз.

Қуыршақ қолданба конфигурация файлдарын басқару үшін тамаша.

Тегтер: ,
Біраз поэзия.Бұл мақала бүкіл серияның бастапқы нүктесі болуы керек сияқты, бірақ мақсатты аудитория - Puppet Forge-мен жеке, нашар біріктірілген модульдерге қанағаттанбайтын Open Source Puppet Labs өнімдерін тәжірибелі қолданушылар. Кез келген «кітапханаға қарсы шеңбер» жағдайындағы сияқты, төлейтін баға интеграцияланған шешім авторының дүниетанымын ұстану болып табылады.

Қуыршақ қалай жұмыс істейтіні туралы аздап

Қуыршақ - ең алдымен жүйенің соңғы күйін декларативті түрде көрсетуге арналған арнайы тіл. Салыстыру үшін, GNU Makefile өте қолайлы, мұнда тәуелділіктерді тікелей сипаттаудан басқа, толығымен оғаш болуға болады.

Қуыршақтың абстракциясы осындай ( үлгілерді бұзу - бағдарламалау терминдері туралы білетін барлық нәрсені ұмытыңыз!).

  • Түйінбелгілі бір мақсатты жүйеге арналған конфигурациялар жиынтығы болып табылады. Шын мәнінде, бұл сыныптың ерекше жағдайы.
  • Сыныптүйін конфигурациясына немесе басқа сыныптарға кіретін декларативті логика жиынтығы болып табылады. Сыныпта даналар да, әдістер де жоқ, бірақ оның логикада анықталған параметрлері мен айнымалылары бар. Шын мәнінде, бұл жай ғана кодты қосу және айнымалылардың соншалықты банальды емес ауқымына ие болу арқылы басқа процедураны мұра ете алатын процедура.
  • Түр- бірақ бұл классикалық сыныпқа көбірек ұқсайды - ол аты бар және сөзсіз даналарды қабылдайды берілген параметрлер, бірақ басқа ештеңе жоқ. Түрдің нақты іске асырылуын басқа түрлердің даналарын жасайтын define арқылы қуыршақ сценарийі ретінде немесе қиял ұшағы бар Ruby кеңейтімі ретінде жазуға болады.
  • Ресурс- бұл шын мәнінде Түрлердің атаулы даналары. Әрбір ресурс атауы түйін (каталог) конфигурациясындағы белгілі бір түрдегі бірегей болып табылады.
  • Айнымалылар- жақсы, қысқасы, бұл тұрақтылар... Қуыршақ 4-ке дейін олардың ауқымы одан да нашар болды. Енді бұл адекватты: анықтау орнынан тыс пайдалану үшін класс мұрагерлік жағдайын қоспағанда, толық білікті идентификатор көрсетілуі керек.
Қуыршақты желі немесе байланысты инфрақұрылымсыз жергілікті орналастыру үшін пайдалануға болады. Бұл контейнер кескіндерін жасау үшін пайдаланылуы мүмкін. Тіпті орталықтандырылған серверден бас тартуды жақтайтын бүкіл қозғалыс бар.

Идеологиялық тұрғыдан дұрыс түрде қуыршақ инфрақұрылымы агенттен - мақсатты жүйедегі артықшылықты қызметтен және агенттердің сұрауы бойынша декларативті ресурс каталогтары түріндегі құнды нұсқауларды тарататын серверден тұрады. Қауіпсіздік жеке ашық кілт инфрақұрылымы деңгейінде жүзеге асырылады (X.509). Қарапайым тілмен айтқанда, HTTPS-тегідей механизмдер, бірақ өзінің CA және міндетті тексеруі бар клиент сертификаты.

Жеңілдетілген пішінде орналастыру процедурасы келесідей көрінеді:

  1. TLS және X.509 арқылы өңдеу (қосылым орнату, CRL жаңартуы, сертификат шектеулерін тексеру және т.б.)
  2. Агент кэштеумен және барлық нәрселермен серверден факті генераторларын алады (дәлірек айтқанда, барлығы модульдердегі lib/қалталардан алынады). Қызықты ақпаратты жинау үшін өзіңіздің Ruby сценарийіңізді қосу қиын емес.
  3. Агент мақсатты жүйе туралы фактілерді жинайды және оны серверге жібереді. Барлық фактілерді қуыршақ фактілері қоңырауы арқылы қолмен оңай көруге болады. Бұл фактілер жаһандық айнымалылар ретінде қол жетімді.
  4. Сервер ресурстар каталогын құрастырады және оны агентке жібереді. Мұның астарында әртүрлі ұғымдардың тұтас қабаты жатыр.
  5. Агент серверден қажеттінің барлығын алып, жүйені көрсетілген пішінге әкеледі. Агенттің өзі ресурстармен не істеу керектігін білмейді; ол ресурстардың белгілі бір түрлерін провайдерлердің (семантикалық аудармасы «орындаушы» емес, жеткізуші болады) іске асыруға сүйенеді. Кейбір провайдерлер стандартты болып табылады және қуыршақ пакеттеріне кіреді, ал қалғандары модульдерден алынады.
Барлық ләззаттардан ләззат алу үшін келесі түрдегі қосымша тоқаштар бар:
  • Модуль- декларативті қуыршақ сценарийлерінің жинағы, қуыршаққа арналған Ruby кеңейтімдері, файлдар, файл үлгілері, Hiera деректері және т.б. Неғұрлым дұрыс термин «пакет» болар еді.
  • Қоршаған орта- сценарийлер, модульдер және Hiera деректерінің жиынтығы. Инфрақұрылым күрделене түскен сайын конфигурацияны түйіндер бойынша стандартты бөлуге қарағанда көбірек бөлу қажет болды. Негізінен, бұл пилоттық инновациялар мен қол жеткізуді бақылау үшін қажет (барлық әкімшілер АТ инфрақұрылымының барлық түйіндеріне қол жеткізе алмаған кезде).
  • Хиера- иерархиялық мәліметтер базасы. Бұл тұжырым өте қорқытуы мүмкін. Сондықтан болар, кейінгі нұсқалардың құжаттамасында өзгертілді. Шын мәнінде, бұл YAML немесе JSON файлдарынан конфигурацияны шығарудың өте қарапайым және ыңғайлы механизмі. Иерархия - бұл бірнеше конфигурация файлдарының оқу ретін көрсету мүмкіндігі - яғни. осы файлдардың иерархиясы/басымдығы.
    • Функция шақыруымен деректерді алудан басқа, қуыршақ әдепкі сынып параметрлерін тартады, бұл негізгі ерекшелік болып табылады.
    • Әрине, Hiera фактілерді интерполяциялауды және тіпті арнайы функцияларды шақыруды қолдайды.
    • Puppet 4.3 нұсқасында біз жаһандық дерекқорды ғана емес, сонымен қатар Қоршаған орта және модульге арналған жергілікті дерекқорды қолдау үшін сол функционалдылықты қайта іске асырдық, дегенмен автор оларды енгізуде бірнеше проблемаларды тапты (PUP-5983, PUP-5952 және PUP). -5899), оларды қуыршақ зертханалары бірден бекітті.
    • Иерархиядағы барлық файлдардан мәндерді шығару үшін бірнеше стратегияға қолдау көрсетіледі:
      • бірінші - басымдық бойынша табылған бірінші мән қайтарылады
      • бірегей - барлық мәндерді бір өлшемді массивке жинайды және көшірмелерді жояды
      • хэш - барлық табылған YAML хэштерін біріктіреді. Қайталанатын кілттер басымдық бойынша таңдалады.
      • deep - бұл хэштің рекурсивті нұсқасы
    • Сұлулық мынада, іріктеу стратегиясын іздеу() функциясын шақырған кезде де көрсетуге болады, өйткені және cfnetwork модулінде белсенді пайдаланылатын арнайы lookup_options кілті арқылы кез келген иерархиялық файлда.
  • PuppetDB- іс жүзінде реляциялық дерекқор (PostgreSQL) айналасындағы бизнес логикасының қабаты, ол орындалған фактілер мен орналастырулар туралы есептерді сақтауға және басқа түйіндердегі каталогтарға немесе таңдаулар арқылы кейіннен импорттау үшін ресурстарды экспорттауға мүмкіндік береді. арнайы функциялар. Сондай-ақ қуыршақ бақылау тақтасы түрінде веб-интерфейс бар.
  • X.509 PKI- бөлек инфрақұрылымды басқаруды қажет етпей-ақ басқа қызметтер үшін пайдалану өте ыңғайлы жоғарыда аталған сертификаттық инфрақұрылым.
  • Ұжымдық- сервер фермасында оқиғаларға негізделген тапсырмаларды іске қосу үшін пайдалы нәрсе болып көрінеді, бірақ авторда белгілі бір шешімнің қауіпсіздігіне белгілі бір сенімсіздік бар.
  • Қуыршақ сарайы- Модульдерді жариялау және жүктеу үшін ашық платформа.
  • басқару элементтері түріндегі кейбір басқа мүмкіндіктер сыртқы құрылғылар Cisco жабдығының түрі және жалаң металға орналастыру, бірақ бұл басқа әңгіме

Қауіпсіздік және қол жетімділік туралы ескертпелер

Қуыршақ сервері бүкіл АТ-инфрақұрылымының осал нүктесіне айналатынын түсінуіңіз керек, себебі... барлық жүйелердің соңғы конфигурациясын анықтайды. Ерекше жағдайларда бөлуді жасау мағынасы бар - өте маңызды инфрақұрылым элементтері үшін бөлек сервер шектеулі қолжетімділікжәне қолмен жаңарту және қалғаны үшін екіншісі.

Қуыршақ серверінің қолжетімділігі бүкіл инфрақұрылымды басқару мүмкіндігін анықтайды. Қуыршақ серверін виртуалды машинада өз мүмкіндіктеріңізге қарағанда сенімдірек және жылдам қалпына келтірілетін үшінші тарап бұлтында орналастыру мағынасы бар. Немесе бірнеше серверлерді орнату керек.

Ешбір жағдайда қоңыраулар мен ысқырықтары бар қуыршақ сервері орналастырылатын жүйеге басқа қызметтерді орнатуға болмайды. Виртуализация және контейнерлеу сізге көмектесе алады.

Мульти-мастер (бірнеше бөлек қуыршақ серверлері)

  • Бұл жағдайда тек бір сервер CA (Сертификат орталығы) ретінде әрекет етеді – оның қолжетімсіздігі жаңа түйіндерді қосу мүмкін еместігін білдіреді.
    • Қуыршақ, егер кірістірілгені қанағаттанарлық болмаса, үшінші тараптың X.509 инфрақұрылымын пайдалануға мүмкіндік береді.
  • Бүкіл конфигурация (Орта) нұсқаны басқару жүйесінде сақталуы және әр серверге бір уақытта орналастырылуы керек.
  • Жалғыз ортақ нәрсе - PostgreSQL дерекқоры, оның жоғары қолжетімділігін ұйымдастыру осы мақаланың аясынан тыс.
  • cfpuppetserver модулі орнатуларды негізгі (CA бар) және қосымша сервер ретінде қолдайды.

Ескі нұсқалардан бері қандай маңызды өзгерістер болды

Өндіруші толық сипаттамаға ие.
  • Барлық қызметтер JVM, JRuby және Jetty-ге көшті. Интеграцияның айқын артықшылықтарына қарамастан, жадты тұтыну тұрғысынан да кемшіліктер бар.
  • Топтамаларды өңдеу үшін Lambda функциялары қосылды - енді Ruby-де балдақтарды кесудің немесе create_resources() арқылы бұрмалаудың қажеті жоқ.
  • EPP үлгілерін өңдеуге арналған құрал пайда болды - негізінен бірдей ERB, бірақ Ruby орнына Puppet DSL,
  • Конфигурация файлдарының әдепкі каталог құрылымы айтарлықтай өзгерді
  • Орталар мен модульдерге арналған деректер провайдерлеріне қолдау қосылды (бұзулар енді қажет емес).
  • Жаһандық Hiera рөлін төмендету. Жаңа және қатысты пәрмен - қуыршақ іздеу.

Орнату

Бұл процесс өте қарапайым, бірақ белгілі бір қадамдар тізбегін орындауды талап етеді. Бұны қолмен жасау рақметсіз тапсырма болғандықтан, автор сізге жаман нәрсені үйретеді, атап айтқанда Интернеттен түсініксіз сценарийлерді жүктеп алып, оларды жүйеде түбірлік ретінде іске қосу.

Үш негізгі сервер құрамдастары - қуыршақ серверінің өзі, PuppetDB және PostgreSQL. Олардың барлығын бір түйінге біріктіруге немесе екі немесе үш жүйеге бөлуге болады. Қуыршақ сервері мен қуыршақ DB бірнеше рет іске қосылуы мүмкін, бірақ PostgeSQL бір сәтсіздік нүктесі болып табылады. PostgeSQL репликациясына және кластерлеуіне әртүрлі тәсілдер бар.Негізгі және қосымша серверлер жағдайында ыңғайлы тәсіл PuppetDB-да негізгі және тек оқуға арналған дерекқор түйіні ретінде қолдау көрсетілетін Master + Read-On Slave болады, бірақ мұндай әрекеттерді автоматтандыру. орнату уақытты қажет етеді, сондықтан cfpuppetserver модулінде әлі қолжетімді емес.

Конфигурацияның өзін ең болмағанда сақтауға болады файлдық жүйеқуыршақ серверімен бірге, бірақ бұл өндірістік веб-серверде сценарий жазу сияқты. Ең қолайлы шешім - git репозиторийі. r10k утилитасы репозиторийдің барлық тармақтарын тартып алып, оларды қуыршақ серверіне бөлек орталар ретінде орналастыра алады. r10k тәуелділіктерді тартуда өте нашар, сондықтан жоғарыда кітапханашы-қуыршақ пайдаланылады. Бірден айта кетейік, негізгі канондық қуыршақ ортасы «өндіріс» болып табылады. Сондықтан конфигурация репозиторийінде «шебер» емес, «өндіріс» деп аталатын тармақты пайдалану керек.

Жүйе талаптары

Жабдықты өндірушінің өзі сипаттайды. cfpuppetserver модулі қазіргі уақытта тек Debian Jessie+ және Ubuntu Trusty+ қолдау көрсетеді.

Git ішіндегі конфигурация

r10k өзі үшін репозиторийдің орналасуы маңызды емес - ең бастысы оның қол жетімділігі. Мысалы, тестілеу мақсатында репозиторийді бір жүйеде орналастыруға және file:// арқылы кіруге болады. Бастау үшін жақсы орын codingfuture/puppet-exampleenv конфигурациясының мысалы болып табылады.
  1. Репозиторийді клондау: git clone https://github.com/codingfuture/puppet-exampleenv my-puppet-conf && cd my-puppet-conf
  2. Түсініктемелердегі кеңестерді пайдалана отырып, әкімшіге кірудің жалпы параметрлерін орнаттық:
    • $EDITOR деректері/common.yaml
  3. Түйін конфигурациясын жасайық:
    • $MY_DOMAIN - түбір домен атауы (мысалы, example.org)
    • $HOST_NAME – доменсіз клиент хост атауы
    • mkdir деректері/$MY_DOMAIN
    • cp data/example.com/puppet.yaml data/$(MY_DOMAIN)/puppet.yaml
    • $EDITOR nano -w data/$(MY_DOMAIN)/puppet.yaml - түсініктемелердегі ұсыныстарға сәйкес қуыршақ серверімен түйінді орнату
    • cp data/example.com/host.yaml data/$(MY_DOMAIN)/$(HOST_NAME).yaml
    • $EDITOR nano -w data/$(MY_DOMAIN)/$(HOST_NAME).yaml - түсініктемелердегі ұсыныстар негізінде ерікті түйінді орнату
  4. Біз өз Git серверімізге итереміз немесе оны rsync немесе scp арқылы қуыршақ сервері бар түйінде жергілікті қол жетімді етеміз. Жергілікті репозиторий Git сервері Қуыршақтың өзінен орналастырылмайынша, аралық қадам ретінде ыңғайлы. Бұл белгілі бір мағынада компиляторды бірнеше кезеңде құрастыруды еске түсіреді.

Таза жүйеде нөлден бастап орнату

cfpuppetserver модулі барлығын қуыршақ арқылы орнатуға мүмкіндік береді, бірақ бастапқы орнату үшін негізгі әрекеттер Bash сценарийімен қайталанады.

Мақсатты жүйеде:

  1. Орнату сценарийін жүктеп алыңыз: wget https://raw.githubusercontent.com/codingfuture/puppet-cfpuppetserver/master/setup_puppetserver.sh
  2. Сценарийді қарап шығып, қабағымызды түйеміз: less setup_puppetserver.sh
  3. Іске қосу: bash setup_puppetserver.sh қуыршақ.$(MY_DOMAIN) .
  4. Біз жүйенің қалай өршіп тұрғанын және барлығын тез орнатпайтынын көреміз.
  5. Репозиторий қашықтағы болса:
    • Түбір үшін SSH кілтін жасаңыз: ssh-keygen -t rsa -b 2048
    • Біз /root/.ssh/id_rsa.pub ашық кілтін қашықтағы Git серверінде тіркейміз...
    • ... және сол жерде біз келесі пәрменді шақыру арқылы Git ілгегі орнатамыз: /usr/bin/ssh -T deploypuppet@puppet.$(MY_DOMAIN) ./puppetdeploy.sh
  6. Біз конфигурацияны қолмен орналастыруды бастаймыз: /etc/puppetlabs/deploy.sh
  7. Оның серверде қалай жұмыс істейтінін көрейік: /opt/puppetlabs/bin/puppet agent --test
  8. Желі параметрлерін тексеріңіз, кернеуден қорғағышжәне SSH қатынасы

Басқарылатын түйіндерді қосу

  1. Қуыршақ серверінің толық жарамды атауы басқарылатын хосттағы DNS арқылы қолжетімді болуы немесе /etc/hosts ішіне қатты кодталған болуы керек.
    • Мысал: echo "128.1.1.1 puppet.example.com" >> /etc/hosts
  2. Қуыршақ сервері бар түйінде келесі сценарийді іске қосыңыз /root/genclientinit.sh $(HOST_NAME).$(MY_DOMAIN) .
  3. Нәтижені толығымен көшіріп, оны қойыңыз пәрмен жолымақсатты жүйеде.
  4. Орындаудың аяқталуын күтеміз және /opt/puppetlabs/bin/puppet agent --test іске қосамыз. Бірінші іске қосу кезінде сертификатқа қол қою сұрауы жасалады.
  5. Куәлікке қол қою үшін қуыршақ серверінің түйініне барамыз.
    • қуыршақ сертификаттарының тізімі - біз қосымша паранойя үшін сертификат қолтаңбасын тексереміз.
    • қуыршақ сертификат белгісі $(HOST_NAME).$(MY_DOMAIN) - шын мәнінде, біз сертификатқа қол қоямыз.
  6. Біз басқарылатын түйінге ораламыз және қайта іске қосамыз: /opt/puppetlabs/bin/puppet agent --test`. Бұл орналастыру процедурасын бастауға мәжбүр етеді.
  7. Қуыршақ агенті арқылы орналастырудың аяқталуын күтеміз.
  8. Міне, сізде қуыршақтардың минималды инфрақұрылымы дайын!

/root/genclientinit.sh сайтынан алынған мысал

bash</etc/cflocation fi if test ! -z ""; онда echo -n >/etc/cflocationpool fi if test ! -z "\$http_proxy"; содан кейін http_proxy экспорттау https_proxy="\$http_proxy" экспорттау HTTP_PROXY="\$http_proxy" экспорттау HTTPS_PROXY="\$http_proxy" fi echo host.example.com > /etc/hostname хост атауы host.example.com егер ! қай lsb-шығару | оқу; онда apt-get орнату lsb-release fi код аты=\$(lsb_release -cs) егер test -z "\$код аты"; содан кейін жаңғырық "Дұрыс код атауын анықтау мүмкін болмады" 1 шығу fi wget https://apt.puppetlabs.com/puppetlabs-release-pc1-\$(код аты).deb dpkg -i puppetlabs-release-pc1-\$(код аты) .deb mkdir -p /etc/puppetlabs/puppet cat > /etc/puppetlabs/puppet/puppet.conf<қуыршақ сертификат белгісі host.example.com" жаңғырық "Түрлі себептерге байланысты сәтсіз болса, циклды тоқтату үшін CTRL+C пернелерін пайдаланыңыз" ұйқы 5 орындалды EOT

Модуль сипаттамасы

Бастапқы орнату сценарийі үшін Bash параметрлерінің толық тізімі

~# ./setup_puppetserver.sh Қолданылуы: ./setup_puppetserver.sh [ [ [ [] ] ] ]
  • r10k_repo_url - Git репозиторийінің URI коды
  • certname – хосттың толық жарамды домен атауы
  • cflocation - cf_location фактісін инициализациялау
  • cflocationpool - cf_location_pool фактісін инициализациялау
  • http_proxy - HTTP және HTTPS сұрауларына арналған прокси сервер

Puppet клиентін инициализациялау сценарийіне арналған Bash параметрлерінің толық тізімі

~# /root/genclientinit.sh Қолданылуы: ./genclientinit.sh [ [ []]]
Параметрлердің мағынасы алдыңғы сценарийдегідей.

cfpuppetserver сыныбы

  • deployuser = "deploypuppet" - конфигурация жаңартуларын автоматты түрде орналастыруға арналған пайдаланушы аты
  • deployuser_auth_keys = undef - $deployuser үшін кілттер тізімі
  • repo_url = undef - URI репозиторийі (мысалы: ssh://user@host/repo немесе file:///some/path)
  • puppetserver = true - осы түйінге қуыршақ сервері компонентін орнату керек пе
  • puppetdb = true - осы түйінге PuppetDB компонентін орнату керек пе
  • puppetdb_port = 8081 - PuppetDB порты
  • setup_postgresql = true - PostgreSQL компонентін осы түйінге орнату керек пе (тек PuppetDB орнату қосулы болса)
  • service_face = "кез келген" - кіріс қосылымдарды қабылдауға арналған cfnetwork::iface ресурсының атауы
  • puppetserver_mem = auto - Қуыршақ серверіне арналған жедел жады мегабайтпен (кемінде 192 МБ)
  • puppetdb_mem = auto - мегабайттағы PuppetDB үшін жедел жад (кемінде 192 МБ)
  • postgresql_mem = auto - PostgreSQL үшін жедел жады мегабайтпен (кемінде 128 МБ)

cfpuppetserver::puppetdb класы

  • postgresql_host = "localhost" - дерекқор мекенжайы
  • postgresql_listen = $postgresql_host - мән тікелей listen_addresses PostgreSQL директивасына өтеді
  • postgresql_port = 5432 - дерекқор порты
  • postgresql_user = "puppetdb" - дерекқордағы PuppetDB пайдаланушысы
  • postgresql_pass = "puppetdb" - дерекқордағы PuppetDB пайдаланушысының құпия сөзі
  • postgresql_ssl = false - Қуыршақ PKI сертификаттарына негізделген қосылым шифрлауын қосыңыз

класс cfpuppetserver::puppetserver

  • autosign = false - DMZ-ден басқа, ұрыс жағдайында ПАЙДАЛАНБАУ КЕРЕК. Тек сынақты автоматтандыру үшін бар.
  • global_hiera_config = "cfpuppetserver/hiera.yaml" - Қуыршақ канондарына сәйкес әдепкі Hiera конфигурация файлына жол (бірінші компонент модульдің аты, қалғаны модульдегі файлдар/қалта астындағы жол)

Сіз сайтты дамытуға көмектесіп, біраз қаражат аудара аласыз



Unix жүйелерінің көп санын басқаруды ыңғайлы деп атауға болмайды. Бір параметрді өзгерту үшін әкімші әрбір құрылғымен байланысуы керек; сценарийлер барлық жағдайларда емес, ішінара ғана көмектесе алады.

Windows желілік әкімшілері әлі де тиімдірек жағдайда екенін мойындау керек. Топтық саясат параметрлерін өзгерту жеткілікті және біраз уақыттан кейін желідегі барлық компьютерлер, соның ішінде жақында орнатылған операциялық жүйесі бар компьютерлер, әрине, егер оларға қатысты болса, инновация туралы «үйренеді». Unix дамуының ұзақ кезеңіне көз жүгіртсеңіз, мұндай ештеңе ешқашан қолға алынбағанын байқайсыз. Бастапқы орнатуға көмектесетін kickstart сияқты шешімдер бар операциялық жүйе, бірақ одан әрі нақтылау айтарлықтай күш-жігерді қажет етеді. BladeLogic және OpsWare сияқты коммерциялық шешімдер параметрлерді автоматтандыру мәселесін тек ішінара шешеді; олардың басты артықшылығы - қолжетімділік. GUI, және оларды тек ірі ұйымдардан сатып алуға болады. Әрине, тегін шешімдерді ұсынатын жобалар бар, бірақ олар өмір бойы үлкен қауымдастық құра алмады. Мысалы, Cfengine әкімшілер арасында онша танымал емес, дегенмен Linux-тен басқа, оны *BSD, Windows және Mac OS X жүйелерінде қолдануға болады. Бұл конфигурацияларды жасаудың салыстырмалы күрделілігіне байланысты болуы мүмкін. Тапсырмаларды сипаттау кезінде әрбір нақты жүйенің ерекшеліктерін ескеру керек және командаларды орындау кезінде әрекеттер тізбегін қолмен басқару керек. Яғни, әкімші кейбір жүйелер үшін басқалары үшін adduser, useradd жазу, әртүрлі жүйелердегі файлдардың орналасуын ескеру және т.б. Бұл пәрмендердің жазылу процесін магнитудасы бойынша қиындатады, дұрыс конфигурацияны жылдам жасау өте қиын, ал жасалған конфигурацияларды біраз уақыттан кейін оқу мүмкін емес. GPL лицензиясына қарамастан, Cfengine - бұл барлық өзгерістерді бақылайтын және ашық қоғам құруға аса қызығушылық танытпайтын бір адамдық жоба. Нәтижесінде cfengine мүмкіндіктері әзірлеуші ​​үшін өте қанағаттанарлық, бірақ басқа әкімшілер үшін бұл қосымша бас ауруы. Cfengine-ді жақсарту үшін үшінші тарап әзірлеушілері әртүрлі қондырмаларды жасады, бұл көбінесе жағдайды нашарлатты. Cfengine-ге арналған бірнеше осындай модульдердің авторы Люк Канис ақырында ұқсас құралды әзірлеуге шешім қабылдады, бірақ cfengine-дің көптеген кемшіліктері жоқ.

Қуыршақ ерекшеліктері

Қуыршақ, cfengine сияқты, декларативті, яғни тапсырмаларды және оларды орындау үшін кітапханаларды сипаттау үшін міндетті тілді қолданатын клиент-сервер жүйесі. Клиенттер мезгіл-мезгіл (әдепкі бойынша 30 минут) орталық серверге қосылып, соңғы конфигурацияны алады. Алынған баптаулар жүйе күйіне сәйкес келмесе, олар орындалады, қажет болған жағдайда серверге орындалған операциялар туралы есеп жіберіледі. Сервер хабарламаларды жүйе журналына немесе файлға сақтай алады, RRD графигін жасай алады және оларды көрсетілген электрондық поштаға жібере алады. Қосымша транзакциялық және ресурстарды абстракциялау деңгейлері бар параметрлермен және қолданбалармен максималды үйлесімділікті қамтамасыз етеді, бұл егжей-тегжейлі пәрмендер мен файл пішімдерін орындау мен сипаттаудағы айырмашылықтар туралы алаңдамай жүйе нысандарына назар аударуға мүмкіндік береді. Әкімші тек нысан түрімен жұмыс істейді, қалғанын қуыршақ шешеді. Осылайша, пакеттер түрі шамамен 17 пакеттік жүйені біледі; қажет болған жағдайда тарату немесе жүйе нұсқасы туралы ақпарат негізінде автоматты түрде танылады, бірақ қажет болған жағдайда пакет менеджерін мәжбүрлеуге болады.

Басқа жүйелерде жиі пайдалану мүмкін емес сценарийлерден айырмашылығы, үшінші тарап әкімшілері жазған қуыршақ конфигурациялары, көп жағдайда, кез келген басқа желіде ақаусыз жұмыс істейді. Қуыршақ аспаздық кітабында [ http://www.reductivelabs.com/trac/puppet/tags/puppet%2Crecipe] қазірдің өзінде үш ондаған дайын рецепттер бар. Қуыршақ қазіргі уақытта келесі операциялық жүйелер мен қызметтерді ресми түрде қолдайды: Debian, RedHat/Fedora, Solaris, SUSE, CentOS, Mac OS X, OpenBSD, Gentoo және MySQL, LDAP.

Қуыршақ тілі

Алға жылжу үшін алдымен тілдің негізгі элементтері мен мүмкіндіктерін түсіну керек. Тіл – соның бірі күшті жақтарыҚуыршақ. Оның көмегімен әкімші басқаруды жоспарлайтын ресурстар мен әрекеттер сипатталады. Көптеген ұқсас шешімдерден айырмашылығы, қуыршақ тілге гетерогенді ортадағы кез келген жүйедегі барлық ұқсас ресурстарға қол жеткізуді жеңілдетуге мүмкіндік береді. Ресурс сипаттамасы әдетте атаудан, түрден және атрибуттардан тұрады. Мысалы, /etc/passwd файлын көрсетіп, оның атрибуттарын орнатайық:

файл("/etc/passwd":

иесі => түбір,

топ => түбір,

Енді клиенттер серверге қосылғаннан кейін /etc/passwd файлын көшіріп, көрсетілген атрибуттарды орнатады. Бірнеше ресурстарды нүктелі үтір арқылы бөліп, бір ережеде анықтауға болады. Серверде қолданылатын конфигурация файлы клиенттікінен өзгеше болса немесе мүлде пайдаланылмаса не істеу керек? Мысалы, бұл жағдай VPN қосылымдарын орнату кезінде туындауы мүмкін. Бұл жағдайда файлды бастапқы директиваны пайдалану арқылы көрсетуге болады. Мұнда әдеттегідей басқа файлға жолды көрсетудің екі нұсқасы бар; екі URI протоколына да қолдау көрсетіледі: файл және қуыршақ. Бірінші жағдайда сыртқы NFS серверіне сілтеме пайдаланылады, екінші нұсқада ресурстарды экспорттайтын Қуыршақ серверінде NFS тәрізді қызмет іске қосылады. Соңғы жағдайда әдепкі жол қуыршақ түбірлік каталогына қатысты - /etc/puppet. Яғни, puppet://server.domain.com/config/sshd_config сілтемесі /etc/puppet/config/sshd_config файлына сәйкес болады. Бұл каталогты filebucket директивасы арқылы қайта анықтауға болады, дегенмен /etc/puppet/fileserver.conf файлында бір аттас бөлімді пайдалану дұрысырақ. Бұл жағдайда сіз белгілі бір мекенжайлардан ғана қызметке кіруді шектей аласыз. Мысалы, конфигурация бөлімін сипаттайық.

жол /var/puppet/config

*.domain.com рұқсат етіңіз

рұқсат 192.168.0.*

192.168.1.0/24 рұқсат етіңіз

*.wireless.domain.com

Содан кейін ресурсты сипаттау кезінде осы бөлімге жүгінеміз.

көзі => "puppet://server.domain.com/config/sshd_config"

Қос нүктенің алдында - ресурс атауы. Ең қарапайым жағдайларда лақап атты немесе айнымалыларды атау ретінде көрсетуге болады. Бүркеншік ат директивасының көмегімен орнатылады. файлға толық жол. Неғұрлым күрделі конфигурацияларда

файл("/etc/passwd":

бүркеншік ат => passwd

Бүркеншік ат жасаудың тағы бір нұсқасы әртүрлі операциялық жүйелермен жұмыс істеу керек болғанда жақсы. Мысалы, sshd_config файлын сипаттайтын ресурс жасайық:

файл(sshdconfig:

аты => $ операциялық жүйе ? (

solaris => "/usr/local/etc/ssh/sshd_config",

әдепкі => "/etc/ssh/sshd_config"

Бұл мысалда біз таңдау алдында тұрмыз. Solaris файлы бөлек көрсетілген, қалғандары үшін /etc/ssh/sshd_config файлы таңдалады. Енді бұл ресурсқа sshdconfig ретінде кіруге болады, операциялық жүйеге байланысты қажетті жол таңдалады. Мысалы, егер sshd демоны жұмыс істеп тұрса және жаңа файл алынса, қызметті қайта іске қосу керек екенін көрсетеміз.

қамтамасыз ету => шын,

жазылу => Файл

Айнымалылар пайдаланушы деректерімен жұмыс істегенде жиі пайдаланылады. Мысалы, біз пайдаланушының үй каталогтарының орнын сипаттаймыз:

$homeroot = "/үй"

Енді белгілі бір пайдаланушының файлдарына қол жеткізуге болады

$(homeroot)/$name

$name параметрі пайдаланушы тіркелгі атымен толтырылады. Кейбір жағдайларда кейбір түр үшін әдепкі мәнді анықтау ыңғайлы. Мысалы, exec түрі үшін олар жиі орындалатын файлды іздеу керек каталогтарды көрсетеді:

Exec (жол => "/usr/bin:/bin:/usr/sbin:/sbin")

Бірнеше кірістірілген файлдар мен каталогтарды көрсету қажет болса, recurse параметрін пайдалануға болады.

file("/etc/apache2/conf.d":

көзі => “қуыршақ:// қуыршақ://server.domain.com/config/apache/conf.d”,

қайталау => «шын»

Бірнеше ресурстарды сыныптарға немесе анықтамаларға біріктіруге болады. Сыныптар жүйенің немесе қызметтің толық сипаттамасы болып табылады және бөлек пайдаланылады.

"/etc/passwd": иесі => түбір, топ => түбір, режим => 644;

"/etc/shadow": иесі => түбір, топ => түбір, режим => 440

Объектіге-бағытталған тілдердегідей, сыныптарды қайта анықтауға болады. Мысалы, FreeBSD-де бұл файлдардың топ иесі дөңгелек болып табылады. Сондықтан ресурсты толығымен қайта жазбау үшін Linux класын иеленетін жаңа freebsd сыныбын жасайық:

freebsd класы linux мұрагері (

Файл[“/etc/passwd”] (топ => дөңгелек );

Файл[“/etc/shadow”] (топ => дөңгелек )

Ыңғайлы болу үшін барлық сыныптарды қосу директивасы арқылы қосуға болатын бөлек файлға орналастыруға болады. Анықтамалар аргументтер ретінде бірнеше параметрді қабылдай алады, бірақ мұраға қолдау көрсетпейді және қайта пайдалануға болатын нысандарды сипаттау қажет болғанда пайдаланылады. Мысалы, пайдаланушылардың үй каталогын және жаңа тіркелгі жасау үшін қажетті пәрмендерді анықтайық.

user_homedir анықтаңыз ($топ, $толық аты, $ingroups) (

user("$name":

қамтамасыз ету => бар,

түсініктеме => "$толық аты",

gid => "$топ",

топтар => $топтар,

мүшелік => ең аз,

shell => "/bin/bash",

үй => "/home/$name",

талап => Group[$group],

exec («$name homedir»:

пәрмен => “/bin/cp -R /etc/skel /home/$name; /bin/chown -R $name:$топ /үй/$атауы,

жасайды => "/home/$name",

=> User[$name] талап етеді,

Енді жаңасын жасау есептік жазбажай ғана user_homedir хабарласыңыз.

user_homedir("sergej":

group => "sergej",

толық аты-жөні => «Сергей Жаремчук»,

ішкі топтар => ["медиа", "әкімші]

Сыныптар сияқты мұраны қолдайтын түйіндердің жеке сипаттамалары бар. Клиент Қуыршақ серверіне қосылғанда, сәйкес түйін бөлімі ізделеді және тек осы компьютерге тән параметрлер беріледі. Барлық басқа жүйелерді сипаттау үшін әдепкі түйінді пайдалануға болады. Барлық түрлердің сипаттамасы «Түр туралы анықтама» құжатында берілген, оны кез келген жағдайда, кем дегенде, қуыршақ тілінің барлық мүмкіндіктерін түсіну үшін оқу керек. Әртүрлі түрлерікөрсетілген пәрмендерді орындауға мүмкіндік береді, соның ішінде белгілі бір шарттар орындалғанда (мысалы, конфигурация файлын өзгерту), cron, пайдаланушы тіркелгі деректерімен және топтарымен, компьютерлермен жұмыс істеу, монтаждау ресурстары, қызметтерді іске қосу және тоқтату, пакеттерді орнату, жаңарту және жою, жұмыс бірге SSH кілттері, Solaris аймақтары және т.б. Күн сайын 2 және 4 сағат арасында жаңартылатын apt көмегімен дистрибутивтердегі бумалар тізімін мәжбүрлеу оңай.

кесте (күнделікті:

кезең => күнделікті,

диапазон =>

exec("/usr/bin/apt-get update":

кесте => күнделікті

Осы кезеңдегі жаңартуды әрбір жүйе тек бір рет орындайды, содан кейін тапсырма орындалды деп есептеледі және клиенттік компьютерден жойылады. Қуыршақ тілі басқа таныс құрылымдарды қолдайды: шарттар, функциялар, массивтер, түсініктемелер және т.б.

Қуыршақты орнату

Қуыршаққа OpenSSL қолдауы бар Ruby (>= 1.8.1) және XMLRPC кітапханалары, сонымен қатар Faster кітапханасы қажет [ http://reductivelabs.com/projects/facter]. Сынақ орнату үшін пайдаланылған Ubuntu 7.04 репозиторийінде күшік пакеті бар.

$ sudo apt-cache іздеу қуыршақ

қуыршақ — желілер үшін орталықтандырылған конфигурацияны басқару

puppetmaster - конфигурацияны басқарудың орталықтандырылған демоны

Орнату кезінде барлық қажетті тәуелділік бумалары орнатылады: facter libopenssl-ruby libxmlrpc-ruby.

$ sudo apt-get орнату қуыршақ қуыршақ шебері

Сіз Ruby кітапханаларының қолжетімділігін пәрмен арқылы тексере аласыз.

$ ruby ​​-ropenssl -e "қойды: иә"

~$ ruby ​​-rxmlrpc/client -e "puts:yep"

Ешқандай қателер алынбаса, сізге қажет нәрсенің бәрі қазірдің өзінде қамтылған. Жүйелердің қажетті конфигурациясын сипаттайтын файлдар қуыршақ терминологиясында манифесттер деп аталады. Іске қосылған кезде демон /etc/puppet/manifests/site.pp файлын оқуға тырысады, егер ол жоқ болса, ол ескерту хабарын көрсетеді. Тестілеу кезінде сіз демонға офлайн режимде жұмыс істеуді айта аласыз, бұл жағдайда манифест қажет емес.

$ sudo /usr/bin/puppetmasterd --nonodes

Қажет болса, басқа файлдарды site.pp файлына қосуға болады, мысалы, сынып сипаттамаларымен. Сынақ іске қосу үшін осы файлға ең қарапайым нұсқауларды енгізуге болады.

файл("/etc/sudoers":

иесі => түбір,

топ => түбір,

Серверге де, клиенттерге де арналған барлық конфигурация файлдары /etc/puppet ішінде орналасқан. Жоғарыда біз айтқан fileserver.conf файлы міндетті емес және Қуыршақ файл сервері ретінде де жұмыс істейтін болса ғана пайдаланылады. Ubuntu жүйесінде бұл файл /etc/puppet/files ішкі каталогын экспорттайды. ssl ішкі каталогында клиенттерді қосу кезінде шифрлау үшін пайдаланылатын сертификаттар мен кілттер бар. Пернелер puppetmasterd бірінші рет іске қосылғанда автоматты түрде жасалады; оларды пәрмен арқылы қолмен жасауға болады.

$ sudo /usr/bin/ puppetmasterd --mkusers.

puppetd.conf және puppetmasterd.conf файлдары ұқсас. Олар клиенттік жүйе мен сервердегі демондардың жұмыс істеуінің кейбір параметрлерін көрсетеді. Клиенттік файл тек puppetmasterd жұмыс істеп тұрған компьютерді көрсететін сервер параметрінің болуымен ғана ерекшеленеді.

сервер = grinder.com

logdir = /var/log/қуыршақ

vardir = /var/lib/қуыршақ

rundir = /var/run

# серверге есеп жіберу

Барлығын қолмен термеу үшін, puppetd көмегімен үлгі жасауға болады.

$ puppetd --genconfig > /etc/puppet/puppetd.conf

Сол сияқты серверде site.pp жасай аласыз.

$ puppetd --genmanifest > /etc/puppet/manifests/site.pp

Басқа файл, tagmail.conf, есептер жіберілетін электрондық пошта мекенжайларын көрсетуге мүмкіндік береді. Ең қарапайым жағдайда сіз бір жолды пайдалана аласыз.

барлық: [электрондық пошта қорғалған]

Конфигурация файлдары клиенттің серверге қосылуы үшін жеткіліксіз. Ол үшін сертификаттарға да қол қою қажет. Алдымен серверге клиенттік жүйедегі жаңа компьютер туралы хабарлау үшін пәрменді енгізіңіз:

$ sudo puppetd --server grinder.com --waitforcert 60 --test

ақпарат: сертификатты сұрау

ескерту: осы SSL сеансында серіктес сертификаты тексерілмейді

ескерту: сертификат алған жоқ

Егер басқа жол қайтарылса, сервер жұмысын тексеру керек.

$ps aux | grep қуыршақ

қуыршақ 5779 0,0 1,4 27764 15404 ? Ssl 21:49 0:00 ruby ​​/usr/sbin/puppetmasterd

Брандмауэр 8140 портындағы қосылымдарға рұқсат беруі керек.

Серверде қол қою қажет сертификаттар тізімін аламыз.

$ sudo puppetca - тізім

nomad.grinder.com

Біз клиент сертификатына қол қоямыз.

$ sudo puppetca – nomad.grinder.com белгісі

Енді клиент серверге еркін қосылып, параметрлерді қабылдай алады.

Өкінішке орай, мақалада Puppet-тің барлық мүмкіндіктерін көрсету мүмкін емес. Бірақ көріп отырғаныңыздай, бұл көптеген жүйелерді бір уақытта басқару мәселелерінің көпшілігін шешуге мүмкіндік беретін функционалды және икемді құрал. Егер сіздің жұмысыңыз бірнеше жүйені орнатуды талап етсе. Ең бастысы, жоба шағын, бірақ үнемі өсіп келе жатқан қауымдастықты жинай алды. Сондықтан жақсы ойдың өліп кетуіне, шетке кетуіне жол берілмесе екен деп тілейік.

Қуыршақмүмкіндік беретін кросс-платформалық құрылым болып табылады жүйелік әкімшілерКодты пайдаланып жалпы тапсырмаларды орындаңыз. Код жаңа бағдарламаларды орнатудан бастап файл рұқсаттарын тексеруге немесе пайдаланушы тіркелгілерін жаңартуға дейін әртүрлі тапсырмаларды орындауға мүмкіндік береді. Қуыршақжүйені бастапқы орнату кезінде ғана емес, жүйенің бүкіл өмірлік циклі бойынан жоғары. Көп жағдайда қуыршақклиент/сервер конфигурациясында қолданылады.

Бұл бөлім орнату мен конфигурацияны көрсетеді Қуыршақклиент/сервер конфигурациясында. Бұл қарапайым мысал орнату жолын көрсетеді Апачиқолдану Қуыршақ.

Орнату

Орнату үшін Қуыршақтерминалға енгізіңіз:

Sudo apt-get орнату қуыршақ шебері

Клиенттік машиналарда мынаны енгізіңіз:

Sudo apt-get орнату қуыршақ

Параметрлер

Қуыршақты орнатпас бұрын жазба қосқыңыз келуі мүмкін DNS CNAMEҮшін puppet.example.com, Қайда example.com- бұл сіздің доменіңіз. Әдепкі клиенттер Қуыршақ puppet.example.com үшін DNS-ті қуыршақ сервер атауы ретінде тексеріңіз ( Қуыршақ шебері). DNS пайдалану туралы қосымша мәліметтерді Домендік атаулар қызметі бөлімінен қараңыз.

DNS пайдалануды қаламасаңыз, сервер мен клиенттегі /etc/hosts файлына жазбаларды қосуға болады. Мысалы, /etc/hosts файлында Қуыршақсервер қосу:

127.0.0.1 localhost.localdomain localhost қуыршақ 192.168.1.17 meercat02.example.com meercat02

Әр күні ҚуыршақКлиентте сервер үшін жазба қосыңыз:

192.168.1.16 meercat.example.com meercat қуыршақ

IP мекенжайларын ауыстырыңыз және домендік атаулармысалдан сервер мен клиенттердің ағымдағы мекенжайлары мен атауларына дейін.

Енді кейбір ресурстарды реттейік apache2. Файл жасау /etc/puppet/manifests/site.ppмыналарды қамтиды:

Пакет ( "apache2": қамтамасыз ету => орнатылған) қызметі ( "apache2": қамтамасыз ету => ақиқат, қосу => шын, талап => Пакет["apache2"] )

"meercat02.example.com" түйіні (apache2 кіреді)

Ауыстыру meercat02.example.comқазіргі атыңызға Қуыршақклиент.

Бұл қарапайым үшін соңғы қадам Қуыршақсервер қызметті қайта іске қосуы керек:

Sudo /etc/init.d/puppetmaster қайта іске қосылады

Енді Қуыршақбарлығы серверде конфигурацияланған және клиентті конфигурациялау уақыты келді.

Алдымен қызметті конфигурациялайық Қуыршақіске қосу үшін агент. Мәнді ауыстыра отырып, /etc/default/puppet өңдеңіз БАСТАУқосулы иә:

Sudo /etc/init.d/puppet бастау

Қайта оралайық Қуыршақкелесі пәрменді пайдаланып клиент сертификатына қол қою үшін сервер:

Sudo puppetca - meercat02.example.com белгісі

Тексеру /var/log/syslogкез келген конфигурация қателері үшін. Егер бәрі жақсы болса, пакет apache2және оның тәуелділіктері орнатылады Қуыршақклиент.

Бұл мысал өте қарапайым және көптеген мүмкіндіктер мен артықшылықтарды көрсетпейді. Қуыршақ. Үшін Қосымша Ақпаратқара

Сергей Яремчук

Puppet көмегімен UNIX жүйелерінің орталықтандырылған конфигурациясы

UNIX жүйелерінің көп санын басқаруды ыңғайлы деп атауға болмайды. Бір параметрді өзгерту үшін әкімші әрбір құрылғымен байланысуы керек; сценарийлер барлық жағдайларда емес, ішінара ғана көмектесе алады.

Windows желілік әкімшілері әлі де тиімдірек жағдайда екенін мойындау керек. Топтық саясат параметрлерін өзгерту жеткілікті, және біраз уақыттан кейін желідегі барлық компьютерлер, оның ішінде жақында орнатылған операциялық жүйесі бар компьютерлер, әрине, егер оларға қатысты болса, инновация туралы «үйренеді». UNIX дамуының ұзақ кезеңіне көз жүгіртсек, мұндай ешнәрсе бұрын-соңды болмағанын көруге болады. Операциялық жүйені бастапқы орнатуға көмектесетін kickstart сияқты шешімдер бар, бірақ одан әрі дамыту үшін айтарлықтай күш қажет. BladeLogic және OpsWare сияқты коммерциялық шешімдер параметрлерді автоматтандыру мәселесін тек ішінара шешеді; олардың басты артықшылығы графикалық интерфейстің болуы болып табылады және оларды тек ірі ұйымдар сатып ала алады. Әрине, тегін шешімдерді ұсынатын жобалар бар, бірақ олар бар болған кезде үлкен қауымдастық құра алмады. Мысалы, Cfengine әкімшілер арасында өте танымал емес, дегенмен Linux-тан басқа, оны *BSD, Windows және Mac OS X жүйелерінде қолдануға болады. Бұл конфигурацияларды жасаудың салыстырмалы күрделілігіне байланысты болуы мүмкін. Тапсырмаларды сипаттау кезінде әрбір нақты жүйенің сипаттамаларын ескеру және командаларды орындау кезінде әрекеттер тізбегін қолмен басқару қажет. Яғни, әкімші есте сақтауы керек, кейбір жүйелер үшін adduser жазу керек, басқалары үшін - useradd, әртүрлі жүйелердегі файлдардың орналасуын ескеру және т.б. Бұл пәрмендердің жазылу процесін магнитудасы бойынша қиындатады, дұрыс конфигурацияны жылдам жасау өте қиын, ал жасалған конфигурацияларды біраз уақыттан кейін оқу мүмкін емес. GPL лицензиясына қарамастан, Cfengine - бұл барлық өзгерістерді бақылайтын және ашық қоғам құруға аса қызығушылық танытпайтын бір адамдық жоба. Нәтижесінде Cfengine мүмкіндіктері әзірлеуші ​​үшін өте қанағаттанарлық, бірақ басқа әкімшілер үшін бұл қосымша бас ауруы. Cfengine-ді жақсарту үшін үшінші тарап әзірлеушілері әртүрлі қондырмаларды жасады, бұл көбінесе жағдайды нашарлатты. Cfengine-ге арналған бірнеше осындай модульдердің авторы Люк Канис, сайып келгенде, ұқсас құралды әзірлеуге шешім қабылдады, бірақ Cfengine-дің көптеген кемшіліктері жоқ.

Қуыршақ ерекшеліктері

Қуыршақ, Cfengine сияқты, тапсырмаларды және оларды жүзеге асыру үшін кітапханаларды сипаттау үшін декларативті тілді пайдаланатын клиент-сервер жүйесі. Клиенттер мезгіл-мезгіл (әдепкі бойынша 30 минут сайын) орталық серверге қосылып, соңғы конфигурацияны алады. Алынған баптаулар жүйе күйіне сәйкес келмесе, олар орындалады, қажет болған жағдайда серверге орындалған операциялар туралы есеп жіберіледі. Хабарлама сервері оны жүйе журналына немесе файлға сақтай алады, RRD графигін жасап, көрсетілген электрондық поштаға жібере алады. Қосымша транзакциялық және ресурстарды абстракциялау деңгейлері бар параметрлермен және қолданбалармен максималды үйлесімділікті қамтамасыз етеді, бұл егжей-тегжейлі пәрмендер мен файл пішімдерін орындаудағы және сипаттаудағы айырмашылықтар туралы алаңдамай жүйе нысандарына назар аударуға мүмкіндік береді. Әкімші тек нысан түрімен жұмыс істейді, қалғанын қуыршақ шешеді. Осылайша, пакеттер түрі шамамен 17 пакеттік жүйені біледі; қажет болған жағдайда тарату немесе жүйе нұсқасы туралы ақпарат негізінде автоматты түрде танылады, бірақ қажет болған жағдайда пакет менеджерін мәжбүрлеп орнатуға болады.

Басқа жүйелерде жиі пайдалану мүмкін емес сценарийлерден айырмашылығы, үшінші тарап әкімшілері жазған қуыршақ конфигурациялары басқа желіде еш қиындықсыз жұмыс істейді. Қуыршақ аспаздық кітабында қазірдің өзінде үш ондаған дайын рецепттер бар. Қуыршақ қазіргі уақытта келесі операциялық жүйелер мен қызметтерді ресми түрде қолдайды: Debian, RedHat/Fedora, Solaris, SUSE, CentOS, Mac OS X, OpenBSD, Gentoo және MySQL, LDAP.

Қуыршақ тілі

Алға жылжу үшін алдымен тілдің негізгі элементтері мен мүмкіндіктерін түсіну керек. Тіл - Қуыршақтың күшті жақтарының бірі. Ол әкімші басқаруды жоспарлайтын ресурстарды және олар жасайтын әрекеттерді сипаттайды. Көптеген ұқсас шешімдерден айырмашылығы, қуыршақ тілге гетерогенді ортадағы кез келген жүйедегі барлық ұқсас ресурстарға қол жеткізуді жеңілдетуге мүмкіндік береді. Ресурс сипаттамасы әдетте атаудан, түрден және атрибуттардан тұрады. Мысалы, /etc/passwd файлын көрсетіп, оның атрибуттарын орнатайық:

файл("/etc/passwd":

Иесі => түбір,

Топ => түбір,

Режим => 644,

Енді серверге қосылатын клиенттер /etc/passwd файлын көшіріп, көрсетілген атрибуттарды орнатады. Бірнеше ресурстарды нүктелі үтір арқылы бөліп, бір ережеде анықтауға болады. Бірақ серверде пайдаланылатын конфигурация файлы клиенттік файлдардан өзгеше болса немесе мүлде пайдаланылмаса ше? Мысалы, бұл жағдай VPN қосылымдарын орнату кезінде туындауы мүмкін. Бұл жағдайда бастапқы директиваны пайдаланып файлды көрсету керек. Мұнда екі опция бар; сіз әдеттегідей басқа файлға жолды көрсете аласыз, сонымен қатар екі қолдау көрсетілетін URI протоколдарын пайдалана аласыз: файл және қуыршақ. Бірінші жағдайда сыртқы NFS серверіне сілтеме пайдаланылады, екінші нұсқада ресурстарды экспорттайтын Қуыршақ серверінде NFS тәрізді қызмет іске қосылады. Соңғы жағдайда әдепкі жол қуыршақ түбірлік каталогына қатысты – /etc/puppet. Яғни, puppet://server.domain.com/config/sshd_config сілтемесі /etc/puppet/config/sshd_config файлына сәйкес болады. Бұл каталогты filebucket директивасы арқылы қайта анықтауға болады, дегенмен /etc/puppet/fileserver.conf файлында бір аттас бөлімді пайдалану дұрысырақ. Бұл жағдайда қызметке қол жеткізуді тек белгілі бір мекенжайларға шектеуге болады. Мысалы, конфигурация бөлімін сипаттайық:

Жол /var/puppet/config

*.domain.com сайтына рұқсат беріңіз

127.0.0.1 рұқсат ету

192.168.0.* рұқсат ету

192.168.1.0/24 рұқсат ету

*.wireless.domain.com

Содан кейін ресурсты сипаттау кезінде осы бөлімге жүгінеміз:

көзі => "puppet://server.domain.com/config/sshd_config"

Қос нүктенің алдында - ресурс атауы. Ең қарапайым жағдайларда файлдың толық жолын атау ретінде көрсетуге болады. Неғұрлым күрделі конфигурацияларда бүркеншік атты немесе айнымалы мәндерді қолданған дұрыс. Бүркеншік ат директива арқылы орнатылады:

файл("/etc/passwd":

Бүркеншік ат => passwd

Бүркеншік ат жасаудың тағы бір нұсқасы әртүрлі операциялық жүйелермен жұмыс істеу керек болғанда жақсы. Мысалы, sshd_config файлын сипаттайтын ресурс жасайық:

файл(sshdconfig:

Атауы => $operatingsystem? (

Solaris => "/usr/local/etc/ssh/sshd_config",

Әдепкі => "/etc/ssh/sshd_config"

Бұл мысалда біз таңдау алдында тұрмыз. Solaris файлы бөлек көрсетілген, қалғандары үшін /etc/ssh/sshd_config файлы таңдалады. Енді бұл ресурсқа sshdconfig ретінде кіруге болады, операциялық жүйеге байланысты қажетті жол таңдалады. Мысалы, егер sshd демоны жұмыс істеп тұрса және жаңа файл алынса, қызметті қайта іске қосу керек екенін көрсетеміз:

қызмет (sshd:

=> шындығына көз жеткізіңіз,

Жазылу => Файл

Айнымалылар пайдаланушы деректерімен жұмыс істегенде жиі пайдаланылады. Мысалы, біз пайдаланушының үй каталогтарының орнын сипаттаймыз:

$homeroot = "/үй"

Енді белгілі бір пайдаланушының файлдарына келесідей қол жеткізуге болады:

$(homeroot)/$name

$name параметрі пайдаланушы тіркелгі атымен толтырылады. Кейбір жағдайларда кейбір түр үшін әдепкі мәнді анықтау ыңғайлы. Мысалы, exec түрі үшін орындалатын файлды іздеу керек каталогтарды көрсету жиі кездеседі:

Exec (жол => "/usr/bin:/bin:/usr/sbin:/sbin")

Бірнеше кірістірілген файлдар мен каталогтарды көрсету қажет болса, recurse параметрін пайдалануға болады:

file("/etc/apache2/conf.d":

Source => "қуыршақ:// puppet://server.domain.com/config/apache/conf.d",

Рекурсия => «шын»

Бірнеше ресурстарды сыныптарға немесе анықтамаларға біріктіруге болады. Сыныптар жүйенің немесе қызметтің толық сипаттамасы болып табылады және олар бөлек пайдаланылады:

Linux класы (

Файл (

"/etc/passwd": иесі => түбір, топ => түбір, режим => 644;

"/etc/shadow": иесі => түбір, топ => түбір, режим => 440

Объектіге-бағытталған тілдердегідей, сыныптарды қайта анықтауға болады. Мысалы, FreeBSD-де бұл файлдардың топ иесі дөңгелек болып табылады. Сондықтан ресурсты толығымен қайта жазбау үшін Linux класын иеленетін жаңа freebsd сыныбын жасайық:

freebsd класы linux мұрагері (

Файл["/etc/passwd"] (топ => дөңгелек );

Файл["/etc/shadow"] (топ => дөңгелек )

Ыңғайлы болу үшін барлық сыныптарды қосу директивасы арқылы қосу керек жеке файлға орналастыруға болады. Анықтамалар аргументтер ретінде бірнеше параметрді қабылдай алады, бірақ мұраға қолдау көрсетпейді және қайта пайдалануға болатын нысандарды сипаттау қажет болғанда пайдаланылады. Мысалы, пайдаланушының үй каталогын және жаңа тіркелгі жасау үшін қажетті пәрмендерді анықтайық:

user_homedir анықтаңыз ($топ, $толық аты, $ingroups) (

Пайдаланушы («$name»:

=> бар екеніне көз жеткізіңіз,

Түсініктеме => "$толық аты",

Gid => "$топ",

Топтар => $inggroups,

Мүшелік => минимум,

Shell => "/bin/bash",

Үй => "/home/$name",

=> Group[$group] талап етеді,

Exec («$name homedir»:

Пәрмен => "/bin/cp -R /etc/skel /home/$name; /bin/chown -R $name:$group /home/$name",

=> "/home/$name", жасайды

=> User[$name] талап етеді,

Енді жаңа тіркелгі жасау үшін user_homedir-ге хабарласыңыз:

user_homedir("sergej":

Топ => "sergej",

Толық аты-жөні => «Сергей Яремчук»,

Ішкі топтар => ["медиа", "әкімші]

Тұқым қуалауды қолдайтын түйіндердің, сондай-ақ сыныптардың жеке сипаттамалары бар. Клиент Қуыршақ серверіне қосылғанда, сәйкес түйін бөлімі ізделеді және тек осы компьютерге тән параметрлер беріледі. Барлық басқа жүйелерді сипаттау үшін әдепкі түйінді пайдалануға болады. Барлық түрлердің сипаттамасы «Түр туралы анықтама» құжатында берілген, оны кез келген жағдайда, кем дегенде, қуыршақ тілінің барлық мүмкіндіктерін түсіну үшін оқу керек. Түрлі түрлер көрсетілген пәрмендерді орындауға мүмкіндік береді, соның ішінде белгілі бір шарттар орындалғанда (мысалы, конфигурация файлын өзгерту), cron, пайдаланушының тіркелгі деректерімен және топтарымен, компьютерлермен жұмыс істеу, ресурстарды орнату, қызметтерді іске қосу және тоқтату, пакеттерді орнату, жаңарту және жою. , SSH кілттерімен, Solaris аймақтарымен жұмыс істеу және т.б. Осылайша, күнделікті 2 және 4 сағат арасында жаңартылатын apt көмегімен дистрибутивтердегі пакеттер тізімін оңай мәжбүрлей аласыз:

кесте (күнделікті:

Мерзімі => күнделікті,

Ауқым =>

exec("/usr/bin/apt-get update":

Кесте => күн сайын

Осы кезеңдегі жаңартуды әрбір жүйе тек бір рет орындайды, содан кейін тапсырма орындалды деп есептеледі және клиенттік компьютерден жойылады. Қуыршақ тілі басқа таныс құрылымдарды қолдайды: шарттар, функциялар, массивтер, түсініктемелер және т.б.

Қуыршақты орнату

Қуыршаққа OpenSSL қолдауы бар Ruby (1.8.1 және одан жоғары нұсқасы) және XMLRPC кітапханалары, сондай-ақ Faster кітапханасы қажет. Сынақ орнату үшін пайдаланылған Ubuntu 7.04 репозиторийінде күшік пакеті бар:

$ sudo apt-cache іздеу қуыршақ

~$ ruby ​​-rxmlrpc/client -e "puts:yep"

иә

Ешқандай қателер алынбаса, сізге қажет нәрсенің бәрі қазірдің өзінде қамтылған. Жүйелердің қажетті конфигурациясын сипаттайтын файлдар қуыршақ терминологиясында манифесттер деп аталады. Іске қосылған кезде демон /etc/puppet/manifests/site.pp файлын оқуға тырысады, егер ол жоқ болса, ол ескерту хабарын көрсетеді. Тестілеу кезінде сіз демонға манифестті қажет етпейтін дербес режимде жұмыс істеуін айта аласыз:

$ sudo /usr/bin/puppetmasterd --nonodes

Қажет болса, басқа файлдарды site.pp файлына қосуға болады, мысалы, сынып сипаттамаларымен. Сынақ іске қосу үшін осы файлға ең қарапайым нұсқауларды енгізуге болады.

sudo класы (

Файл("/etc/sudoers":

Иесі => түбір,

Топ => түбір,

Режим => 440,

түйін әдепкі (

sudo қосыңыз

Барлық конфигурация файлдары, сервер де, клиент те /etc/puppet ішінде орналасқан. Біз бұрын айтқан fileserver.conf файлы міндетті емес және Қуыршақ файл сервері ретінде де жұмыс істейтін болса ғана пайдаланылады. Ubuntu жүйесінде бұл файл /etc/puppet/files ішкі каталогын экспорттайды. ssl ішкі каталогында клиенттерді қосу кезінде шифрлау үшін пайдаланылатын сертификаттар мен кілттер бар. Кілттер puppetmasterd бірінші рет іске қосылғанда автоматты түрде жасалады; оларды пәрмен арқылы қолмен жасауға болады:

$ sudo /usr/bin/puppetmasterd --mkusers

puppetd.conf және puppetmasterd.conf файлдары ұқсас. Олар клиенттік жүйе мен сервердегі демондардың жұмыс істеуінің кейбір параметрлерін көрсетеді. Клиенттік файл тек puppetmasterd жұмыс істеп тұрған компьютерді көрсететін сервер параметрінің болуымен ғана ерекшеленеді:

сервер = grinder.com

logdir = /var/log/қуыршақ

vardir = /var/lib/қуыршақ

rundir = /var/run

# серверге есеп жіберу

есеп = шын

Барлығын қолмен термеу үшін puppetd көмегімен үлгі жасауға болады:

$ puppetd --genconfig > /etc/puppet/puppetd.conf

Сол сияқты серверде site.pp жасай аласыз:

$ puppetd --genmanifest > /etc/puppet/manifests/site.pp

Басқа файл, tagmail.conf, есептер жіберілетін электрондық пошта мекенжайларын көрсетуге мүмкіндік береді. Ең қарапайым жағдайда сіз бір жолды пайдалана аласыз:

барлық: [электрондық пошта қорғалған]

Конфигурация файлдары клиенттің серверге қосылуы үшін жеткіліксіз. Ол үшін сертификаттарға да қол қою қажет.

Алдымен серверге жаңа компьютер туралы хабарлау үшін клиенттік жүйеге пәрменді енгізіңіз:

$ sudo puppetd --server grinder.com --waitforcert 60 –test

Брандмауэр 8140 портындағы қосылымдарға рұқсат беруі керек.

Серверде қол қою қажет сертификаттар тізімін аламыз:

$ sudo puppetca – тізім

nomad.grinder.com

Және клиент сертификатына қол қойыңыз:

$ sudo puppetca – nomad.grinder.com белгісі

Енді клиент серверге еркін қосылып, параметрлерді қабылдай алады.

Өкінішке орай, мақала аясында Қуыршақтың барлық мүмкіндіктерін көрсету мүмкін емес. Бірақ, көріп отырғаныңыздай, бұл көптеген жүйелерді бір уақытта басқару мәселелерінің көпшілігін шешуге мүмкіндік беретін функционалды және икемді құрал. Ең бастысы, жоба шағын, бірақ үнемі өсіп келе жатқан қауымдастықты жинай алды. Сондықтан жақсы ойдың өліп кетуіне, шетке кетуіне жол берілмесе екен деп тілейік.

Іске сәт!

  1. BladeLogic жобасының веб-сайты – http://www.bladelogic.com.
  2. OpsWare жобасының веб-сайты http://www.opsware.com болып табылады.
  3. Cfengine жобасының веб-сайты http://www.cfengine.org болып табылады.
  4. Қуыршақ жобасының веб-сайты http://reductivelabs.com/projects/puppet болып табылады.
  5. Қуыршақ аспаздық кітабы - http://www.reductivelabs.com/trac/puppet/tagspuppet%2Crecipe.
  6. Жылдам кітапхана –



Жоғарғы