Chidole ndi dongosolo kasamalidwe kasinthidwe. Amagwiritsidwa ntchito kubweretsa makamu kumalo omwe akufunidwa ndikusunga dziko lino.
Ndakhala ndikugwira ntchito ndi Chidole kwa zaka zoposa zisanu tsopano. Mawuwa kwenikweni ndi omasuliridwa ndi kukonzedwanso kaphatikizidwe ka mfundo zazikuluzikulu kuchokera m'zolemba zovomerezeka, zomwe zidzalola oyamba kumene kuti amvetse mwamsanga tanthauzo la Chidole.
Zambiri
Makina ogwiritsira ntchito a Puppet ndi kasitomala-seva, ngakhale amathandizira ntchito yopanda seva yokhala ndi magwiridwe antchito ochepa.
Chitsanzo chokoka chimagwiritsidwa ntchito: mwachisawawa, kamodzi pa theka la ola, makasitomala amalumikizana ndi seva kuti akonze ndikuyiyika. Ngati mwagwira ntchito ndi Ansible, ndiye kuti amagwiritsa ntchito mtundu wosiyana wokankhira: woyang'anira amayambitsa ndondomeko yogwiritsira ntchito kasinthidwe, makasitomalawo sangagwiritse ntchito kalikonse.
Pakulumikizana kwa maukonde, njira ziwiri za TLS encryption zimagwiritsidwa ntchito: seva ndi kasitomala ali ndi makiyi awo achinsinsi ndi ziphaso zofananira. Nthawi zambiri seva imapereka satifiketi kwa makasitomala, koma kwenikweni ndizotheka kugwiritsa ntchito CA yakunja.
Chiyambi cha Manifesto
M'mawu a Chidole kwa seva ya chidole kulumikiza mfundo (mfundo). Kukonzekera kwa node kumalembedwa mu manifesto m'chinenero chapadera cha mapulogalamu - Chidole DSL.
Chidole DSL ndi chilankhulo cholengeza. Imalongosola momwe mfundoyo ikufunira monga kulengeza kwazinthu zapayekha, mwachitsanzo:
- Fayiloyo ilipo ndipo ili ndi zinthu zinazake.
- Phukusi lakhazikitsidwa.
- Ntchito yayamba.
Zida zitha kulumikizidwa:
- Pali zodalira, zimakhudza momwe zinthu zimagwiritsidwira ntchito.
Mwachitsanzo, "yambani ikani phukusi, kenako sinthani fayilo yosinthira, kenako yambitsani ntchitoyo." - Pali zidziwitso - ngati zida zasintha, zimatumiza zidziwitso kuzinthu zomwe zidalembetsedwa.
Mwachitsanzo, ngati fayilo yosinthira ikusintha, mutha kuyambitsanso ntchitoyo.
Kuphatikiza apo, DSL ya Chidole ili ndi ntchito ndi zosintha, komanso mawu okhazikika ndi osankhidwa. Njira zosiyanasiyana zowonetsera zimathandizidwanso - EPP ndi ERB.
Chidole chalembedwa mu Ruby, kotero zambiri zomanga ndi mawu amatengedwa kuchokera pamenepo. Ruby amakulolani kukulitsa Chidole - onjezerani malingaliro ovuta, mitundu yatsopano yazinthu, ntchito.
Pomwe Chidole chikuyenda, ziwonetsero za node iliyonse pa seva zimaphatikizidwa mu bukhu. Directory ndi mndandanda wazinthu ndi maubwenzi awo pambuyo powerengera mtengo wa ntchito, zosinthika ndi kufalikira kwa ziganizo zovomerezeka.
Syntax ndi codestyle
Nawa zigawo za zolembedwa zovomerezeka zomwe zingakuthandizeni kumvetsetsa mawuwo ngati zitsanzo zomwe zaperekedwa sizokwanira:
Nachi chitsanzo cha momwe chiwonetserochi chikuwonekera:
# Комментарии пишутся, как и много где, после решётки.
#
# Описание конфигурации ноды начинается с ключевого слова node,
# за которым следует селектор ноды — хостнейм (с доменом или без)
# или регулярное выражение для хостнеймов, или ключевое слово default.
#
# После этого в фигурных скобках описывается собственно конфигурация ноды.
#
# Одна и та же нода может попасть под несколько селекторов. Про приоритет
# селекторов написано в статье про синтаксис описания нод.
node 'hostname', 'f.q.d.n', /regexp/ {
# Конфигурация по сути является перечислением ресурсов и их параметров.
#
# У каждого ресурса есть тип и название.
#
# Внимание: не может быть двух ресурсов одного типа с одинаковыми названиями!
#
# Описание ресурса начинается с его типа. Тип пишется в нижнем регистре.
# Про разные типы ресурсов написано ниже.
#
# После типа в фигурных скобках пишется название ресурса, потом двоеточие,
# дальше идёт опциональное перечисление параметров ресурса и их значений.
# Значения параметров указываются через т.н. hash rocket (=>).
resource { 'title':
param1 => value1,
param2 => value2,
param3 => value3,
}
}
Kulowera mkati ndi kuthyoka mizere si gawo lofunikira la chiwonetsero, koma pali zovomerezeka
- Ma indents a danga, ma tabo sagwiritsidwa ntchito.
- Zomangira zopindika zimalekanitsidwa ndi danga; ma colono sasiyanitsidwa ndi danga.
- Koma pambuyo pa parameter iliyonse, kuphatikiza yomaliza. Parameter iliyonse ili pamzere wosiyana. Kupatulako kumapangidwira mlanduwo wopanda magawo ndi gawo limodzi: mutha kulemba pamzere umodzi komanso popanda koma (ie.
resource { 'title': }
иresource { 'title': param => value }
). - Mivi pazigawo ziyenera kukhala pamlingo womwewo.
- Mivi yokhudzana ndi zothandizira imalembedwa patsogolo pawo.
Malo amafayilo pa pappetserver
Kuti mumve zambiri, ndikuwonetsa lingaliro la "root directory". Chikwatu cha mizu ndi chikwatu chomwe chili ndi kasinthidwe ka Chidole cha node inayake.
Chikwatu cha mizu chimasiyanasiyana kutengera mtundu wa Chidole ndi malo omwe amagwiritsidwa ntchito. Madera ndi magulu odziyimira pawokha omwe amasungidwa m'madongosolo osiyanasiyana. Nthawi zambiri amagwiritsidwa ntchito kuphatikiza ndi git, pomwe malo amapangidwa kuchokera ku nthambi za git. Chifukwa chake, node iliyonse ili pamalo amodzi kapena ena. Izi zitha kukhazikitsidwa pa node yokha, kapena mu ENC, yomwe ndilankhula m'nkhani yotsatira.
- Mu mtundu wachitatu ("Chidole chakale") buku loyambira linali
/etc/puppet
. Kugwiritsa ntchito malo ndikosankha - mwachitsanzo, sitimawagwiritsa ntchito ndi Chidole chakale. Ngati madera akugwiritsidwa ntchito, nthawi zambiri amasungidwa mkati/etc/puppet/environments
, chikwatu cha mizu chidzakhala chikwatu cha chilengedwe. Ngati malo sagwiritsidwa ntchito, chikwatu cha mizu chidzakhala chikwatu choyambira. - Kuyambira pa mtundu wachinayi ("Chidole chatsopano"), kugwiritsa ntchito malo kudakhala kovomerezeka, ndipo zolemba zoyambira zidasunthidwa ku
/etc/puppetlabs/code
. Chifukwa chake, malo amasungidwa mkati/etc/puppetlabs/code/environments
, chikwatu cha mizu ndi chikwatu cha chilengedwe.
Payenera kukhala subdirectory mu root directory manifests
, yomwe ili ndi chiwonetsero chimodzi kapena zingapo zofotokozera mfundozo. Kuphatikiza apo, payenera kukhala subdirectory modules
, yomwe ili ndi ma modules. Ndikuuzani ma modules pambuyo pake. Kuphatikiza apo, Chidole chakale chingakhalenso ndi subdirectory files
, yomwe ili ndi mafayilo osiyanasiyana omwe timakopera ku node. Mu Chidole chatsopano, mafayilo onse amaikidwa m'ma module.
Mafayilo a Manifest ali ndi zowonjezera .pp
.
Zitsanzo zingapo zankhondo
Kufotokozera za mfundo ndi zothandizira pa izo
Pa mfundo server1.testdomain
fayilo iyenera kupangidwa /etc/issue
ndi zomwe zili Debian GNU/Linux n l
. Fayiloyo iyenera kukhala ya wogwiritsa ntchito ndi gulu root
, ufulu wopeza uyenera kukhala 644
.
Timalemba manifesto:
node 'server1.testdomain' { # блок конфигурации, относящийся к ноде server1.testdomain
file { '/etc/issue': # описываем файл /etc/issue
ensure => present, # этот файл должен существовать
content => 'Debian GNU/Linux n l', # у него должно быть такое содержимое
owner => root, # пользователь-владелец
group => root, # группа-владелец
mode => '0644', # права на файл. Они заданы в виде строки (в кавычках), потому что иначе число с 0 в начале будет воспринято как записанное в восьмеричной системе, и всё пойдёт не так, как задумано
}
}
Mgwirizano pakati pa zinthu pa node
Pa mfundo server2.testdomain
nginx iyenera kukhala ikuyenda, ikugwira ntchito ndi kasinthidwe kokonzedwa kale.
Titha kuthetsa vutoli:
- Phukusi liyenera kukhazikitsidwa
nginx
. - Ndikofunikira kuti mafayilo osinthika akopedwe kuchokera ku seva.
- Service iyenera kuyendetsedwa
nginx
. - Ngati kasinthidwe kasinthidwa, ntchitoyo iyenera kuyambiranso.
Timalemba manifesto:
node 'server2.testdomain' { # блок конфигурации, относящийся к ноде server2.testdomain
package { 'nginx': # описываем пакет nginx
ensure => installed, # он должен быть установлен
}
# Прямая стрелка (->) говорит о том, что ресурс ниже должен
# создаваться после ресурса, описанного выше.
# Такие зависимости транзитивны.
-> file { '/etc/nginx': # описываем файл /etc/nginx
ensure => directory, # это должна быть директория
source => 'puppet:///modules/example/nginx-conf', # её содержимое нужно брать с паппет-сервера по указанному адресу
recurse => true, # копировать файлы рекурсивно
purge => true, # нужно удалять лишние файлы (те, которых нет в источнике)
force => true, # удалять лишние директории
}
# Волнистая стрелка (~>) говорит о том, что ресурс ниже должен
# подписаться на изменения ресурса, описанного выше.
# Волнистая стрелка включает в себя прямую (->).
~> service { 'nginx': # описываем сервис nginx
ensure => running, # он должен быть запущен
enable => true, # его нужно запускать автоматически при старте системы
}
# Когда ресурс типа service получает уведомление,
# соответствующий сервис перезапускается.
}
Kuti izi zitheke, mufunika pafupifupi malo otsatirawa a fayilo pa seva ya chidole:
/etc/puppetlabs/code/environments/production/ # (это для нового Паппета, для старого корневой директорией будет /etc/puppet)
├── manifests/
│ └── site.pp
└── modules/
└── example/
└── files/
└── nginx-conf/
├── nginx.conf
├── mime.types
└── conf.d/
└── some.conf
Mitundu Yothandizira
Mndandanda wathunthu wamitundu yothandizidwa ikhoza kupezeka apa
Fayilo
Imawongolera mafayilo, maulalo, ma symlink, zomwe zili mkati mwake, ndi ufulu wofikira.
Magawo:
- dzina lachinthu - njira yopita ku fayilo (posankha)
- njira - njira yopita ku fayilo (ngati siyinatchulidwe m'dzina)
- kuonetsetsa - mtundu wa fayilo:
absent
- Chotsani fayilopresent
- payenera kukhala fayilo yamtundu uliwonse (ngati palibe fayilo, fayilo yokhazikika idzapangidwa)file
- fayilo yanthawi zonsedirectory
- directorylink
- symlink
- okhutira - zomwe zili mufayilo (zoyenera mafayilo okhazikika, sizingagwiritsidwe ntchito limodzi ndi gwero kapena cholinga)
- gwero - ulalo wanjira yomwe mukufuna kukopera zomwe zili mufayilo (sangagwiritsidwe ntchito limodzi ndi okhutira kapena cholinga). Itha kufotokozedwa ngati URI yokhala ndi chiwembu
puppet:
(ndiye mafayilo ochokera ku seva ya chidole adzagwiritsidwa ntchito), komanso ndi chiwembuhttp:
(Ndikukhulupirira kuti zikuwonekeratu zomwe zidzachitike pankhaniyi), komanso ngakhale ndi chithunzifile:
kapena ngati njira mtheradi popanda schema (ndiye fayilo yochokera ku FS yakomweko pa node idzagwiritsidwa ntchito) - cholinga - pomwe symlink iyenera kuloza (sangagwiritsidwe ntchito limodzi ndi okhutira kapena gwero)
- mwini - wogwiritsa ntchito yemwe ayenera kukhala ndi fayilo
- gulu - gulu lomwe fayilo iyenera kukhala
- mode - zilolezo zamafayilo (monga chingwe)
- kubweza - imathandizira kukonza chikwatu chobwerezabwereza
- kuyeretsa - imathandizira kufufuta mafayilo omwe sanafotokozedwe mu Chidole
- mphamvu - imathandizira kufufuta maukonde omwe sanafotokozedwe mu Chidole
Phukusi
Kukhazikitsa ndikuchotsa phukusi. Kutha kuthana ndi zidziwitso - kuyikanso phukusi ngati gawo latchulidwa reinstall_on_refresh.
Magawo:
- dzina lachinthu - dzina la phukusi (ngati mukufuna)
- dzina - dzina la phukusi (ngati silinatchulidwe m'dzina)
- WOPEREKA - woyang'anira phukusi kuti agwiritse ntchito
- kuonetsetsa - momwe phukusili likufunira:
present
,installed
- mtundu uliwonse waikidwalatest
- mtundu waposachedwa waikidwaabsent
- kuchotsedwa (apt-get remove
)purged
- zichotsedwa pamodzi ndi mafayilo osinthika (apt-get purge
)held
- phukusi latsekedwa (apt-mark hold
)любая другая строка
- mtundu wotchulidwawo wayikidwa
- reinstall_on_refresh - ngati
true
, ndiye pakalandira zidziwitso phukusilo lidzabwezeretsedwanso. Zothandiza pamagawidwe otengera magwero, pomwe kukonzanso phukusi kungakhale kofunikira posintha magawo omanga. Zosasinthafalse
.
utumiki
Amayang'anira ntchito. Kutha kukonza zidziwitso - kuyambiranso ntchito.
Magawo:
- dzina lachinthu - ntchito yoyendetsedwa (ngati mukufuna)
- dzina - ntchito yomwe ikuyenera kuyang'aniridwa (ngati siyinatchulidwe m'dzina)
- kuonetsetsa - mkhalidwe womwe mukufuna:
running
- anayambitsastopped
- anaima
- athe - amawongolera kuthekera koyambitsa ntchito:
true
- autorun imayatsidwa (systemctl enable
)mask
- obisika (systemctl mask
)false
- autorun yayimitsidwa (systemctl disable
)
- yambitsaninso - lamula kuti muyambitsenso ntchito
- kachirombo - Lamula kuti muwone momwe ntchito ikuyendera
- yayambanso - onetsani ngati intscript yautumiki ikuthandizira kuyambitsanso. Ngati
false
ndipo parameter yafotokozedwa yambitsaninso - mtengo wa parameter iyi umagwiritsidwa ntchito. Ngatifalse
ndi parameter yambitsaninso osatchulidwa - ntchitoyo imayimitsidwa ndikuyamba kuyambiranso (koma systemd imagwiritsa ntchito lamulosystemctl restart
). - hasstatus - onetsani ngati intscript ya utumiki ikugwirizana ndi lamulo
status
. ngatifalse
, ndiye mtengo wa parameter umagwiritsidwa ntchito kachirombo. Zosasinthatrue
.
exec
Amayendetsa malamulo akunja. Ngati simutchula magawo amalenga, pokhapokha, kupatulapo kapena motsitsimula, lamuloli lidzayendetsedwa nthawi iliyonse Chidole chimayendetsedwa. Kutha kukonza zidziwitso - imayendetsa lamulo.
Magawo:
- dzina lachinthu - lamulo loti aphedwe (posankha)
- lamulo - lamulo loti liperekedwe (ngati silinatchulidwe m'dzina)
- njira - Njira zomwe mungayang'anire fayilo yomwe ingathe kuchitika
- pokhapokha - ngati lamulo lomwe lafotokozedwa mu parameter iyi limalizidwa ndi nambala yobwerera zero, lamulo lalikulu lidzaperekedwa
- kupatulapo - ngati lamulo lomwe lafotokozedwa mu parameter iyi litamalizidwa ndi nambala yobwereza yopanda zero, lamulo lalikulu lidzaperekedwa
- amalenga - ngati fayilo yotchulidwa mu parameter iyi palibe, lamulo lalikulu lidzaperekedwa
- motsitsimula - ngati
true
, ndiye kuti lamulo lidzayendetsedwa pokhapokha ngati exec ilandila zidziwitso kuchokera kuzinthu zina - cwd - chikwatu momwe mungayendetsere lamulo
- wosuta - wogwiritsa ntchito yemwe amayendetsa lamulo
- WOPEREKA - momwe mungayendetsere lamulo:
- zovuta - ndondomeko ya mwana imangopangidwa, onetsetsani kuti mwatchulapo njira
- chipolopolo - lamulo limayambitsidwa mu chipolopolo
/bin/sh
, sizingatchulidwe njira, mungagwiritse ntchito globbing, mapaipi ndi zina zipolopolo. Nthawi zambiri zimadziwika zokha ngati pali zilembo zapadera (|
,;
,&&
,||
ndi zina zotero).
cron
Amawongolera ma cronjobs.
Magawo:
- dzina lachinthu - chizindikiritso chamtundu wina chabe
- kuonetsetsa - korona Job state:
present
- pangani ngati kulibeabsent
- chotsani ngati alipo
- lamulo - lamulo loti muthamangire
- environment - malo omwe mungayendetsere lamulo (mndandanda wazosintha zachilengedwe ndi zomwe zimafunikira kudzera
=
) - wosuta - kuchokera kwa wogwiritsa ntchito kuti ayendetse lamulo
- miniti, Ora, sabata, Mwezi, mwezi - nthawi yoti muyendetse cron. Ngati chimodzi mwazinthuzi sichinatchulidwe, mtengo wake mu crontab udzakhala
*
.
Mu Chidole 6.0 cron ngati
Za chuma chonse
Zofunikira pakusiyana kwazinthu
Cholakwika chofala chomwe timakumana nacho ndi Chidziwitso chobwereza. Cholakwika ichi chimachitika pamene zida ziwiri kapena zingapo zamtundu womwewo wokhala ndi dzina lomwelo zikuwonekera m'ndandanda.
Chifukwa chake ndilembanso: ziwonetsero za mfundo zomwezo siziyenera kukhala ndi zinthu zamtundu womwewo wokhala ndi mutu womwewo!
Nthawi zina pamafunika kukhazikitsa mapaketi okhala ndi dzina lomwelo, koma ndi oyang'anira phukusi osiyanasiyana. Pankhaniyi, muyenera kugwiritsa ntchito parameter name
kupewa cholakwika:
package { 'ruby-mysql':
ensure => installed,
name => 'mysql',
provider => 'gem',
}
package { 'python-mysql':
ensure => installed,
name => 'mysql',
provider => 'pip',
}
Mitundu ina yazinthu ili ndi njira zofananira zomwe zingathandize kupewa kubwereza - name
у utumiki, command
у exec, ndi zina zotero.
Metaparameters
Mtundu uliwonse wazinthu uli ndi magawo apadera, mosasamala kanthu za chikhalidwe chake.
Mndandanda wathunthu wa magawo a meta
Mndandanda wachidule:
- amafuna - chizindikiro ichi chikuwonetsa kuti ndi zinthu ziti zomwe zimadalira.
- pamaso - Gawoli limafotokoza kuti ndi zinthu ziti zomwe zimadalira chida ichi.
- Tumizani - chizindikiro ichi chimanena za zomwe chida ichi chimalandira zidziwitso.
- dziwitsa - Gawoli limatchula zinthu zomwe zimalandira zidziwitso kuchokera kuzinthu izi.
Ma metaparameter onse omwe atchulidwawa amavomereza ulalo umodzi wazinthu kapena maulalo angapo m'mabulaketi akuluakulu.
Maulalo kuzinthu
Ulalo wothandizira ndikungotchula za gwero. Amagwiritsidwa ntchito makamaka kusonyeza kudalira. Kulozera chinthu chomwe sichinakhalepo kungayambitse cholakwika chophatikiza.
Mafotokozedwe a ulalo ali motere: mtundu wazinthu wokhala ndi chilembo chachikulu (ngati dzina lamtunduwu lili ndi ma coloni awiri, ndiye kuti gawo lililonse la dzina pakati pa ma coloni limakhala ndi zilembo zazikulu), ndiye dzina lachidziwitso m'mabulaketi akulu (nthawi ya dzinalo). sichisintha!). Pasakhale mipata; mabulaketi masikweya amalembedwa nthawi yomweyo dzina la mtunduwo.
Chitsanzo:
file { '/file1': ensure => present }
file { '/file2':
ensure => directory,
before => File['/file1'],
}
file { '/file3': ensure => absent }
File['/file1'] -> File['/file3']
Zodalira ndi zidziwitso
Monga tanenera kale, kudalirana kosavuta pakati pa zothandizira ndikusintha. Mwa njira, samalani powonjezera zodalira - mutha kupanga kudalira kwa cyclic, zomwe zingayambitse cholakwika chophatikiza.
Mosiyana ndi zodalira, zidziwitso sizisintha. Malamulo otsatirawa amagwira ntchito pazidziwitso:
- Ngati chothandizira chilandira chidziwitso, chimasinthidwa. Zochita zosinthidwa zimatengera mtundu wazinthu - exec amayendetsa lamulo, utumiki kuyambitsanso ntchito, Phukusi imakhazikitsanso phukusi. Ngati gwero lilibe zosintha zomwe zafotokozedwa, ndiye kuti palibe chomwe chimachitika.
- Pakuthamanga kumodzi kwa Chidole, gwerolo limasinthidwa mosapitilira kamodzi. Izi ndizotheka chifukwa zidziwitso zimaphatikizapo kudalira komanso graph yodalira ilibe mikombero.
- Ngati Chidole chikusintha momwe zinthu ziliri, gwerolo limatumiza zidziwitso kuzinthu zonse zomwe zidalembetsedwa.
- Ngati gwero lasinthidwa, limatumiza zidziwitso kuzinthu zonse zomwe zalembedwera.
Kusamalira magawo osadziwika
Monga lamulo, ngati chinthu china chothandizira chilibe mtengo wokhazikika ndipo chizindikirochi sichinatchulidwe mu chiwonetsero, ndiye Chidole sichidzasintha malowa kuti agwirizane ndi mfundoyi. Mwachitsanzo, ngati gwero la mtundu Fayilo parameter sanatchulidwe owner
, ndiye Chidole sichidzasintha mwiniwake wa fayilo yofananira.
Chiyambi cha makalasi, zosinthika ndi matanthauzo
Tiyerekeze kuti tili ndi ma node angapo omwe ali ndi gawo lomwelo la kasinthidwe, koma palinso kusiyana - apo ayi tikhoza kufotokoza zonse mu block imodzi. node {}
. Zachidziwikire, mutha kungotengera magawo ofanana a kasinthidwe, koma nthawi zambiri iyi ndi yankho loyipa - kasinthidwe kakukula, ndipo ngati musintha gawo lonse la kasinthidwe, muyenera kusintha zomwezo m'malo ambiri. Panthawi imodzimodziyo, n'zosavuta kulakwitsa, ndipo kawirikawiri, mfundo ya DRY (musabwereze) idapangidwa pazifukwa.
Kuti athetse vutoli pali mapangidwe monga класс.
Makalasi
Choyamba kalasi iyenera kufotokozedwa. Kufotokozera komweko sikumawonjezera zothandizira kulikonse. Kalasiyo ikufotokozedwa m'mawonekedwe:
# Описание класса начинается с ключевого слова class и его названия.
# Дальше идёт тело класса в фигурных скобках.
class example_class {
...
}
Pambuyo pake, kalasi ikhoza kugwiritsidwa ntchito:
# первый вариант использования — в стиле ресурса с типом class
class { 'example_class': }
# второй вариант использования — с помощью функции include
include example_class
# про отличие этих двух вариантов будет рассказано дальше
Chitsanzo cha ntchito yapitayi - tiyeni tisunthire kuyika ndi kasinthidwe ka nginx m'kalasi:
class nginx_example {
package { 'nginx':
ensure => installed,
}
-> file { '/etc/nginx':
ensure => directory,
source => 'puppet:///modules/example/nginx-conf',
recure => true,
purge => true,
force => true,
}
~> service { 'nginx':
ensure => running,
enable => true,
}
}
node 'server2.testdomain' {
include nginx_example
}
Zosintha
Kalasi yachitsanzo cham'mbuyomu sichisinthika konse chifukwa nthawi zonse imabweretsa masinthidwe ofanana a nginx. Tiyeni tipange njira yosinthira masinthidwe, ndiye kuti kalasi iyi itha kugwiritsidwa ntchito kukhazikitsa nginx ndi kasinthidwe kalikonse.
Zitha kuchitika
Chidziwitso: zosinthika mu Chidole sizisintha!
Kuonjezera apo, kusinthika kungathe kupezedwa pokhapokha atalengezedwa, mwinamwake mtengo wa kusintha udzakhala undef
.
Chitsanzo chogwiritsa ntchito zinthu zosiyanasiyana:
# создание переменных
$variable = 'value'
$var2 = 1
$var3 = true
$var4 = undef
# использование переменных
$var5 = $var6
file { '/tmp/text': content => $variable }
# интерполяция переменных — раскрытие значения переменных в строках. Работает только в двойных кавычках!
$var6 = "Variable with name variable has value ${variable}"
Chidole chatero malo a mayina, ndipo zosinthika, motero, zili nazo malo owonekera: Kusintha komwe kuli ndi dzina lomweli kumatha kufotokozedwa m'malo osiyanasiyana. Pothetsa mtengo wa kusintha, kusinthako kumafufuzidwa mu malo omwe alipo panopa, ndiyeno mu malo otsekedwa, ndi zina zotero.
Zitsanzo zamalo a mayina:
- zapadziko lonse lapansi - zosinthika kunja kwa kalasi kapena mafotokozedwe a node amapita pamenepo;
- node namespace mu kufotokozera mfundo;
- kalasi namespace mu kufotokozera kalasi.
Kuti mupewe kumveka bwino mukapeza zosinthika, mutha kufotokozera dzina la dzinalo mu dzina losinthika:
# переменная без пространства имён
$var
# переменная в глобальном пространстве имён
$::var
# переменная в пространстве имён класса
$classname::var
$::classname::var
Tiyeni tivomereze kuti njira yopita ku kasinthidwe ka nginx ili pakusintha $nginx_conf_source
. Ndiye kalasi idzawoneka motere:
class nginx_example {
package { 'nginx':
ensure => installed,
}
-> file { '/etc/nginx':
ensure => directory,
source => $nginx_conf_source, # здесь используем переменную вместо фиксированной строки
recure => true,
purge => true,
force => true,
}
~> service { 'nginx':
ensure => running,
enable => true,
}
}
node 'server2.testdomain' {
$nginx_conf_source = 'puppet:///modules/example/nginx-conf'
include nginx_example
}
Komabe, chitsanzo choperekedwacho ndi choipa chifukwa pali "chidziwitso chachinsinsi" kuti penapake mkati mwa kalasi kusinthana ndi dzina lotere ndi lotere limagwiritsidwa ntchito. Ndizolondola kwambiri kupanga chidziwitsochi kukhala chodziwika bwino - makalasi amatha kukhala ndi magawo.
Class magawo ndi zosinthika m'malo a mayina a kalasi, zimatchulidwa pamutu wa kalasi ndipo zitha kugwiritsidwa ntchito ngati zosinthika nthawi zonse m'gulu la kalasi. Miyezo ya parameter imafotokozedwa mukamagwiritsa ntchito kalasi mu manifesto.
Parameter ikhoza kukhazikitsidwa ku mtengo wokhazikika. Ngati parameter ilibe mtengo wokhazikika ndipo mtengowo sunakhazikitsidwe ukagwiritsidwa ntchito, umayambitsa cholakwika chophatikiza.
Tiyeni tiyike kalasi kuchokera ku chitsanzo pamwambapa ndikuwonjezera magawo awiri: yoyamba, yofunikira, ndiyo njira yosinthira, ndipo yachiwiri, yosankha, ndi dzina la phukusi ndi nginx (mu Debian, mwachitsanzo, pali phukusi. nginx
, nginx-light
, nginx-full
).
# переменные описываются сразу после имени класса в круглых скобках
class nginx_example (
$conf_source,
$package_name = 'nginx-light', # параметр со значением по умолчанию
) {
package { $package_name:
ensure => installed,
}
-> file { '/etc/nginx':
ensure => directory,
source => $conf_source,
recurse => true,
purge => true,
force => true,
}
~> service { 'nginx':
ensure => running,
enable => true,
}
}
node 'server2.testdomain' {
# если мы хотим задать параметры класса, функция include не подойдёт* — нужно использовать resource-style declaration
# *на самом деле подойдёт, но про это расскажу в следующей серии. Ключевое слово "Hiera".
class { 'nginx_example':
conf_source => 'puppet:///modules/example/nginx-conf', # задаём параметры класса точно так же, как параметры для других ресурсов
}
}
Mu Chidole, zosintha zimatayidwa. Idyani
Mtunduwu umalembedwa nthawi yomweyo dzina la parameter lisanachitike:
class example (
String $param1,
Integer $param2,
Array $param3,
Hash $param4,
Hash[String, String] $param5,
) {
...
}
Makalasi: phatikizani dzina lakalasi ndi kalasi{'classname':}
Kalasi iliyonse ndi gwero la mtundu kalasi. Monga momwe zilili ndi mtundu wina uliwonse wazinthu, sipangakhale zochitika ziwiri za gulu limodzi pa mfundo imodzi.
Ngati muyesa kuwonjezera kalasi ku mfundo yomweyo kawiri pogwiritsa ntchito class { 'classname':}
(palibe kusiyana, ndi magawo osiyanasiyana kapena ofanana), padzakhala cholakwika chophatikiza. Koma ngati mugwiritsa ntchito kalasi mumayendedwe azinthu, mutha kuyika mwachangu magawo ake onse mu chiwonetsero.
Komabe, ngati mugwiritsa ntchito include
, ndiye kuti kalasiyo ikhoza kuwonjezeredwa nthawi zambiri momwe mukufunira. Zoona zake n’zakuti include
ndi ntchito yopanda pake yomwe imayang'ana ngati kalasi yawonjezedwa pamndandanda. Ngati kalasiyo ilibe m'ndandanda, imawonjezera, ndipo ngati ilipo kale, sichita kanthu. Koma pakugwiritsa ntchito include
Simungakhazikitse magawo amkalasi panthawi yolengeza kalasi - magawo onse ofunikira ayenera kukhazikitsidwa mumtundu wakunja wa data - Hiera kapena ENC. Tidzakambirana za iwo m’nkhani yotsatira.
Amatanthauzira
Monga zidanenedwa mu block yapitayi, kalasi lomwelo silingakhalepo pa node kangapo. Komabe, nthawi zina muyenera kugwiritsa ntchito code yomweyi yokhala ndi magawo osiyanasiyana pamfundo imodzi. Mwa kuyankhula kwina, pakufunika mtundu wazinthu zomwezo.
Mwachitsanzo, kuti tiyike gawo la PHP, timachita izi mu Avito:
- Ikani phukusi ndi gawoli.
- Tiyeni tipange fayilo yosinthira gawoli.
- Timapanga symlink ku config kwa php-fpm.
- Timapanga symlink ku config kwa php cli.
Zikatero, kapangidwe monga $title
, komwe dzina lachidziwitso limapita likalengezedwa. Monga momwe zimakhalira ndi makalasi, tanthauzo liyenera kufotokozedwa poyamba, pambuyo pake lingagwiritsidwe ntchito.
Chitsanzo chosavuta chokhala ndi gawo la PHP:
define php74::module (
$php_module_name = $title,
$php_package_name = "php7.4-${title}",
$version = 'installed',
$priority = '20',
$data = "extension=${title}.son",
$php_module_path = '/etc/php/7.4/mods-available',
) {
package { $php_package_name:
ensure => $version,
install_options => ['-o', 'DPkg::NoTriggers=true'], # триггеры дебиановских php-пакетов сами создают симлинки и перезапускают сервис php-fpm - нам это не нужно, так как и симлинками, и сервисом мы управляем с помощью Puppet
}
-> file { "${php_module_path}/${php_module_name}.ini":
ensure => $ensure,
content => $data,
}
file { "/etc/php/7.4/cli/conf.d/${priority}-${php_module_name}.ini":
ensure => link,
target => "${php_module_path}/${php_module_name}.ini",
}
file { "/etc/php/7.4/fpm/conf.d/${priority}-${php_module_name}.ini":
ensure => link,
target => "${php_module_path}/${php_module_name}.ini",
}
}
node server3.testdomain {
php74::module { 'sqlite3': }
php74::module { 'amqp': php_package_name => 'php-amqp' }
php74::module { 'msgpack': priority => '10' }
}
Njira yosavuta yopezera cholakwika cha Duplicate declaration ndi Define. Izi zimachitika ngati tanthauzo liri ndi gwero lokhala ndi dzina lokhazikika, ndipo pali zochitika ziwiri kapena zingapo za tanthauzo ili pamfundo ina.
Ndizosavuta kudziteteza ku izi: zida zonse mkati mwa tanthauzo ziyenera kukhala ndi dzina kutengera $title
. Njira ina ndikuwonjezera zinthu zopanda pake; munjira yosavuta, ndikokwanira kusuntha zinthu zomwe zimafanana ndi nthawi zonse zatanthauzo kukhala gulu lapadera ndikuphatikiza kalasi iyi mu tanthauzo - ntchito. include
wopanda nzeru.
Palinso njira zina zopezera chidziwitso pakuwonjezera zinthu, zomwe ndikugwiritsa ntchito ntchito defined
и ensure_resources
, koma ndikuuzani mu gawo lotsatira.
Kudalira ndi zidziwitso zamakalasi ndi matanthauzo
Makalasi ndi matanthauzo amawonjezera malamulo otsatirawa pakuchita zodalira ndi zidziwitso:
- kudalira kalasi / kufotokozera kumawonjezera kudalira pazinthu zonse za kalasi / kufotokozera;
- kalasi / kufotokozera kudalira kumawonjezera kudalira kumagulu onse / kutanthauzira zofunikira;
- class/define notification amadziwitsa zonse za kalasi/matanthauzo;
- class/define subscription amalembetsa kuzinthu zonse za kalasi/define.
Mawu okhazikika ndi osankhidwa
if
Ndizosavuta apa:
if ВЫРАЖЕНИЕ1 {
...
} elsif ВЫРАЖЕНИЕ2 {
...
} else {
...
}
kupatulapo
Pokhapokha ngati n'zosiyana: chipika cha code chidzachitidwa ngati mawuwo ndi abodza.
unless ВЫРАЖЕНИЕ {
...
}
choncho
Palibenso chovuta apa. Mutha kugwiritsa ntchito zikhalidwe zanthawi zonse (zingwe, manambala, ndi zina), mawu okhazikika, ndi mitundu ya data ngati ma mtengo.
case ВЫРАЖЕНИЕ {
ЗНАЧЕНИЕ1: { ... }
ЗНАЧЕНИЕ2, ЗНАЧЕНИЕ3: { ... }
default: { ... }
}
Osankha
Chosankha ndi chilankhulidwe chofanana ndi case
, koma m'malo mochita chipika cha code, imabweretsa mtengo.
$var = $othervar ? { 'val1' => 1, 'val2' => 2, default => 3 }
Ma module
Kusinthako kukakhala kochepa, kumatha kusungidwa mosavuta mu chiwonetsero chimodzi. Koma masanjidwe ambiri omwe timafotokozera, makalasi ndi ma node ambiri amakhala mu chiwonetserochi, chimakula, ndipo zimakhala zovuta kugwira nawo ntchito.
Kuonjezera apo, pali vuto la kugwiritsanso ntchito kachidindo - pamene code yonse ili mu chiwonetsero chimodzi, zimakhala zovuta kugawana code iyi ndi ena. Pofuna kuthetsa mavuto awiriwa, Chidole chili ndi chinthu chotchedwa ma modules.
Ma module - awa ndi magulu a makalasi, matanthauzo ndi zinthu zina za Zidole zomwe zayikidwa mu bukhu losiyana. Mwanjira ina, gawo ndi gawo lodziyimira pawokha la malingaliro a Chidole. Mwachitsanzo, pakhoza kukhala gawo logwirira ntchito ndi nginx, ndipo lidzakhala ndi zomwe zimafunikira kuti mugwire ntchito ndi nginx, kapena pangakhale gawo logwirira ntchito ndi PHP, ndi zina zotero.
Ma module amasinthidwa, ndipo kudalira kwa ma module pa wina ndi mzake kumathandizidwanso. Pali malo otseguka a ma module -
Pa seva ya chidole, ma modules ali mu subdirectory ya modules ya root directory. M'kati mwa gawo lililonse pali ndondomeko yokhazikika - mawonetseredwe, mafayilo, ma templates, lib, ndi zina zotero.
Mapangidwe a fayilo mu module
Muzu wa gawoli ukhoza kukhala ndi zolemba zotsatirazi zokhala ndi mayina ofotokozera:
manifests
- ili ndi ma manifestofiles
- ili ndi mafayilotemplates
- ili ndi ma templateslib
- ili ndi Ruby code
Uwu si mndandanda wathunthu wamakanema ndi mafayilo, koma ndizokwanira pankhaniyi pakadali pano.
Maina azinthu ndi mayina a mafayilo omwe ali mugawoli
Zida (makalasi, matanthauzo) mu gawo silingatchulidwe momwe mungafune. Kuphatikiza apo, pali kulumikizana kwachindunji pakati pa dzina lachidziwitso ndi dzina la fayilo momwe Chidole chidzayang'ana kufotokozera zachinthucho. Ngati muphwanya malamulo otchulira mayina, ndiye kuti Chidole sichipeza malongosoledwe azinthu, ndipo mupeza cholakwika chophatikiza.
Malamulowo ndi osavuta:
- Zothandizira zonse mu module ziyenera kukhala mu gawo la mayina. Ngati module imatchedwa
foo
, ndiye zonse zomwe zilimo ziyenera kutchulidwafoo::<anything>
, kapena basifoo
. - Zomwe zili ndi dzina la module ziyenera kukhala mufayilo
init.pp
. - Pazinthu zina, chiwembu cha mayina a fayilo ndi awa:
- choyambirira chokhala ndi dzina la module chimatayidwa
- matumbo onse aŵiri, ngati alipo, amasinthidwa ndi kukwapula
- chowonjezera chinawonjezeredwa
.pp
Ndikuwonetsa ndi chitsanzo. Tinene kuti ndikulemba gawo nginx
. Lili ndi zinthu zotsatirazi:
- класс
nginx
zofotokozedwa mu chiwonetseroinit.pp
; - класс
nginx::service
zofotokozedwa mu chiwonetseroservice.pp
; - fotokozani
nginx::server
zofotokozedwa mu chiwonetseroserver.pp
; - fotokozani
nginx::server::location
zofotokozedwa mu chiwonetseroserver/location.pp
.
Mapangidwe
Ndithudi inu nokha mukudziwa zomwe ma templates ali; Sindifotokoza mwatsatanetsatane apa. Koma ndisiya kutero
Momwe mungagwiritsire ntchito ma templates: Tanthauzo la template likhoza kukulitsidwa pogwiritsa ntchito ntchito template
, yomwe imadutsa njira yopita ku template. Kwa zida zamtundu Fayilo amagwiritsidwa ntchito limodzi ndi parameter content
. Mwachitsanzo, monga chonchi:
file { '/tmp/example': content => template('modulename/templatename.erb')
Onani njira <modulename>/<filename>
amatanthauza fayilo <rootdir>/modules/<modulename>/templates/<filename>
.
Kuphatikiza apo, pali ntchito inline_template
- imalandila zolemba za template ngati zolowetsa, osati dzina lafayilo.
Mkati mwa ma templates, mutha kugwiritsa ntchito mitundu yonse ya Zidole zomwe zili pakali pano.
Chidole chimathandizira ma tempuleti mumtundu wa ERB ndi EPP:
Mwachidule za ERB
Zowongolera:
<%= ВЫРАЖЕНИЕ %>
- lowetsani mtengo wa mawuwo<% ВЫРАЖЕНИЕ %>
- kuwerengera mtengo wa mawu (popanda kuyikapo). Mawu okhazikika (ngati) ndi malupu (aliyense) amapita apa.<%# КОММЕНТАРИЙ %>
Mawu mu ERB amalembedwa mu Ruby (ERB kwenikweni Embedded Ruby).
Kuti mupeze zosintha kuchokera ku manifesto, muyenera kuwonjezera @
ku dzina losinthika. Kuti muchotse mzere womwe umawonekera pambuyo pomanga olamulira, muyenera kugwiritsa ntchito chizindikiro chotseka -%>
.
Chitsanzo chogwiritsa ntchito template
Tinene kuti ndikulemba gawo lowongolera ZooKeeper. Kalasi yomwe ili ndi udindo wopanga config ikuwoneka motere:
class zookeeper::configure (
Array[String] $nodes,
Integer $port_client,
Integer $port_quorum,
Integer $port_leader,
Hash[String, Any] $properties,
String $datadir,
) {
file { '/etc/zookeeper/conf/zoo.cfg':
ensure => present,
content => template('zookeeper/zoo.cfg.erb'),
}
}
Ndipo template yogwirizana zoo.cfg.erb
- Ndiye:
<% if @nodes.length > 0 -%>
<% @nodes.each do |node, id| -%>
server.<%= id %>=<%= node %>:<%= @port_leader %>:<%= @port_quorum %>;<%= @port_client %>
<% end -%>
<% end -%>
dataDir=<%= @datadir %>
<% @properties.each do |k, v| -%>
<%= k %>=<%= v %>
<% end -%>
Zowona ndi Zosintha Zomangidwa
Nthawi zambiri gawo lenileni la kasinthidwe limadalira zomwe zikuchitika pa node. Mwachitsanzo, kutengera kutulutsidwa kwa Debian, muyenera kukhazikitsa mtundu umodzi kapena wina wa phukusi. Mutha kuyang'anira zonsezi pamanja, kulembanso kumawonekera ngati ma node asintha. Koma iyi si njira yayikulu; automation ndiyabwinoko.
Kuti mudziwe zambiri za node, Chidole chili ndi njira yotchedwa mfundo. Zambiri - ichi ndi chidziwitso chokhudza node, yomwe imapezeka m'mawonekedwe amtundu wamba wapadziko lonse lapansi. Mwachitsanzo, dzina la alendo, mtundu wa opareshoni, kamangidwe ka purosesa, mndandanda wa ogwiritsa ntchito, mndandanda wamalo ochezera a pa intaneti ndi ma adilesi awo, ndi zina zambiri. Zowona zimapezeka m'mawonekedwe ndi ma templates ngati zosinthika nthawi zonse.
Chitsanzo cha ntchito ndi mfundo:
notify { "Running OS ${facts['os']['name']} version ${facts['os']['release']['full']}": }
# ресурс типа notify просто выводит сообщение в лог
Kunena zowona, chowonadi chili ndi dzina (chingwe) ndi mtengo (mitundu yosiyanasiyana ilipo: zingwe, magulu, madikishonale). Idyani
Panthawi yogwira ntchito, wothandizira zidole amayamba kukopera zosonkhanitsa zonse zomwe zilipo kuchokera pa pappetserver kupita ku node, pambuyo pake amaziyambitsa ndikutumiza zomwe zasonkhanitsidwa kwa seva; Pambuyo pake, seva imayamba kupanga catalog.
Zowona mu mawonekedwe a mafayilo omwe angathe kukwaniritsidwa
Mfundo zotere zimayikidwa mu ma modules mu bukhuli facts.d
. Zachidziwikire, mafayilo ayenera kuchitidwa. Akathamanga, amayenera kutulutsa zidziwitso ku zotulutsa zokhazikika mu YAML kapena key=value format.
Musaiwale kuti zowona zimagwira ntchito pama node onse omwe amayendetsedwa ndi seva ya poppet komwe gawo lanu limatumizidwa. Chifukwa chake, mu script, samalani kuti muwone ngati pulogalamuyo ili ndi mapulogalamu onse ndi mafayilo ofunikira kuti mfundo yanu igwire ntchito.
#!/bin/sh
echo "testfact=success"
#!/bin/sh
echo '{"testyamlfact":"success"}'
Ruby mfundo
Mfundo zotere zimayikidwa mu ma modules mu bukhuli lib/facter
.
# всё начинается с вызова функции Facter.add с именем факта и блоком кода
Facter.add('ladvd') do
# в блоках confine описываются условия применимости факта — код внутри блока должен вернуть true, иначе значение факта не вычисляется и не возвращается
confine do
Facter::Core::Execution.which('ladvdc') # проверим, что в PATH есть такой исполняемый файл
end
confine do
File.socket?('/var/run/ladvd.sock') # проверим, что есть такой UNIX-domain socket
end
# в блоке setcode происходит собственно вычисление значения факта
setcode do
hash = {}
if (out = Facter::Core::Execution.execute('ladvdc -b'))
out.split.each do |l|
line = l.split('=')
next if line.length != 2
name, value = line
hash[name.strip.downcase.tr(' ', '_')] = value.strip.chomp(''').reverse.chomp(''').reverse
end
end
hash # значение последнего выражения в блоке setcode является значением факта
end
end
Mfundo za m’malemba
Mfundo zotere zimayikidwa pa mfundo mu bukhuli /etc/facter/facts.d
mu Chidole chakale kapena /etc/puppetlabs/facts.d
mu Chidole chatsopano.
examplefact=examplevalue
---
examplefact2: examplevalue2
anotherfact: anothervalue
Kufika ku Zoonadi
Pali njira ziwiri zowonera zowona:
- kudzera mu dikishonale
$facts
:$facts['fqdn']
; - kugwiritsa ntchito dzina lenileni ngati dzina losinthika:
$fqdn
.
Ndi bwino kugwiritsa ntchito mtanthauzira mawu $facts
, kapena ngakhale bwino, sonyezani malo apadziko lonse lapansi ($::facts
).
Zosintha zomangidwa
Kupatulapo zowona, palinso
- mfundo zodalirika - zosinthika zomwe zimatengedwa kuchokera ku satifiketi ya kasitomala (popeza satifiketiyo nthawi zambiri imaperekedwa pa seva ya poppet, wothandizira sangangotenga ndikusintha satifiketi yake, kotero zosinthazo ndi "zodalirika"): dzina la satifiketi, dzina la host ndi domain, zowonjezera kuchokera ku satifiketi.
- zowona za seva -zosintha zokhudzana ndi chidziwitso cha seva-mtundu, dzina, adilesi ya IP ya seva, chilengedwe.
- zowona za agent - zosinthika zomwe zimawonjezedwa mwachindunji ndi wothandizila zidole, osati ndi zenizeni - dzina la satifiketi, mtundu wa wothandizira, mtundu wa zidole.
- master variables - Zosintha za Pappetmaster (sic!). Zili zofanana ndi in zowona za seva, kuphatikiza masinthidwe a parameter akupezeka.
- zosintha za compiler - zosintha za compiler zomwe zimasiyana pamlingo uliwonse: dzina la gawo lomwe lilipo komanso dzina la gawo lomwe chinthu chapano chidapezeka. Zitha kugwiritsidwa ntchito, mwachitsanzo, kuti muwone ngati makalasi anu achinsinsi sakugwiritsidwa ntchito mwachindunji kuchokera ku ma module ena.
Zowonjezera 1: momwe mungayendetsere ndikuwongolera zonsezi?
Nkhaniyi inali ndi zitsanzo zambiri za zidole, koma sizinatiuze konse momwe tingayendetsere kachidindo kameneka. Chabwino, ndikudzikonza ndekha.
Wothandizira ndi wokwanira kuyendetsa Chidole, koma nthawi zambiri mudzafunikanso seva.
Agent
Osachepera kuyambira mtundu XNUMX, phukusi la zidole lochokera
Muzosavuta kwambiri, kugwiritsa ntchito kasinthidwe ka chidole, ndikokwanira kuyambitsa wothandizirayo mumayendedwe opanda seva: bola ngati code ya chidole imakopera ku node, kuyambitsa. puppet apply <путь к манифесту>
:
atikhonov@atikhonov ~/puppet-test $ cat helloworld.pp
node default {
notify { 'Hello world!': }
}
atikhonov@atikhonov ~/puppet-test $ puppet apply helloworld.pp
Notice: Compiled catalog for atikhonov.localdomain in environment production in 0.01 seconds
Notice: Hello world!
Notice: /Stage[main]/Main/Node[default]/Notify[Hello world!]/message: defined 'message' as 'Hello world!'
Notice: Applied catalog in 0.01 seconds
Ndikwabwino, inde, kukhazikitsa seva ndikuyendetsa othandizira pa node mumayendedwe a daemon - ndiye kamodzi pa theka la ola adzagwiritsa ntchito kasinthidwe kotsitsidwa kuchokera pa seva.
Mutha kutsanzira chitsanzo chokankhira ntchito - pitani ku mfundo yomwe mukufuna ndikuyamba sudo puppet agent -t
. Chinsinsi -t
(--test
) imaphatikizapo zosankha zingapo zomwe zitha kuyatsidwa payekhapayekha. Zosankha izi zikuphatikiza izi:
- osathamanga mumayendedwe a daemon (mwachisawawa wothandizira akuyamba mumayendedwe a daemon);
- kutseka mutatha kugwiritsa ntchito kabukhulo (mwachisawawa, wothandizira adzapitiriza kugwira ntchito ndikugwiritsa ntchito kasinthidwe kamodzi pa theka la ola);
- lembani chipika chatsatanetsatane cha ntchito;
- onetsani zosintha zamafayilo.
Wothandizira ali ndi njira yogwiritsira ntchito popanda kusintha - mungagwiritse ntchito pamene simukutsimikiza kuti mwalemba ndondomeko yoyenera ndipo mukufuna kufufuza zomwe wothandizilayo angasinthe panthawi ya ntchito. Njirayi imathandizidwa ndi parameter --noop
pamzere wolamula: sudo puppet agent -t --noop
.
Kuphatikiza apo, mutha kuloleza chipika chowongolera ntchitoyo - momwemo, chidole chimalemba zonse zomwe amachita: zazinthu zomwe zikukonzedwa pano, za magawo azinthu izi, za mapulogalamu omwe amayambitsa. Inde, iyi ndi parameter --debug
.
Seva
Sindingaganizire kukhazikitsidwa kwathunthu kwa pappetserver ndikuyika kachidindo m'nkhaniyi; Ndingonena kuti m'bokosilo pali mawonekedwe athunthu a seva omwe safuna kusinthidwa kowonjezera kuti agwire ntchito ndi ochepa. nodes (titi, mpaka zana). Chiwerengero chokulirapo cha node chidzafunika kukonza - mwachisawawa, puppetserver imayamba osapitilira antchito anayi, kuti mugwire ntchito yayikulu muyenera kuwonjezera chiwerengero chawo ndipo musaiwale kuwonjezera malire a kukumbukira, apo ayi seva idzasonkhanitsa zinyalala nthawi zambiri.
Kuyika ma code - ngati mukuyifuna mwachangu komanso mosavuta, yang'anani (pa r10k)[
Zowonjezera 2: Maupangiri a Coding
- Ikani malingaliro onse m'makalasi ndi matanthauzo.
- Sungani makalasi ndi matanthauzidwe mu ma module, osati m'mawonekedwe ofotokozera mfundo.
- Gwiritsani ntchito mfundo zake.
- Osapanga ma ifs potengera mayina a alendo.
- Khalani omasuka kuwonjezera magawo a makalasi ndi matanthauzidwe - izi ndizabwino kuposa malingaliro osamveka bwino obisika m'gulu la kalasi / kufotokozera.
Ndifotokoza chifukwa chake ndikupangira izi m'nkhani yotsatira.
Pomaliza
Tiyeni timalize ndi mawu oyamba. M'nkhani yotsatira ndikuuzani za Hiera, ENC ndi PuppetDB.
Ogwiritsa ntchito olembetsedwa okha ndi omwe angatenge nawo gawo pa kafukufukuyu.
M'malo mwake, pali zambiri - nditha kulemba zolemba pamitu yotsatirayi, kuvota pazomwe mungakonde kuwerenga:
- 59,1%Kupanga zidole zapamwamba - zoyipa zapanthawi ina: malupu, kupanga mapu ndi mawu ena a lambda, otolera zinthu, zinthu zotumizidwa kunja ndi kulumikizana kwapakati kudzera pa Zidole, ma tag, opereka, mitundu ya data.13
- 31,8%"Ndine woyang'anira amayi anga" kapena momwe ife ku Avito tinapanga mabwenzi ndi ma seva angapo a poppet amitundu yosiyanasiyana, ndipo, makamaka, gawo la kuyang'anira seva ya poppet.7
- 81,8%Momwe timalembera khodi ya chidole: zida, zolemba, kuyesa, CI/CD.18
Ogwiritsa ntchito 22 adavota. Ogwiritsa 9 adakana.
Source: www.habr.com