Како користити луткарске модуле за аутоматизацију ИТ инфраструктуре?



Практични луткарски водич који говори о писању луткарског модула и коришћењу манифеста за аутоматизацију и одржавање ИТ инфраструктуре организације.

Раније су системски администратори користили љуске скрипте за покретање својих сервера, а овај метод је имао нулту скалабилност. Застрашујући је задатак непрестано модификовати скрипте за стотине или хиљаде сервера који се непрестано мењају и њихове системске конфигурације.

У овом чланку о луткарски модули и манифести да видимо како бисмо могли да користимо луткарске модуле за аутоматизацију подешавања сервера, инсталације програма и управљања системом.





Овај блог покрива следеће теме:

Увод у луткарско програмирање

Лутка је један од популарно коришћених алата ДевОпс који се широко користи за управљање конфигурацијом. Користи се за остваривање доследност у Инфраструктури. Лутка може дефинисати инфраструктуру као код, управљати са више сервера и наметати конфигурацију система, помажући тако у аутоматизацији процеса управљања инфраструктуром.



Лутка имасопствени језик за конфигурацију, Луткарски ДСЛ . Као и код осталих ДевОпс програма, Лутка аутоматизује промене, елиминишући ручне промене вођене скриптама. Међутим, Лутка није само други језик љуске, нити је чисти програмски језик, као што је ПХП. Уместо тога, Лутка користидо приступ заснован на декларативном моделу до ИТ аутоматизације. То омогућава Лутци да дефинише инфраструктуру као код и спроводи конфигурацију система са програмима.

Пре него што наставимо са демонстрацијом, погледајмо неколико основних аспеката луткарског програмирања.

пример краставца јава селена вебдривер

Кључни појмови у луткарском програмирању

Манифеста

Зове се луткарски програм манифестовати и има назив датотеке са .пп продужење. Подразумевани главни луткарски манифест је /етц/пуппет/манифестс/сите.пп . (Ово дефинишеглобалне системске конфигурације, као што су ЛДАП конфигурација, ДНС сервери или друге конфигурације које се примењују на сваки чвор).



Предавања

Унутар ових манифеста налазе се кодни блокови класе други модули могу да позивају. Класе конфигуришу велике или средње велике делове функционалности, као што су сви пакети, конфигурационе датотеке и услуге потребне за покретање апликације. Часови олакшавају поновну употребу луткарског кода и побољшавају читљивост.

Ресурси

Луткарски код се углавном састоји од декларација ресурса. А. ресурс описује одређени елемент о жељеном стању система. На пример, може да садржи да треба да постоји одређена датотека или да се инсталира пакет.

Луткарски модули

Осим главногсите.ппманифестовати,чува манифестау модула .

Сав наш Луткарски код организован је у модуле који су основни градивни елементи лутке које можемо поново користити и делити. Сваки модул управља одређеним задатком у инфраструктури, попут инсталирања и конфигурисања дела софтвера.

Модули садрже луткарске класе, дефинисане типове, задатке, планове задатака, капацитете, типове ресурса и додатке, на пример, прилагођене типове или чињенице. Инсталирајте модуле у Луткумодул-путања. Лутка учитава сав садржај из сваког модула у путањи модула, чинећи овај код доступним за употребу.

Модули - Луткарско програмирање - ЕдурекаПуппетлабс има унапред дефинисане модуле који их можемо одмах користити преузимањем са њих ПуппетФорге . Такође можете створити прилагођени луткарски модул који одговара вашим захтевима.

Ток рада луткарског програма

Ми ћемо користити Пуппетов декларативни језик да опишемо жељено стање система у датотекама које се називају манифестима. Манифести описују како треба да конфигуришете мрежу и ресурсе оперативног система, као што су датотеке, пакети и услуге.

Лутка саставља манифеста у каталози и примењује сваки каталог на његов одговарајући чвор како би осигурао да конфигурација тон је чвор тачанпреко ваше инфраструктуре.

Демонстрација: Аутоматизација инсталације Апацхе & МиСКЛ

Овај чланак о луткарским модулима је практичан, који ће показати два начина употребе луткарског модула, а такође ће вас научити како аутоматизовати инсталација сервера конфигурисаног са ова два модула.

За почетак осигурајте да имате припремљену луткарску инфраструктуру која би укључивала луткарски мастер сервер и 2 луткарска агента.

  • Луткар: Убунту 18.04
  • Агент 1: Убунту 18.04
  • Агент 2:ЦентОС7

Ево прегледа шта ћемо постићи у овом практичном раду:


Почнимо са практичним:

Израда модула од нуле

У овом луткарском модулу бавићемо се задацима попут преузимања пакета Апацхе, конфигурисања датотека и подешавања виртуелних хостова.

  • Из Пуппет Мастер-а дођите до директорија Пуппет-овог модула и креирајте Апацхе директоријум:
    цд / етц / пуппет / модулес судо мкдир апацхе
  • Унутар апацхе директоријума креирајте поддиректоријуме: манифеста, предлошке, датотеке и примере.
    цд апацхе судо мкдир {манифести, предлошци, датотеке, примери}
  • Идите до директорија манифеста:
    цд манифестс
  • Одавде ћемо модул раздвојити у класе на основу циљева тог одељка кода.

инит.пп -> да преузмете пакет Апацхе

парамс.пп -> да дефинише било које променљиве и параметре

цонфиг.пп -> за управљање било којим конфигурационим датотекама за услугу Апацхе.

вхостс.пп -> за дефинисање виртуелних хостова.

Овај модул ће такође користити Хиера (уграђени систем претраживања података конфигурације кључ / вредност, који се користи за одвајање података од података луткарског кода, за чување променљивих за сваки чвор.

Корак 1: Преузимање Апацхе пакета

Направите класу инит.пп

Сада ћемо створитиинит.ппдатотека у директоријуму манифеста за чување апацхе пакета.
Како имамо 2 различита ОС (убунту и ЦентОС7) који користе различита имена пакета за Апацхе, мораћемо да користимо променљиву$ апацхенаме.

/етц/пуппетлабс/цоде/енвиронментс/продуцтион/модулес/апацхе/манифестс/инит.пп

класа апацхе {пакет {'апацхе': наме => $ апацхенаме, осигурати => присутан,}}

пакет ресурс омогућава управљање пакетом. Ово се користи за додавање, уклањање или осигуравање присуства пакета.

У већини случајева име ресурса (апацхе, горе) треба да буде назив пакета којим се управља. Због различитих правила именовања,називамо стварно име пакетапо са име референца. Тако име , позива за још увек недефинисану променљиву$ апацхенаме.

осигурати референца осигурава да је пакетпоклон.

Направите датотеку парамс.пп

Тхепарамс.ппдатотека ће дефинисати потребне променљиве. Иако бисмо ове променљиве могли да дефинишемо у оквируинит.ппдатотеку, јер ће више променљивих бити потребно користити изван самог типа ресурса, користећипарамс.ппдатотека омогућава дефинисање променљивих уакоизјаве и користе се у више класа.

Створитипарамс.ппдатотеку и следећи код.

/етц/пуппетлабс/цоде/енвиронментс/продуцтион/модулес/апацхе/манифестс/парамс.пп

класа апацхе :: парамс {иф $ :: осфамили == 'РедХат' {$ апацхенаме = 'хттпд'} елсиф $ :: осфамили == 'Дебиан' {$ апацхенаме = 'апацхе2'} елсе {фаил ('ово није подржани дистро. ')}}

Изван оригинала инит.ппкласе, свако име класе мора да се грана одапацхе. Ову класу називамо као апацхе :: парамс . Име након двоструке двотачке требало би да дели име са датотеком. АнакоИзјава се користи за дефинисање параметара, повлачећи се из информација које пружа Фактор , Лутка има бржу инсталацију као део саме своје инсталације. Овде ће Фацтер срушити породицу оперативног система (осфамили), да разазна да ли јецрвени шеширилиЗаснован на Дебиану.

Са коначно дефинисаним параметрима, морамо позвати парамс.пп датотеку и параметре уинит.пп. Да бисмо то урадили, треба да додамо параметре након назива класе, али пре уводне коврџаве заграде({).

Даклеинит.ппкоје смо раније креирали требало би да изгледа отприлике овако:

класа апацхе ($ апацхенаме = $ :: апацхе :: парамс :: апацхенаме,) наслеђује :: апацхе :: парамс {пакет {'апацхе': наме => $ апацхенаме, осигурати => присутан,}}

Низ вредности $ :: апацхе :: парамс :: валуе говори Лутци да извуче вредности из апацхе модули, парамс класе, након чега следи име параметра. Фрагмент наслеђује :: апацхе :: парамс дозвољено заинит.ппда наследе ове вредности.

пхп разлика између еха и штампе

Корак 2: Управљање конфигурационим датотекама

Апацхе конфигурациона датотека ће се разликовати у зависности од тога да ли радите на Ред Хат или Дебиан систему.

На крају ове демонстрације можете пронаћи следеће датотеке зависности:хттпд.цонф(Црвени шешир),апацхе2.цонф(Дебиан).

  • Копирајте садржај хттпд.цонф иапацхе2.цонфу засебне датотеке и сачувајте их у фајлови именику / етц / пуппетлабс / цоде / енвиронмент / продуцтион / модулес / апацхе / филес .
  • Измените обе датотеке у онемогућити одржи у животу. Морате да додате линију КеепАливе Офф ухттпд.цонфдатотека. Ако не желите да промените ову поставку, додаћемо коментар на врх свакедатотека:
    /етц/пуппетлабс/цоде/енвиронментс/продуцтион/модулес/апацхе/филес/хттпд.цонф
# Овом датотеком управља лутка

Додајте ове датотеке уинит.ппдатотеку, тако да ће Лутка знати локацију тих датотека и на главном серверу и на чворовима агента. Да бисмо то урадили, користимо датотека ресурс.

/етц/пуппетлабс/цоде/енвиронментс/продуцтион/модулес/апацхе/манифестс/инит.пп

датотека {'цонфигуратион-филе': патх => $ цонффиле, суре => филе, соурце => $ цонфсоурце,}

Будући да имамо конфигурационе датотеке на две различите локације, ресурсу дајемо генеричко име конфигурациона датотека са досијеом пут дефинисан као параметар сапутатрибут.

осигурати осигурава да је датотека.

извор обезбеђује локацију на господара лутака горе створених датотека.

Отворипарамс.ппдатотека.

Ми дефинишемо $ цонффиле и $ цонфсоурцепроменљиве унутаракоизјава:

/етц/пуппетлабс/цоде/енвиронментс/продуцтион/модулес/апацхе/манифестс/парамс.пп

ако $ :: осфамили == 'РедХат' {... $ цонффиле = '/етц/хттпд/цонф/хттпд.цонф' $ цонфсоурце = 'пуппет: ///модулес/апацхе/хттпд.цонф'} елсиф $: : осфамили == 'Дебиан' {... $ цонффиле = '/етц/апацхе2/апацхе2.цонф' $ цонфсоурце = 'пуппет: ///модулес/апацхе/апацхе2.цонф'} елсе {...

Морамо додати параметре на почетакапацхедекларација класе уинит.ппдатотека, слична претходном примеру.

Када се конфигурациона датотека промени, Апацхе треба да се поново покрене. Да бисмо ово аутоматизовали, можемо користити ресурс услугеу комбинацији са обавести атрибут, који ће позвати ресурс да се покрене кад год се промени конфигурациона датотека:

/етц/пуппетлабс/цоде/енвиронментс/продуцтион/модулес/апацхе/манифестс/инит.пп

датотека {'цонфигуратион-филе': патх => $ цонффиле, суре => филе, соурце => $ цонфсоурце, нотифи => Сервице ['апацхе-сервице'],} сервице {'апацхе-сервице': наме => $ име апацхе, хасрестарт => труе,}

услуга ресурс користи већ креирани параметар који је дефинисао име Апацхе на системима Ред Хат и Дебиан.
хасрестарт атрибут се користи за покретање поновног покретања дефинисане услуге.

Корак 3: Креирајте датотеке виртуелног хоста

У зависности од дистрибуције вашег система, датотекама виртуелног хоста управљаће се другачије. Због тога ћемо код за виртуелне хостове ставити уакоизјава, слична оној која се користи упарамс.ппкласе, али која садржи стварне луткарске ресурсе.

  • Изнутраапацхе / манифестс /директоријум, креирајте и отворите авхостс.ппдатотека. Додајте костуракоизјава:

/етц/пуппетлабс/цоде/енвиронментс/продуцтион/модулес/апацхе/манифестс/вхостс.пп

цласс апацхе :: вхостс {иф $ :: осфамили == 'РедХат' {} елсиф $ :: осфамили == 'Дебиан' {} елсе {}}

Локација датотеке виртуелног хоста на нашем ЦентОС 7 серверу је/етц/хттпд/цонф.д/вхост.цонф . Датотеку морате створити као образац на Пуппет мастер-у. Урадите исто за датотеку виртуелних хостова Убунту која се налази на/етц/апацхе2/ситес-аваилабле/екампле.цом.цонф, заменаекампле.цомса ФКДН сервера.

  • Дођите до предлошци датотека у апацхе модул, а затим креирајте две датотеке за ваше виртуелне хостове:

За Ред Хат системе:
/етц/пуппетлабс/цоде/енвиронментс/продуцтион/модулес/апацхе/темплатес/вхостс-рх.цонф.ерб

СерверАдмин СерверНаме СерверАлиас ввв. ДоцументРоот / вар / ввв // публиц_хтмл / ЕррорЛог /вар/ввв//логс/еррор.лог ЦустомЛог /вар/ввв//логс/аццесс.лог комбиновани

За Дебиан системе:
/етц/пуппет/модулес/апацхе/темплатес/вхостс-деб.цонф.ерб

СерверАдмин СерверНаме СерверАлиас ввв. ДоцументРоот / вар / ввв / хтмл // публиц_хтмл / ЕррорЛог /вар/ввв/хтмл//логс/еррор.лог ЦустомЛог /вар/ввв/хтмл//логс/аццесс.лог комбинованиЗахтевај све одобрене

У овим датотекама користимо само две променљиве: админемаил и име сервера . Ми ћемо их дефинисати од чвора до чвора, у оквирусите.ппдатотека.

  • Повратак навхостс.ппдатотека. На креиране предлошке сада се може позивати у коду:

/етц/пуппетлабс/цоде/енвиронментс/продуцтион/модулес/апацхе/манифестс/вхостс.пп

класа апацхе :: вхостс {иф $ :: осфамили == 'РедХат' {датотека {'/етц/хттпд/цонф.д/вхост.цонф': осигурати => датотека, садржај => предложак ('апацхе / вхостс-рх .цонф.ерб '),}} елсиф $ :: осфамили ==' Дебиан '{датотека {' /етц/апацхе2/ситес-аваилабле/$сервернаме.цонф ': суре => филе, цонтент => темплате (' апацхе /вхостс-деб.цонф.ерб '),}} елсе {неуспех (' Ово није подржана дистрибуција. ')}}

Обе породице за дистрибуцију позивају се надатотекаресурса и преузмите наслов локације виртуелног хоста на одговарајућој дистрибуцији. За Дебиан ово још једном значи позивање на$ сервернамевредност. Тхесадржајатрибут позива одговарајуће предлошке.

  • Обе датотеке виртуелног хоста упућују на два директоријума. Они по подразумеваном подешавању нису на системима. Можемо их створити помоћудатотекаресурса, сваки у оквируакоизјава. Комплетнавхостс.цонфдатотека треба да личи на:

/етц/пуппетлабс/цоде/енвиронментс/продуцтион/модулес/апацхе/манифестс/вхостс.пп

класа апацхе :: вхостс {иф $ :: осфамили == 'РедХат' {датотека {'/етц/хттпд/цонф.д/вхост.цонф': осигурати => датотека, садржај => предложак ('апацхе / вхостс-рх .цонф.ерб '),} датотека {[' / вар / ввв / $ сервернаме ',' / вар / ввв / $ сервернаме / публиц_хтмл ',' / вар / ввв / $ сервернаме / лог ',]: суре => директоријум,}} елсиф $ :: осфамили == 'Дебиан' {датотека {'/етц/апацхе2/ситес-аваилабле/$сервернаме.цонф': осигурати => датотека, садржај => предложак ('апацхе / вхостс-деб. цонф.ерб '),} датотека {[' / вар / ввв / $ сервернаме ',' / вар / ввв / $ сервернаме / публиц_хтмл ',' / вар / ввв / $ сервернаме / логс ',]: суре => директоријум ,}} елсе {фаил ('Ово није подржани дистро.')}}

Корак 4: Тестирајте модул

  • Дођите доапацхе / манифестс /покрените директоријум луткарски парсер на свим датотекама како би се осигурало да је луткарско кодирање без грешке:

судо / опт / пуппетлабс / бин / пуппет парсер валидате инит.пп парамс.пп вхостс.пп

Требало би да се врати празно, без проблема.

  • Дођите до примери директоријум у оквируапацхемодул. Направитеинит.ппдатотеке и укључују креиране класе. Замените вредности за$ сервернамеи$ админемаилса својим:

/етц/пуппетлабс/цоде/енвиронментс/продуцтион/модулес/апацхе/екамплес/инит.пп

серверемаил = 'вебмастер@екампле.цом' $ сервернаме = 'пуппет.екампле.цом' укључују апацхе укључују апацхе :: вхостс
  • Тестирајте модул трчањем лутка применити са –Не таг:
    судо / опт / пуппетлабс / бин / пуппет аппли --нооп инит.пп

Не би требало да враћа грешке и даје излаз да ће покренути освежавања из догађаја. Да бисте инсталирали и конфигурисали апацхе на Пуппет мастер, покрените поново без–Не, по жељи.

  • Вратите се у главни директориј лутака, а затим уманифестуједиректоријум (неона присутна у модулу Апацхе).

цд / етц / пуппетлабс / цоде / енвиронмент / продуцтион / манифестс

Створитисите.ппфајл,и укључују Апацхе модул за сваки чвор агента. Такође унесите променљиве заадминемаил и име серверапараметри. Вашсите.пптреба да личи на следеће:

/етц/пуппетлабс/цоде/енвиронментс/продуцтион/манифестс/сите.пп

чвор 'пуппет-агент-убунту.екампле.цом' {$ админемаил = 'вебмастер@екампле.цом' $ сервернаме = 'пуппет.екампле.цом' укључују апацхе укључују апацхе :: вхостс} чвор 'пуппет-агент-центос.екампле .цом '{$ админемаил =' вебмастер@екампле.цом '$ сервернаме =' пуппет.екампле.цом 'укључују апацхе укључују апацхе :: вхостс}

Подразумевано, услуга луткарског агента на вашим управљаним чворовима аутоматски ће проверавати код мастер-а једном у 30 минута и применити све нове конфигурације од главног. Такође можете ручно да позовете поступак луткарског агента између аутоматских покретања агента. Да бисте ручно покренули нови модул на чворовима агента, пријавите се на чворове и покрените:

судо / опт / пуппетлабс / бин / агент за лутке -т

Сада када смо научили како да креирамо модул од нуле, научимо како да користимо постојећи модул из луткарске ковачнице луткарских лабораторија.

Користите модул из ПуппетФорге

Луткарска ковачница већ има много модула за рад сервера. Можемо их конфигурисати једнако опсежно као модул који сте креирали и можемо уштедети време јер модул не морамо стварати од нуле.

Уверите се да сте у / етц / пуппетлабс / цоде / енвиронмент / продуцтион / модулес директоријум и инсталирајте МиСКЛ модул Пуппет Форге би ПуппетЛабс. Ово ће такође инсталирати све неопходне модуле.

цд / етц / пуппетлабс / цоде / енвиронмент / продуцтион / модулес

судо / опт / пуппетлабс / бин / пуппет модуле инсталирајте пуппетлабс-мискл

Користите Хиера за креирање база података

Пре него што креирате конфигурационе датотеке за МиСКЛ модул, узмите у обзир да можда не желите да користите исте вредности у свим чворовима агента. За снабдевање Лутке тачним подацима по чвору користимо Хиера. Користићете другу роот лозинку по чвору, стварајући тако различите МиСКЛ базе података.

функција статичког члана ц ++
  • Иди на/ итд / луткаи креирајте Хиера-ину конфигурациону датотекухиера.иамлу основилуткаименик. Користићете подразумеване вредности Хиере:

/етц/пуппетлабс/цоде/енвиронментс/продуцтион/хиера.иамл

--- верзија: 5 хијерархија: - име: Уобичајена путања: дефаулт.иамл задане поставке: дата_хасх: иамл_дата датадир: дата
  • Направите датотекузаједнички.јамл. Дефинисаће подразумевано корен лозинка за МиСКЛ:

/етц/пуппетлабс/цоде/енвиронментс/продуцтион/цоммон.иамл

мискл :: сервер :: роот_пассворд: 'лозинка'

Ми користимозаједнички.јамлдатотекакада променљива није дефинисана на другом месту. То значи да ће сви сервери делити исту МиСКЛ роот лозинку. Ове лозинке се такође могу хеширати ради повећања сигурности.

  • Да бисте користили подразумеване вредности МиСКЛ модула, можете додати укључују „:: мискл :: сервер“ линија досите.ппдатотека. Међутим, у овом примеру ћете заменити неке од задатих вредности модула да бисте креирали базу података за сваки ваш чвор.

Изменитесите.ппдатотека са следећим вредностима:

чвор 'Пуппетагент-убунту.екампле.цом' {$ админемаил = 'вебмастер@екампле.цом' $ сервернаме = 'хостнаме.екампле.цом' укључују апацхе укључују апацхе :: вхостс укључују мискл :: сервер мискл :: дб {'мидб_ $ {фкдн} ': усер =>' миусер ', лозинка =>' мипасс ', дбнаме =>' мидб ', хост => $ :: фкдн, грант => [' СЕЛЕЦТ ',' УПДАТЕ '], таг = > $ домаин,}} чвор 'Пуппетагент-центос.екампле.цом' {$ админемаил = 'вебмастер@екампле.цом' $ сервернаме = 'хостнаме.екампле.цом' укључују апацхе укључују апацхе :: вхостс укључују мискл :: сервер мискл :: дб {'мидб _ $ {фкдн}': усер => 'миусер', лозинка => 'мипасс', дбнаме => 'мидб', хост => $ :: фкдн, грант => ['СЕЛЕЦТ', ' УПДАТЕ '], таг => $ домен,}}

Аутоматизација инсталације луткарских модула од луткара до луткарског агента

  • Ова ажурирања можете покренути ручно на сваком чвору тако што ћете ССХинг ући у сваки чвор и издати следећу наредбу:

судо / опт / пуппетлабс / бин / агент за лутке -т

  • У супротном, услуга Луткарског агента на вашим управљаним чворовима аутоматски ће проверавати код мастер-а једном у 30 минута и применити све нове конфигурације од мастер-а.

Каталог је успешно примењен на Убунту агенту

Каталог је успешно примењен на агенту ЦентОС

Дакле, целокупна инсталација добија аутоматизовано на чворовима агента само применом каталога.Датотеке кода и зависности које се користе за овај приказ могу се пронаћи овде .

Надам се да вам је ова демонстрација помогла да стекнете јасну представу о луткарским модулима и манифестима и њиховој употреби за аутоматизацију ИТ инфраструктуре.У овом случају, ваш посао постаје тако лак, само наведите конфигурације у Пуппет Мастер и агенти Пуппет ће аутоматски проценити главни манифест и применити модул који одређује подешавање Апацхе-а и МиСКЛ-а. Ако имате било каквих упита, слободно их објавите .

Ако сте ово пронашли Водич за лутке релевантно, погледајте Едурека, поуздана компанија за учење на мрежи са мрежом од више од 250.000 задовољних ученика раширених широм света. Едурека ДевОпс сертификациони курс помаже ученицима да стекну стручност у различитим ДевОпс процесима и алатима као што су Пуппет, Јенкинс, Нагиос и ГИТ за аутоматизацију више корака у СДЛЦ-у.