Puppet o se faiga fa'atonu. E faʻaaogaina e aumai ai au i le tulaga manaʻomia ma tausia lenei setete.
Ua silia nei ma le lima tausaga o ou galue ma Puppet. O lenei tusitusiga o se faʻaliliuga ma toe faʻatulagaina tuʻufaʻatasiga o manatu autu mai faʻamaumauga aloaia, lea e mafai ai e tagata amata ona vave malamalama i le uiga o le Puppet.
Faamatalaga autu
O le faiga fa'aoga a le Puppet o le client-server, e ui lava e lagolagoina ai le fa'agaioiga leai se server ma fa'atapula'aina galuega.
O se faʻataʻitaʻiga faʻataʻitaʻiga o loʻo faʻaaogaina: e le mafai, tasi i le afa itula, faʻafesoʻotaʻi e tagata faʻatau le server mo se faʻatulagaga ma faʻaoga. Afai na e galue ma Ansible, ona latou faʻaogaina lea o se faʻataʻitaʻiga faʻataʻitaʻiga ese: e amataina e le pule le faʻagasologa o le faʻaogaina o le faʻatulagaga, o le a le faʻaaogaina e le au faʻatau se mea.
I le taimi o feso'ota'iga feso'ota'iga, e fa'aogaina le fa'ailoga TLS e lua: o le server ma le tagata fa'atau e iai a latou lava ki patino ma tusi fa'atatau. E masani lava ona tuʻuina atu e le 'auʻaunaga tusi faamaonia mo tagata faʻatau, ae i le mataupu faavae e mafai ona faʻaogaina se CA fafo.
Folasaga i fa'aaliga
I upu papeti i le server papeti fa'afeso'ota'i nodes (nodes). Ua tusia le faatulagaga mo nodes i manifestos i se gagana fa'apitoa polokalame - Puppet DSL.
Puppet DSL o se gagana fa'ailoa. O loʻo faʻamatalaina le tulaga manaʻomia o le node i le tulaga o faʻamatalaga o punaoa taʻitasi, mo se faʻataʻitaʻiga:
- O loʻo iai le faila ma e iai mea faʻapitoa.
- Ua fa'apipi'i le afifi.
- Ua amata le auaunaga.
O punaoa e mafai ona fesoʻotaʻi faʻatasi:
- E iai fa'alagolago, latou te a'afia ai le fa'atonuga o lo'o fa'aogaina ai punaoa.
Mo se faʻataʻitaʻiga, "muamua faʻapipiʻi le afifi, ona faʻasaʻo lea o le faila faila, ona amata lea o le auaunaga." - E iai fa'amatalaga - afai ua suia se puna'oa, e tu'uina atu fa'amatalaga i puna'oa o lo'o lesitala i ai.
Mo se faʻataʻitaʻiga, afai e suia le faila faʻapipiʻi, e mafai ona e toe amataina le auaunaga.
E le gata i lea, o le Puppet DSL o loʻo i ai galuega ma fesuiaiga, faʻapea foʻi ma faʻamatalaga faʻamaonia ma tagata filifilia. E lagolagoina fo'i faiga fa'atusa eseese - EPP ma ERB.
Papeti e tusia i le Ruby, o le tele o fausaga ma faaupuga e ave mai iina. Ruby faʻatagaina oe e faʻalautele le Puppet - faʻaopoopo faʻamatalaga faigata, ituaiga fou o punaoa, galuega.
A'o tamo'e le Puppet, o fa'aaliga mo node ta'itasi i luga o le 'au'aunaga e tu'ufa'atasia i totonu o se lisi. aufaʻatonu o se lisi o punaoa ma latou sootaga ina ua uma ona fuafuaina le tau o galuega tauave, fesuiaiga ma le faalauteleina o faamatalaga tuutuuga.
Syntax ma codestyle
O vaega nei o faʻamaumauga aloaia o le a fesoasoani ia te oe e malamalama ai i le syntax pe afai e le lava faʻataʻitaʻiga:
O se fa'ata'ita'iga lea o foliga o le fa'aaliga:
# Комментарии пишутся, как и много где, после решётки.
#
# Описание конфигурации ноды начинается с ключевого слова node,
# за которым следует селектор ноды — хостнейм (с доменом или без)
# или регулярное выражение для хостнеймов, или ключевое слово default.
#
# После этого в фигурных скобках описывается собственно конфигурация ноды.
#
# Одна и та же нода может попасть под несколько селекторов. Про приоритет
# селекторов написано в статье про синтаксис описания нод.
node 'hostname', 'f.q.d.n', /regexp/ {
# Конфигурация по сути является перечислением ресурсов и их параметров.
#
# У каждого ресурса есть тип и название.
#
# Внимание: не может быть двух ресурсов одного типа с одинаковыми названиями!
#
# Описание ресурса начинается с его типа. Тип пишется в нижнем регистре.
# Про разные типы ресурсов написано ниже.
#
# После типа в фигурных скобках пишется название ресурса, потом двоеточие,
# дальше идёт опциональное перечисление параметров ресурса и их значений.
# Значения параметров указываются через т.н. hash rocket (=>).
resource { 'title':
param1 => value1,
param2 => value2,
param3 => value3,
}
}
O fa'ailoga ma laina laina e le o se vaega mana'omia o le fa'aaliga, ae o lo'o i ai se fautuaga
- E lua avanoa avanoa, e le fa'aaogaina ta'iala.
- O fa'a'au fa'a'i'i e va'ava'a e se avanoa;
- Koma i tua o parakalafa ta'itasi, e aofia ai le pito mulimuli. O fa'ailoga ta'itasi o lo'o i luga o se laina ese. E faia se tuusaunoaga mo le mataupu e aunoa ma ni tapulaʻa ma se tasi parakalafa: e mafai ona e tusi i luga o le laina e tasi ma aunoa ma se koma (ie.
resource { 'title': }
иresource { 'title': param => value }
). - O aū i luga o tapulaʻa e tatau ona tutusa le tulaga.
- O aū sootaga o punaoa o loʻo tusia i luma o latou.
Tulaga o faila ile pappetserver
Mo nisi faʻamatalaga, o le a ou faʻalauiloaina le manatu o le "root directory". O le root directory o le lisi lea o loʻo i ai le faʻatulagaga Puppet mo se node patino.
O le root directory e fesuisuiaʻi e faʻatatau i le faʻasologa o Papeti ma siosiomaga o loʻo faʻaaogaina. Si'osi'omaga o seti tuto'atasi o le fa'atulagaina o lo'o teuina i totonu o fa'amaumauga eseese. E masani ona faʻaaogaina faʻatasi ma le git, i le tulaga lea e faia ai siosiomaga mai lala git. E tusa ai, o node taitasi o loʻo i totonu o se tasi poʻo se isi siosiomaga. E mafai ona faʻatulagaina i luga o le node lava ia, poʻo le ENC, lea o le a ou talanoa i ai i le isi tusiga.
- I le fa'asologa lona tolu ("Papeti tuai") o le fa'atonuga fa'avae sa
/etc/puppet
. O le fa'aogaina o si'osi'omaga e filifili - mo se fa'ata'ita'iga, matou te le fa'aogaina i le Papeti tuai. Afai e fa'aogaina si'osi'omaga, e masani lava ona teuina i totonu/etc/puppet/environments
, o le root directory o le a avea ma directory environment. Afai e le fa'aogaina si'osi'omaga, o le a'a o le a avea ma fa'amaumauga autu. - Amata mai le fa'aliliuga lona fa ("Papeti fou"), o le fa'aogaina o si'osi'omaga na fa'atulafonoina, ma o le fa'atonuga fa'avae na si'i atu i
/etc/puppetlabs/code
. E tusa ai, o siosiomaga e teuina i totonu/etc/puppetlabs/code/environments
, root directory o le siosiomaga directory.
E tatau ona i ai se subdirectory i le root directory manifests
, o lo'o i ai se tasi pe sili atu fa'aaliga e fa'amatala ai nodes. E le gata i lea, e tatau ona i ai se subdirectory modules
, o loʻo i ai modules. O le a ou taʻu atu ia te oe poʻo a modules o loʻo i ai i se taimi mulimuli ane. E le gata i lea, o le Papeti tuai e mafai foi ona i ai se subdirectory files
, lea e iai faila eseese tatou te kopiina i nodes. I le Papeti fou, o faila uma e tuʻu i modules.
O faila Manifest e iai le faʻaopoopoga .pp
.
O ni nai faataitaiga tau
Fa'amatalaga o le node ma punaoa i luga
I luga o le node server1.testdomain
e tatau ona fai se faila /etc/issue
ma le anotusi Debian GNU/Linux n l
. O le faila e tatau ona umia e se tagata fa'aoga ma se vaega root
, e tatau ona iai aia tatau 644
.
Matou te tusia se faʻaaliga:
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 в начале будет воспринято как записанное в восьмеричной системе, и всё пойдёт не так, как задумано
}
}
Sootaga i le va o punaoa i luga o se node
I luga o le node server2.testdomain
nginx e tatau ona tamoʻe, galue ma se faʻatulagaga na saunia muamua.
Sei o tatou fa'avasega le fa'afitauli:
- E manaʻomia ona faʻapipiʻi le afifi
nginx
. - E mana'omia le kopiina o faila fa'atulagaina mai le 'au'aunaga.
- E tatau ona fa'agasolo le tautua
nginx
. - Afai e toe faʻafouina le faʻatulagaga, e tatau ona toe amataina le tautua.
Matou te tusia se faʻaaliga:
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 получает уведомление,
# соответствующий сервис перезапускается.
}
Mo lenei mea e galue, e te manaʻomia pe tusa o le nofoaga faila i luga o le papeti server:
/etc/puppetlabs/code/environments/production/ # (это для нового Паппета, для старого корневой директорией будет /etc/puppet)
├── manifests/
│ └── site.pp
└── modules/
└── example/
└── files/
└── nginx-conf/
├── nginx.conf
├── mime.types
└── conf.d/
└── some.conf
Ituaiga Punaoa
O se lisi atoa o ituaiga punaoa lagolago e mafai ona maua iinei
faila
Puleaina faila, directories, symlinks, o latou anotusi, ma aia tatau.
Tapulaa:
- igoa punaoa - ala i le faila (filifiliga)
- Ala - ala i le faila (pe a le o faʻamaonia i le igoa)
- mautinoa - ituaiga faila:
absent
- tape se failapresent
- e tatau ona i ai se faila o soʻo se ituaiga (afai e leai se faila, o le a faia se faila masani)file
- faila masanidirectory
- lisilink
- symlink
- lotomalie - faila i totonu (e talafeagai mo faila masani, e le mafai ona faʻaoga faʻatasi ma puna poʻo taulaʻi)
- puna - o se fesoʻotaʻiga i le ala e te manaʻo e kopi ai mea o loʻo i totonu o le faila (e le mafai ona faʻaoga faʻatasi ma lotomalie poʻo taulaʻi). E mafai ona faʻamaonia o se URI ma se polokalame
puppet:
(ona fa'aaogaina lea o faila mai le server puppet), ma fa'atasi ai ma le polokalamehttp:
(Ou te faʻamoemoe e manino le mea o le a tupu i lenei tulaga), ma e oʻo lava i le atafile:
pe o se auala faʻapitoa e aunoa ma se fuafuaga (ona faʻaaogaina lea o le faila mai le FS faʻapitonuʻu i luga o le node) - taulaʻi - o fea e tatau ona faasino i ai le symlink (e le mafai ona faʻaoga faʻatasi ma lotomalie poʻo puna)
- pule - le tagata fa'aoga e tatau ona umia le faila
- vasega — le vaega e tatau ona iai le faila
- faiga - fa'atagaga faila (e pei o se manoa)
- toe fai - e mafai ai ona fa'agasolo fa'asologa o fa'amaumauga
- faamama - fa'atagaina le tapeina o faila e le o fa'amatalaina i le Puppet
- malosi - fa'atagaina le tapeina o fa'atonuga e le o fa'amatalaina i le Puppet
afī
Fa'apipi'i ma aveese afifi. Mafai ona taulimaina faʻamatalaga - toe faʻapipiʻi le afifi pe a faʻamaonia le parakalafa reinstall_on_refresh.
Tapulaa:
- igoa punaoa - igoa o le afifi (filifiliga)
- igoa - igoa o le afifi (pe a le o taʻua i le igoa)
- kamupani e tuuina - pule o pusa e faʻaaoga
- mautinoa - tulaga mana'omia o le afifi:
present
,installed
- so'o se lomiga fa'apipi'ilatest
- fa'apipi'i lomiga fouabsent
- tapeina (apt-get remove
)purged
- tape faʻatasi ma faila faʻatulagaina (apt-get purge
)held
- o lo'o loka le fa'asologa o afifi (apt-mark hold
)любая другая строка
- ua faʻapipiʻiina le faʻamatalaga faʻapitoa
- reinstall_on_refresh - afai
true
, ona maua lea o le faʻamatalaga o le a toe faʻapipiʻi le afifi. Fa'aoga mo fa'asoa fa'avae, lea e mana'omia ai le toe fausia o afifi pe a suia fa'amaufa'ailoga faufale. Fa'atonufalse
.
tautua
Puleaina auaunaga. Mafai ona fa'agasolo fa'amatalaga - toe amata le auaunaga.
Tapulaa:
- igoa punaoa - tautua e pulea (filifiliga)
- igoa - le 'au'aunaga e mana'omia ona fa'atautaia (pe a le fa'ama'oti i le igoa)
- mautinoa — tulaga manaomia o le auaunaga:
running
- fa'alauiloastopped
- taofi
- mafai ai ona — pulea le tomai e amata ai le auaunaga:
true
- ua mafai le autorun (systemctl enable
)mask
- fa'afoliga (systemctl mask
)false
- ua le atoatoa le autorun (systemctl disable
)
- toe amata - fa'atonuga e toe amata le tautua
- tulaga — poloaiga e siaki le tulaga o le auaunaga
- toe amata - fa'ailoa mai pe lagolagoina e le Initia Initia le toe amataina. Afai
false
ma ua faamaoti mai le parakalafa toe amata - o le tau o lenei parakalafa o loʻo faʻaaogaina. Afaifalse
ma le parakalafa toe amata e le o faʻamaonia - ua taofi le tautua ma amata ona toe amata (ae faʻaaoga e le systemd le poloaigasystemctl restart
). - hasstatus — faailoa mai pe lagolagoina e le Initia Initia le poloaiga
status
. Afaifalse
, ona faʻaaogaina lea o le tau o le parakalafa tulaga. Fa'atonutrue
.
exec
Fa'atonu fa'atonuga fafo. Afai e te le faʻamaotiina faʻamau foafoa, pe afai, seia vagana poʻo faafou, o le a fa'atonu le fa'atonuga i taimi uma e ta'avale ai le Papeti. Mafai ona fa'agasolo fa'amatalaga - fa'atino se fa'atonuga.
Tapulaa:
- igoa punaoa - fa'atonuga e fa'atino (filifiliga)
- faʻatonuga - le faʻatonuga e faʻatino (pe a le o faʻamaonia i le igoa)
- Ala - auala e suʻe ai le faila faila
- pe afai - afai o le poloaiga o loʻo faʻamaonia i lenei parakalafa e faʻamaeʻaina ma le zero return code, o le a faʻataunuʻuina le poloaiga autu
- seia vagana - afai o le faʻatonuga o loʻo faʻamaonia i lenei parakalafa ua maeʻa i se numera e le-zero, o le a faʻataunuʻuina le poloaiga autu.
- foafoa - afai e le o iai le faila o loʻo faʻamaonia i lenei parakalafa, o le a faʻataunuʻuina le poloaiga autu
- faafou - afai
true
, ona faʻatonuina lea o le faʻatonuga pe a maua e lenei exec faʻamatalaga mai isi punaoa - cwd — directory lea e fai ai le poloaiga
- tagata faʻaaogā - o le tagata faʻaoga e faʻatautaia le poloaiga
- kamupani e tuuina - fa'afefea ona fai le fa'atonuga:
- faʻaaliga - o se faiga tamaititi ua naʻo le faia, ia mautinoa e faʻamaonia Ala
- atigi - o le faʻatonuga e faʻalauiloa i totonu o le atigi
/bin/sh
, e le mafai ona faʻamaonia Ala, e mafai ona e faʻaogaina le globbing, paipa ma isi faʻaoga atigi. E masani ona iloa otometi pe a iai ni mataitusi faapitoa (|
,;
,&&
,||
ma faapena atu ai lava).
cron
Puleaina cronjobs.
Tapulaa:
- igoa punaoa - na'o se ituaiga fa'ailoga
- mautinoa - tulaga crownjob:
present
- fatu pe a le o iaiabsent
- tape pe a iai
- faʻatonuga - o le a le poloaiga e tamoe
- siosiomaga - o fea siosiomaga e faʻatautaia ai le faʻatonuga (lisi o fesuiaiga o le siosiomaga ma o latou tau e ala i
=
) - tagata faʻaaogā - mai ai le tagata faʻaoga e faʻatautaia le poloaiga
- minute, itula, aso o le vaiaso, masina, aso masina - le taimi e tamoe ai cron. Afai e le o fa'ailoa mai se tasi o nei uiga, o lona tau i le crontab o le
*
.
I le Papeti 6.0 cron peiseai
E uiga i punaoa lautele
Manaoga mo le tulaga ese o punaoa
O le mea sese masani tatou te fetaiai o le Ta'utinoga fa'alua. E tupu lenei mea pe a lua pe sili atu punaoa o le ituaiga tutusa ma le igoa tutusa e aliali mai i totonu o le lisi.
O lea, o le a ou toe tusi atu: fa'aaliga mo le node tutusa e le tatau ona aofia ai punaoa o le ituaiga tutusa ma le igoa tutusa!
O nisi taimi e manaʻomia le faʻapipiʻiina o afifi ma le igoa tutusa, ae faʻatasi ai ma pule o pusa eseese. I lenei tulaga, e tatau ona e faʻaogaina le parakalafa name
ia aloese mai le mea sese:
package { 'ruby-mysql':
ensure => installed,
name => 'mysql',
provider => 'gem',
}
package { 'python-mysql':
ensure => installed,
name => 'mysql',
provider => 'pip',
}
O isi ituaiga punaoa e iai filifiliga tutusa e fesoasoani e aloese ai mai le toe fa'aluaina − name
у tautua, command
у exec, ma faapena atu ai lava.
Metaparameters
O ituaiga puna'oa ta'itasi e iai ni vaega fa'apitoa, tusa lava po'o le a lona natura.
Lisi atoa o meta parameters
Lisi pupuu:
- manaʻomia - o lenei fa'ailoga e fa'ailoa mai ai po'o fea alagaoa e fa'alagolago i ai lenei punaoa.
- aʻo leʻi - O lenei ta'iala e fa'amaoti mai po'o fea alagaoa e fa'alagolago i lenei punaoa.
- lesitala — o lenei ta'otoga e fa'amaoti mai po'o fea alagaoa e maua ai fa'amatalaga.
- logoina — O lenei ta'iala o lo'o fa'amaoti mai po'o fea punaoa e maua fa'amatalaga mai lenei punaoa.
O metaparameters uma o lo'o lisiina e talia a le tasi le so'oga puna'oa po'o le fa'asologa o so'oga i puipui sikuea.
So'oga i punaoa
O se so'oga o puna'oa e na'o le ta'ua o le puna'oa. E masani lava ona faʻaaogaina e faʻaalia ai faʻalagolago. O le fa'asinoina o se puna'oa e le o iai o le a mafua ai se mea sese o le tu'ufa'atasiga.
O le fa'asologa o le feso'ota'iga e fa'apea: ituaiga punaoa ma se mataitusi tetele (afai o le igoa o le igoa o lo'o i ai ni kolone lua, ona mataitusi tetele lea o vaega ta'itasi o le igoa i le va o kolone), ona fa'aigoaina lea o le igoa punaoa i puipui sikuea (o le mataupu o le igoa. e le suia!). E le tatau ona i ai ni avanoa; fa'amaufa'ailoga sikuea e tusia vave pe a uma le igoa o le ituaiga.
Faataitaiga:
file { '/file1': ensure => present }
file { '/file2':
ensure => directory,
before => File['/file1'],
}
file { '/file3': ensure => absent }
File['/file1'] -> File['/file3']
Fa'alagolago ma fa'amatalaga
E pei ona taʻua muamua, o faʻalagolago faigofie i le va o punaoa o loʻo faʻasolosolo. I le auala, ia faʻaeteete pe a faʻaopoopo faʻalagolago - e mafai ona e fatuina faʻalagolago i le taamilosaga, lea o le a mafua ai se mea sese.
E le pei o fa'alagolago, o fa'amatalaga e le fealua'i. O tulafono nei e fa'atatau mo fa'amatalaga:
- Afai e maua e le punaoa se faʻamatalaga, e faʻafouina. O gaioiga fa'afouga e fa'alagolago ile ituaiga punaoa − exec e fai le poloaiga, tautua toe amata le auaunaga, afī toe fa'apipi'i le afifi. Afai o le punaoa e leai se faʻamatalaga faʻamatalaga faʻamalamalamaina, e leai se mea e tupu.
- I le taimi e tasi o le Papeti, e le sili atu ma le tasi le faʻafouina o punaoa. E mafai lenei mea ona o fa'amatalaga e aofia ai fa'alagolago ma le kalafi fa'alagolago e leai ni ta'amilosaga.
- Afai e suia e Papeti le tulaga o se punaoa, e auina atu e le punaoa faʻamatalaga i punaoa uma o loʻo faʻapipiʻiina i ai.
- Afai e fa'afou se punaoa, e tu'uina atu fa'amatalaga i puna'oa uma o lo'o fa'amauina i ai.
Taulimaina ta'iala e le'i fa'ailoaina
I le avea ai o se tulafono, afai e le o iai se tau fa'aletonu i nisi o puna'oa ma e le o fa'amaoti mai lenei fa'ailoga i le fa'aaliga, ona le suia lea e le Puppet lenei meatotino mo le punaoa talafeagai i le node. Mo se faʻataʻitaʻiga, afai o se punaoa o le ituaiga faila fa'amauina e le'o fa'amaonia owner
, ona le suia lea e Puppet le tagata e ona le faila talafeagai.
Folasaga i vasega, fesuiaiga ma fa'amatalaga
Fa'apea e tele a tatou nodes e tutusa le vaega o le fa'atulagaga, ae e iai fo'i eseesega - a leai e mafai ona tatou fa'amatalaina uma i le poloka e tasi node {}
. Ioe, e mafai ona e kopiina vaega tutusa o le faʻatulagaga, ae i se tulaga lautele o se fofo leaga lea - o le faʻatulagaina e tupu, ma afai e te suia le vaega lautele o le faʻatulagaga, e tatau ona e faʻasaʻo le mea lava e tasi i le tele o nofoaga. I le taimi lava e tasi, e faigofie ona faia se mea sese, ma i se tulaga lautele, o le DRY (aua le toe faia oe lava) mataupu faavae na fatuina mo se mafuaaga.
Ina ia foia lenei faafitauli o loo i ai se mamanu faapea класс.
Vasega
Muamua e tatau ona faamatalaina le vasega. O le faʻamatalaga lava ia e le faʻaopoopoina soʻo se punaoa i soʻo se mea. O le vasega o loʻo faʻamatalaina i faʻaaliga:
# Описание класса начинается с ключевого слова class и его названия.
# Дальше идёт тело класса в фигурных скобках.
class example_class {
...
}
A maeʻa lenei mea e mafai ona faʻaaogaina le vasega:
# первый вариант использования — в стиле ресурса с типом class
class { 'example_class': }
# второй вариант использования — с помощью функции include
include example_class
# про отличие этих двух вариантов будет рассказано дальше
O se faʻataʻitaʻiga mai le galuega muamua - seʻi o tatou faʻagasolo le faʻapipiʻiina ma le faʻatulagaina o le nginx i totonu o se vasega:
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
}
Fesuiaʻiga
O le vasega mai le faʻataʻitaʻiga muamua e le mafai ona fetuutuunai aua e aumaia i taimi uma le faatulagaga nginx tutusa. Sei o tatou faia le ala i le fesuiaiga o fetuunaiga, ona mafai lea ona faʻaogaina lenei vasega e faʻapipiʻi ai le nginx ma soʻo se faʻatulagaga.
E mafai ona fai
Fa'alogo: o fesuiaiga i Papeti e le mafai ona suia!
E le gata i lea, o se fesuiaiga e faatoa mafai ona maua pe a uma ona faʻaalia, a leai o le tau o le fesuiaiga o le a undef
.
Fa'ata'ita'iga o le galue ma fesuiaiga:
# создание переменных
$variable = 'value'
$var2 = 1
$var3 = true
$var4 = undef
# использование переменных
$var5 = $var6
file { '/tmp/text': content => $variable }
# интерполяция переменных — раскрытие значения переменных в строках. Работает только в двойных кавычках!
$var6 = "Variable with name variable has value ${variable}"
Ua iai le papeti igoa avanoa, ma o fesuiaiga, e tusa ai, ei ai vaega o le va'aia: O se fesuiaiga e tutusa le igoa e mafai ona faauigaina i igoa eseese. Pe a foia le tau o se fesuiaiga, e suʻe le fesuiaiga i le igoa o loʻo i ai nei, sosoo ai ma le igoa faʻapipiʻi, ma isi.
Fa'ata'ita'iga ole igoa ole igoa:
- lalolagi - fesuiaiga i fafo atu o le vasega poʻo faʻamatalaga node alu i ai;
- node namespace i le fa'amatalaga node;
- igoa ole vasega ile fa'amatalaga ole vasega.
Ina ia aloese mai le le mautonu pe a oʻo i se fesuiaiga, e mafai ona e faʻamaonia le igoa ole igoa ile igoa fesuiaʻi:
# переменная без пространства имён
$var
# переменная в глобальном пространстве имён
$::var
# переменная в пространстве имён класса
$classname::var
$::classname::var
Sei o tatou malilie o le ala i le nginx configuration o loʻo taoto i le fesuiaiga $nginx_conf_source
. Ona foliga lea o le vasega:
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
}
Ae ui i lea, o le faʻataʻitaʻiga ua tuʻuina atu e leaga ona o loʻo i ai se "malamalama faalilolilo" o se mea i totonu o le vasega o se fesuiaiga e iai se igoa faapena ma se igoa e faʻaaogaina. E sili atu ona sa'o le fa'alauteleina o lenei malamalama - e mafai e vasega ona iai ni tapula'a.
Vasega tapula'a o ni fesuiaiga i le igoa o le vasega, o loʻo faʻamaonia i le ulutala vasega ma e mafai ona faʻaaogaina e pei o fesuiaiga masani i le tino o le vasega. Fa'amauina tulaga taua pe a fa'aogaina le vasega i le fa'aaliga.
E mafai ona seti le parakalafa i se tau le aoga. Afai e leai se tau fa'aletonu o se parakalafa ma e le o setiina le tau pe a fa'aaogaina, o le a mafua ai se mea sese o le tu'ufa'atasiga.
Sei o tatou faʻavasegaina le vasega mai le faʻataʻitaʻiga o loʻo i luga ma faʻaopoopo i ai ni taʻaloga se lua: muamua, manaʻomia, o le ala i le faʻatulagaga, ma le lona lua, filifili, o le igoa o le afifi ma nginx (i Debian, mo se faʻataʻitaʻiga, o loʻo i ai afifi. 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', # задаём параметры класса точно так же, как параметры для других ресурсов
}
}
I le Puppet, e fa'aigoa ai fesuiaiga. 'A'ai
O le ituaiga e tusia i luma o le igoa parakalafa:
class example (
String $param1,
Integer $param2,
Array $param3,
Hash $param4,
Hash[String, String] $param5,
) {
...
}
Vasega: aofia ai le igoa vasega vs vasega{'classname':}
O vasega taitasi o se punaoa o ituaiga vasega. E pei o isi ituaiga punaoa, e le mafai ona lua faʻataʻitaʻiga o le vasega lava e tasi i le node e tasi.
Afai e te taumafai e faʻaopoopo se vasega i le node e tasi faʻalua faʻaaoga class { 'classname':}
(leai se eseesega, faʻatasi ai ma faʻasologa eseese pe tutusa), o le ai ai se mea sese faʻapipiʻi. Ae afai e te faʻaogaina se vasega i le sitaili punaoa, e mafai ona e vave faʻatulagaina ona faʻamaufaʻailoga uma i le faʻaaliga.
Ae peitai, afai e te faʻaaogaina include
, ona mafai lea ona faaopoopo le vasega i le tele o taimi e manao ai. O le mea moni e faapea include
ose galuega fa'apitoa e siaki pe ua fa'aopoopo se vasega i le lisi. Afai e le o iai le vasega i totonu o le lisi, e fa'aopoopoina, ma afai ua i ai, e leai se mea. Ae i le tulaga o le faʻaaogaina include
E le mafai ona e setiina ta'iala a le vasega ile ta'utinoga a le vasega - e tatau ona tu'u uma fa'amaufa'ailoga mana'omia ile puna fa'amatalaga mai fafo - Hiera po'o le ENC. Ka sau‵tala tatou e uiga ki a latou i te suā mataupu.
Fa'amatala
E pei ona taʻua i le poloka talu ai, o le vasega lava e tasi e le mafai ona i ai i luga o se node e sili atu ma le tasi. Ae ui i lea, i nisi tulaga e te manaʻomia le mafai ona faʻaogaina le poloka tutusa o le code faʻatasi ai ma faʻasologa eseese i luga o le node tutusa. I se isi faaupuga, o loʻo i ai se manaʻoga mo se ituaiga punaoa lava ia.
Mo se faʻataʻitaʻiga, ina ia faʻapipiʻi le PHP module, matou te faia mea nei i Avito:
- Fa'apipi'i le afifi i lenei module.
- Se'i o tatou faia se faila fa'atulagaina mo lenei module.
- Matou te fatuina se symlink i le config mo php-fpm.
- Matou te fatuina se symlink i le config mo php cli.
I ia tulaga, o se mamanu e pei o $title
, i le mea e alu i ai le igoa punaoa pe a faʻaalia. E pei lava o le tulaga o vasega, e tatau ona faʻamatalaina muamua se faʻamatalaga, a maeʻa ona faʻaaogaina.
O se faʻataʻitaʻiga faigofie ma se module mo 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' }
}
O le auala pito sili ona faigofie e pu'e ai le Fa'amatalaga Fa'alua sese o lo'o i totonu Define. E tupu lenei mea pe afai o se faʻamatalaga o loʻo i ai se punaoa ma se igoa tumau, ma e lua pe sili atu faʻamatalaga o lenei faʻamatalaga i luga o nisi node.
E faigofie ona puipuia oe mai lenei mea: o punaoa uma i totonu o le faʻamatalaga e tatau ona i ai se igoa e faʻalagolago i ai $title
. O se isi mea o le faʻaopoopoina o punaoa i le tulaga sili ona faigofie, ua lava le faʻanofoina o punaoa masani i taimi uma o le faʻamatalaga i se vasega ese ma aofia ai lenei vasega i le faʻamatalaga - galuega; include
fa'aletonu.
E i ai isi auala e ausia ai le le atoatoa pe a faʻaopoopo punaoa, e pei o le faʻaaogaina o galuega defined
и ensure_resources
, ae o le a ou taʻu atu ia te oe i le isi vaega.
Fa'alagolago ma fa'amatalaga mo vasega ma fa'amatalaga
Vasega ma fa'amatalaga fa'aopoopo tulafono nei i le fa'afoeina o fa'alagolago ma fa'amatalaga:
- fa'alagolago ile vasega/fa'amatala fa'aopoopo fa'alagolago ile punaoa uma ole vasega/fa'amatala;
- se vasega/fa'amatala fa'alagolago fa'aopoopo fa'alagolago ile vasega uma/fa'amatala punaoa;
- vasega/fa'amatala fa'asilasilaga e logoina uma punaoa a le vasega/fa'amatala;
- vasega/fa'amatala le lesitala e lesitala i punaoa uma o le vasega/fa'amatala.
Fa'amatalaga aiaiga ma tagata filifilia
if
E faigofie iinei:
if ВЫРАЖЕНИЕ1 {
...
} elsif ВЫРАЖЕНИЕ2 {
...
} else {
...
}
seia vagana
se'i vagana o se pe afai i tua: o le poloka o le code o le a faia pe afai e sese le faaupuga.
unless ВЫРАЖЕНИЕ {
...
}
tulaga
E leai foi se mea faigata iinei. E mafai ona e faʻaogaina tulaga masani ( manoa, numera, ma isi), faʻamatalaga masani, ma ituaiga faʻamaumauga e fai ma tau.
case ВЫРАЖЕНИЕ {
ЗНАЧЕНИЕ1: { ... }
ЗНАЧЕНИЕ2, ЗНАЧЕНИЕ3: { ... }
default: { ... }
}
Tagata filifilia
O le tagata filifilia o se gagana e fau tutusa ma case
, ae nai lo le faʻatinoina o se poloka o code, e toe faʻafoʻi mai ai se tau.
$var = $othervar ? { 'val1' => 1, 'val2' => 2, default => 3 }
Modules
Pe a laʻititi le faʻatulagaga, e faigofie ona teuina i se tasi faʻaaliga. Ae o le tele o faʻasalalauga tatou te faʻamatalaina, o le tele o vasega ma nodes o loʻo i ai i le faʻaaliga, e tupu aʻe, ma e le faigofie ona galue.
E le gata i lea, o loʻo i ai le faʻafitauli o le toe faʻaaogaina o le code - a oʻo uma le code i le tasi faʻaaliga, e faigata ona faʻasoa lenei code i isi. Ina ia foia nei faʻafitauli e lua, o le Puppet e iai se faʻalapotopotoga e taʻua o modules.
Modules - o seti nei o vasega, fa'auigaga ma isi fa'alapotopotoga Papeti tu'u i totonu o se fa'atonuga ese'ese. I se isi faaupuga, o le module o se vaega tuto'atasi o le Puppet logic. Mo se faʻataʻitaʻiga, atonu o loʻo i ai se module mo le galue ma le nginx, ma o le a aofia ai mea ma naʻo mea e manaʻomia e galue ai ma nginx, pe ono iai se module mo le galue ma PHP, ma isi.
O lo'o fa'aliliuina, ma o lo'o fa'alagolago fo'i fa'alagolago le tasi i le isi. O loʻo i ai se faʻamaumauga tatala o modules -
I luga o le 'au'aunaga papeti, o lo'o i totonu o le fa'atonuga o modules o le root directory. I totonu o module taʻitasi o loʻo i ai se faʻataʻitaʻiga masani - faʻaaliga, faila, faʻataʻitaʻiga, lib, ma isi.
Faiga faila i totonu o se module
O le a'a o le module e mafai ona i ai tusitaiala nei ma igoa fa'amatala:
manifests
- o loʻo i ai faʻaaligafiles
- e iai failatemplates
- o lo'o iai fa'ata'ita'igalib
- o loʻo i ai le tulafono Ruby
E le o se lisi atoa lea o lisi ma faila, ae ua lava mo lenei tusiga mo le taimi nei.
Igoa o punaoa ma igoa o faila i totonu o le module
Punaoa (vasega, faʻamatalaga) i totonu o se module e le mafai ona faʻaigoaina soʻo se mea e te manaʻo ai. E le gata i lea, o loʻo i ai se fesoʻotaʻiga tuusaʻo i le va o le igoa o se punaoa ma le igoa o le faila lea o le a suʻe ai le Puppet mo se faʻamatalaga o lena punaoa. Afai e te solia tulafono fa'aigoaina, o le a le maua e Puppet le faʻamatalaga punaoa, ma o le ae mauaina se mea sese.
E faigofie tulafono:
- O punaoa uma i totonu o se module e tatau ona i totonu ole igoa ole module. Afai e valaau le module
foo
, ona tatau lea ona ta'u uma punaoa oi aifoo::<anything>
, pe na'ofoo
. - O le puna'oa ma le igoa o le module e tatau ona i totonu o le faila
init.pp
. - Mo isi punaoa, o le faʻailoga igoa faila e faʻapea:
- ua tia'i le prefix ma le igoa module
- o koluma ta'ilua uma, pe afai ei ai, e suitulaga i se fa'ailoga
- ua faaopoopo le faaopoopoga
.pp
O le a ou faʻaalia i se faʻataʻitaʻiga. Fa'apea o lo'o ou tusia se module nginx
. O lo'o i ai punaoa nei:
- класс
nginx
faamatalaina i le faaaligainit.pp
; - класс
nginx::service
faamatalaina i le faaaligaservice.pp
; - fa'amatala
nginx::server
faamatalaina i le faaaligaserver.pp
; - fa'amatala
nginx::server::location
faamatalaina i le faaaligaserver/location.pp
.
Mamanu
E mautinoa lava o oe lava e iloa poʻo a faʻataʻitaʻiga o le a ou le faʻamatalaina auiliili iinei. Ae o le a ou tuu ai ina neʻi iai
Auala e fa'aoga ai fa'ata'ita'iga: E mafai ona fa'alauteleina le uiga o se fa'ata'ita'iga e fa'aaoga ai se galuega template
, lea e pasia le ala i le mamanu. Mo punaoa pei faila fa'aoga fa'atasi ma le parakalafa content
. Mo se faʻataʻitaʻiga, pei o lenei:
file { '/tmp/example': content => template('modulename/templatename.erb')
Va'ai le ala <modulename>/<filename>
o lona uiga faila <rootdir>/modules/<modulename>/templates/<filename>
.
E le gata i lea, o loʻo i ai se galuega inline_template
- na te mauaina le tusiga faʻataʻitaʻiga e fai ma faʻaoga, ae le o le igoa faila.
I totonu o faʻataʻitaʻiga, e mafai ona e faʻaogaina uma fesuiaiga Papeti i le lautele o loʻo iai nei.
Papeti lagolago faʻataʻitaʻiga ile ERB ma le EPP faʻatulagaga:
Fa'apuupuu e uiga i le ERB
Pulea fausaga:
<%= ВЫРАЖЕНИЕ %>
— faaofi le taua o le faaupuga<% ВЫРАЖЕНИЕ %>
— fa'atatau le tau o se fa'amatalaga (e aunoa ma le fa'aofiina). O fa'amatalaga fa'atatau (afai) ma fa'amaufa'ailoga (ta'itasi) e masani ona alu i'i.<%# КОММЕНТАРИЙ %>
O faʻamatalaga ile ERB o loʻo tusia ile Ruby (ERB o le Ruby Embedded).
Ina ia maua suiga mai le faʻaaliga, e tatau ona e faʻaopopo @
i le igoa fesuia'i. Ina ia aveese se laina laina e aliali mai pe a maeʻa se faʻatonuga, e tatau ona e faʻaogaina se pine faʻamau -%>
.
Faataitaiga o le faaaogaina o le mamanu
Fa'apea o lo'o ou tusia se module e pulea ai le ZooKeeper. O le vasega e nafa ma le fatuina o le config e pei o lenei:
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'),
}
}
Ma le mamanu fetaui zoo.cfg.erb
- O lea:
<% 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 -%>
Mea moni ma Fuafuaga Fausia
E masani lava o le vaega patino o le faʻatulagaga e faʻalagolago i mea o loʻo tupu nei i luga o le node. Mo se faʻataʻitaʻiga, faʻalagolago i le faʻamalolo o Debian, e tatau ona e faʻapipiʻi se tasi poʻo se isi faʻasologa o le afifi. E mafai ona e mata'ituina ma le lima nei mea uma, toe tusi fa'aaliga pe a suia nodes. Ae e le o se faiga ogaoga lea;
Ina ia maua faʻamatalaga e uiga i nodes, e iai le masini e taʻua o mea moni. Mea moni - o faʻamatalaga lea e uiga i le node, o loʻo maua i faʻaaliga i foliga o fesuiaiga masani i le igoa ole lalolagi. Mo se faʻataʻitaʻiga, igoa talimalo, faʻaogaina faiga faʻaoga, fausaga faʻapipiʻi, lisi o tagata faʻaoga, lisi o fesoʻotaʻiga fesoʻotaʻiga ma latou tuatusi, ma le tele, sili atu. E maua fa'amatalaga i fa'aaliga ma fa'ata'ita'iga e fai ma suiga masani.
O se faʻataʻitaʻiga o le galue ma mea moni:
notify { "Running OS ${facts['os']['name']} version ${facts['os']['release']['full']}": }
# ресурс типа notify просто выводит сообщение в лог
I le tulaga aloaia, o se mea moni e iai se igoa ( manoa) ma se tau (o ituaiga eseese e maua: manoa, arrays, lomifefiloi). 'A'ai
I le taimi o le fa'agaioiga, e kopi muamua e le sui o le papeti mea moni uma e maua mai le pappetserver i le node, a mae'a ona fa'alauiloa ma lafo atu mea moni na aoina i le server; A maeʻa lenei mea, e amata e le 'auʻaunaga ona tuʻufaʻatasia le faʻamaumauga.
Fa'amatalaga i foliga o faila fa'atino
O ia mea moni o loʻo tuʻuina i modules i totonu o le lisi facts.d
. Ioe, o faila e tatau ona faʻatinoina. A tamoʻe, e tatau ona latou faʻaalia faʻamatalaga i galuega masani ile YAML poʻo le ki = faʻasologa tau.
Aua nei galo o mea moni e faʻatatau i nodes uma o loʻo pulea e le poppet server o loʻo faʻapipiʻiina ai lau module. O le mea lea, i totonu o le tusitusiga, faʻaeteete e siaki o loʻo i ai i le polokalama polokalama uma ma faila e manaʻomia mo lau mea moni e galue.
#!/bin/sh
echo "testfact=success"
#!/bin/sh
echo '{"testyamlfact":"success"}'
Ruby mea moni
O ia mea moni o loʻo tuʻuina i modules i totonu o le lisi 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
Fa'amatalaga fa'amatalaga
O ia mea moni e tu'u i nodes i le lisi /etc/facter/facts.d
i Papeti tuai pe /etc/puppetlabs/facts.d
i le Papeti fou.
examplefact=examplevalue
---
examplefact2: examplevalue2
anotherfact: anothervalue
Alu i Mea Moni
E lua auala e faʻafeiloaʻi ai mea moni:
- e ala i le lomifefiloi
$facts
:$facts['fqdn']
; - fa'aaoga le igoa moni e pei o le igoa fesuia'i:
$fqdn
.
E sili le fa'aoga o se lomifefiloi $facts
, pe sili atu foi, faʻaalia le igoa ole lalolagi ($::facts
).
Fuafuaga Fausia
E ese mai i mea moni, e iai foʻi
- mea moni faatuatuaina - fesuiaiga e ave mai le tusi faamaonia a le kalani (talu ai o le tusi faamaonia e masani ona tuʻuina atu i luga o se poppet server, e le mafai e le sooupu ona ave ma suia lana tusi faamaonia, o lea e "faʻatuatuaina" fesuiaiga): le igoa o le tusi faamaonia, le igoa o le talimalo ma le vaega, faʻaopoopoga mai le tusi faamaonia.
- server mea moni —Fesuiaiga e fesootai ma faamatalaga e uiga i le server—version, igoa, tuatusi IP server, siosiomaga.
- sui mea moni — fesuia'i fa'aopoopo sa'o e le papeti-sui, ae le o le fa'amatalaga - igoa fa'amaonia, fa'amatalaga sui, fa'asologa o papeti.
- matai fesuiaiga - Pappetmaster fesuiaiga (sic!). E tutusa lava ma totonu server mea moni, fa'atasi ai ma fa'amaufa'ailoga tau fa'asologa o lo'o avanoa.
- suitulaga tu'ufa'atasi — suitulaga tu'ufa'atasia e 'ese'ese i va'aiga ta'itasi: o le igoa o le module o lo'o iai nei ma le igoa o le module lea na fa'aogaina ai le mea o lo'o iai nei. E mafai ona fa'aoga, mo se fa'ata'ita'iga, e siaki ai e le o fa'aogaina sa'o au vasega tuto'atasi mai isi modules.
Fa'aopoopo 1: fa'afefea ona tamo'e ma debug nei mea uma?
O le tusiga o loʻo i ai le tele o faʻataʻitaʻiga o le papeti code, ae e leʻi taʻuina mai ia i matou le auala e faʻatino ai lenei code. Ia, ua ou faasa'oina a'u lava.
Ua lava se sui e fa'atautaia le Puppet, ae mo le tele o tulaga e te mana'omia ai fo'i se sau.
Sooupu
A itiiti mai talu mai le version 5, papeti-agent afifi mai
I le tulaga sili ona faigofie, e faʻaaoga ai le faʻatulagaina o papeti, ua lava le faʻalauiloaina o le sooupu i le tulaga leai se server: pe a faʻapea e kopi le code papeti i le node, faʻalauiloa. 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
E sili atu, ioe, le setiina o le 'auʻaunaga ma faʻatautaia sui i luga o nodes i le daemon mode - ona tasi i le afa itula latou te faʻaogaina le faʻatulagaina na sii mai i le server.
E mafai ona e faʻataʻitaʻia le faʻataʻitaʻiga o le galuega - alu i le node e te fiafia i ai ma amata sudo puppet agent -t
. Ki -t
(--test
) e aofia moni lava le tele o filifiliga e mafai ona faʻaogaina taʻitoʻatasi. O nei avanoa e aofia ai mea nei:
- aua le tamoe i le daemon mode (e ala i le le mafai ona amata le sui i le daemon mode);
- tapuni pe a uma ona faʻaogaina le lisi (e ala i le faaletonu, o le a faʻaauau pea ona galue le sooupu ma faʻaoga le faʻatulagaina i le afa itula);
- tusi se fa'amatalaga auiliili o galuega;
- fa'aali suiga i faila.
O loʻo i ai i le sooupu se faiga faʻaoga e aunoa ma ni suiga - e mafai ona e faʻaaogaina pe a e le o mautinoa na e tusia le faʻatulagaga saʻo ma e te manaʻo e siaki poʻo le a tonu le sui o le a suia i le taimi o le taotoga. O lenei faiga e mafai e le parakalafa --noop
i luga o le laina poloaiga: sudo puppet agent -t --noop
.
E le gata i lea, e mafai ona e faʻaogaina le faʻailoga o le galuega - i totonu, o loʻo tusia ai e papeti e uiga i gaioiga uma o loʻo ia faia: e uiga i le punaoa o loʻo faʻagasolo nei, e uiga i taʻiala o lenei punaoa, e uiga i polokalame na te faʻalauiloaina. Ioe o se parakalafa lenei --debug
.
Saini
O le a ou le mafaufau i le seti atoa o le pappetserver ma le faʻapipiʻiina o le code i lenei tusiga o le a naʻo le mea o loʻo i ai i fafo atu o le pusa o loʻo i ai se faʻaoga atoatoa o le server e le manaʻomia se faʻaopoopoga faʻaopoopo e galue ai ma se numera itiiti; nodes (fai mai, e oo atu i le selau). Ole numera tele o nodes o le a manaʻomia ai le faʻalogo - ona o le faaletonu, e le sili atu ma le fa tagata faigaluega e faʻalauiloa e le puppetserver, mo le sili atu o le faʻatinoga e te manaʻomia le faʻateleina o latou numera ma aua neʻi galo e faʻateleina tapulaa manatua, a leai o le a aoina lapisi e le server le tele o taimi.
Fa'ailoga fa'ailoga - afai e te mana'omia vave ma faigofie, ona va'ai lea (i le r10k)[
Fa'aopoopo 2: Ta'iala Fa'ailoga
- Tuu uma manatu i vasega ma faʻamatalaga.
- Taofi vasega ma faauigaga i modules, ae le o faʻaaliga e faʻamatalaina ai nodes.
- Fa'aaogā mea moni.
- Aua le faia pe afai e fa'avae ile igoa talimalo.
- Lagona le saoloto e faʻaopoopo faʻamaufaʻailoga mo vasega ma faʻamatalaga - e sili atu lenei mea nai lo le faʻaogaina o manatu natia i totonu o le tino o le vasega / faʻamalamalamaina.
O le a ou faʻamatalaina pe aisea ou te fautuaina ai le faia o lenei mea i le isi tusiga.
iʻuga
Tatou faauma i le folasaga. I le isi tala o le a ou taʻuina atu ia te oe Hiera, ENC ma PuppetDB.
Na'o tagata fa'aigoaina e mafai ona auai i le su'esu'ega.
O le mea moni, e tele naua mea - e mafai ona ou tusia tala i autu nei, palota i mea e te fiafia e faitau i ai:
- 59,1%Fau papeti mata'utia - o nisi tulaga leaga: matasele, fa'afanua ma isi fa'aaliga lambda, aoina punaoa, punaoa auina atu i fafo ma feso'ota'iga i le va o tagata e ala i Papeti, pine, tagata e tu'uina atu, ituaiga fa'amaumauga.13
- 31,8%"O aʻu o le pule a loʻu tina" poʻo le auala na matou faauo ai i Avito i le tele o poppet servers o ituaiga eseese, ma, i le mataupu faavae, o le vaega e uiga i le faʻatinoina o le poppet server.7
- 81,8%Fa'afefea ona matou tusia le code papeti: meafaifaaili, fa'amaumauga, su'ega, CI/CD.18
22 tagata fa'aoga na palota. 9 tagata fa'aoga na le mafai.
puna: www.habr.com