Puppet igadziriro yekugadzirisa hurongwa. Inoshandiswa kuunza mauto kunzvimbo inodiwa uye kuchengetedza iyi nyika.
Ndave ndichishanda naPuppet kweanopfuura makore mashanu zvino. Ichi chinyorwa chakanyanya kuturikirwa uye kurongeka patsva kuunganidzwa kwemapoinzi kubva kune zviri pamutemo zvinyorwa, izvo zvinobvumira vanotanga kuti vanzwisise nekukurumidza kukosha kwePuppet.
Ruzivo rwekutanga
Puppet's operating system ndeyemutengi-server, kunyange inotsigirawo kushanda kusina basa nekushanda kushoma.
Iyo yekudhonza modhi yekushanda inoshandiswa: nekusarudzika, kamwe kamwe hafu yeawa, vatengi vanobata sevha kuti vagadzirise uye voishandisa. Kana iwe wakashanda neAnsible, saka vanoshandisa imwe yekusundidzira yakasiyana: maneja anotanga maitiro ekushandisa iyo gadziriso, vatengi pachavo havazoshandisi chero chinhu.
Panguva yekukurukurirana kwenetiweki, nzira mbiri dzeTLS encryption inoshandiswa: sevha uye mutengi vane makiyi avo ega uye zvitupa zvinoenderana. Kazhinji sevha inoburitsa zvitupa zvevatengi, asi musimboti zvinokwanisika kushandisa yekunze CA.
Nhanganyaya kune manifestos
MuPuppet terminology kune sevha yepuppet connect nodes (nodes). Kugadziriswa kwemanodhi kwakanyorwa mune manifestos mumutauro unokosha wepurogiramu - Puppet DSL.
Puppet DSL mutauro unozivisa. Inotsanangura mamiriro anodiwa eiyo node nenzira yekuzivisa kwezviwanikwa zvega, semuenzaniso:
- Iyo faira iripo uye ine chaiyo yemukati.
- Pasuru yacho yakaiswa.
- Sevhisi yatanga.
Zvishandiso zvinogona kubatanidzwa:
- Pane zvinotsamira, zvinokanganisa marongero anoshandiswa zviwanikwa.
Semuenzaniso, "tanga waisa pasuru, wozogadzirisa faira rekugadzirisa, wobva watanga sevhisi." - Pane zviziviso - kana sosi yachinja, inotumira zviziviso kune zviwanikwa zvakanyoreswa kwairi.
Semuenzaniso, kana iyo faira yekumisikidza ichichinja, unogona kutangazve sevhisi otomatiki.
Pamusoro pezvo, iyo Puppet DSL ine mabasa uye zvinochinjika, pamwe chete nemamiriro ezvinhu uye vanosarudza. Yakasiyana-siyana ma templating maitiro anotsigirwa zvakare - EPP uye ERB.
Puppet yakanyorwa muRuby, saka mazhinji ekuvaka uye mazwi anotorwa kubva ipapo. Ruby inobvumidza iwe kuwedzera Puppet - wedzera yakaoma logic, mhando nyowani dzezviwanikwa, mabasa.
Ipo Puppet ichimhanya, inoratidzira kune yega yega node pane server inounganidzwa kuita dhairekitori. dhairetori rondedzero yezviwanikwa uye hukama hwadzo mushure mekuverenga kukosha kwemabasa, kusiyanisa uye kuwedzera kwezvirevo zvemimiriro.
Syntax uye codestyle
Heano zvikamu zvezvinyorwa zvepamutemo zvinokubatsira kuti unzwisise syntax kana mienzaniso yakapihwa isina kukwana:
Heino muenzaniso wekuti manifest inotaridzika sei:
# Комментарии пишутся, как и много где, после решётки.
#
# Описание конфигурации ноды начинается с ключевого слова node,
# за которым следует селектор ноды — хостнейм (с доменом или без)
# или регулярное выражение для хостнеймов, или ключевое слово default.
#
# После этого в фигурных скобках описывается собственно конфигурация ноды.
#
# Одна и та же нода может попасть под несколько селекторов. Про приоритет
# селекторов написано в статье про синтаксис описания нод.
node 'hostname', 'f.q.d.n', /regexp/ {
# Конфигурация по сути является перечислением ресурсов и их параметров.
#
# У каждого ресурса есть тип и название.
#
# Внимание: не может быть двух ресурсов одного типа с одинаковыми названиями!
#
# Описание ресурса начинается с его типа. Тип пишется в нижнем регистре.
# Про разные типы ресурсов написано ниже.
#
# После типа в фигурных скобках пишется название ресурса, потом двоеточие,
# дальше идёт опциональное перечисление параметров ресурса и их значений.
# Значения параметров указываются через т.н. hash rocket (=>).
resource { 'title':
param1 => value1,
param2 => value2,
param3 => value3,
}
}
Indentation uye mitsara yekutyora haisi chikamu chinodiwa chemanifest, asi pane inokurudzirwa
- Maviri-nzvimbo indents, ma tabo haashandiswe.
- Curly braces inoparadzaniswa nenzvimbo; makoroni haana kuparadzaniswa nenzvimbo.
- Makoma mushure meumwe neumwe parameter, kusanganisira yekupedzisira. Imwe neimwe parameter iri pamutsetse wakasiyana. Kusarudzika kunoitirwa iyo kesi isina parameter uye imwe parameter: unogona kunyora pamutsetse mumwe uye pasina koma (kureva.
resource { 'title': }
иresource { 'title': param => value }
). - Miseve pazvigadziro inofanira kunge iri pamwero wakafanana.
- Resource relationship miseve inonyorwa pamberi pavo.
Nzvimbo yemafaira pane pappetserver
Kuti uwane imwe tsananguro, ini ndichasuma iyo pfungwa ye "root directory". Iyo midzi dhairekitori ndiyo dhairekitori ine iyo Puppet kumisikidzwa kune yakatarwa node.
Iyo midzi dhairekitori inosiyana zvichienderana neshanduro yePuppet uye nharaunda dzakashandiswa. Nzvimbo dzakazvimiririra seti dzekugadzirisa dzinochengetwa mumadhairekitori akasiyana. Inowanzo shandiswa pamwe chete negit, mune iyo mamiriro ezvinhu anogadzirwa kubva kumatavi egit. Saizvozvowo, node imwe neimwe inowanikwa mune imwe nharaunda kana imwe. Izvi zvinogona kugadzirwa pane node pachayo, kana muECC, yandichataura nezvayo muchinyorwa chinotevera.
- Mushanduro yechitatu ("old Puppet") iyo base dhairekitori yaive
/etc/puppet
. Iko kushandiswa kwenzvimbo kune sarudzo - semuenzaniso, isu hatizvishandise neiyo yekare Puppet. Kana nharaunda dzakashandiswa, dzinowanzochengetwa mukati/etc/puppet/environments
, dhairekitori remidzi richava dhairekitori renzvimbo. Kana nharaunda dzikasashandiswa, dhairekitori remidzi richava iro base dhairekitori. - Kutanga kubva kuvhezheni yechina ("new Puppet"), kushandiswa kwenzvimbo kwakava kwekusungirwa, uye dhairekitori rekutanga rakaendeswa
/etc/puppetlabs/code
. Saizvozvo, nharaunda dzinochengeterwa mukati/etc/puppetlabs/code/environments
, midzi dhairekitori inzvimbo dhairekitori.
Panofanira kunge paine subdirectory mumudzi wedhairekitori manifests
, iyo ine chiratidziro chimwe kana kupfuura chinotsanangura node. Mukuwedzera, panofanira kuva ne-subdirectory modules
, iyo ine ma modules. Ini ndichakuudza kuti mamodule ndeapi gare gare. Uye zvakare, iyo yekare Puppet inogona zvakare kuve ine subdirectory files
, iyo ine mafaera akasiyana siyana atinoteedzera kumanodhi. MuPuppet nyowani, mafaera ese anoiswa mumamodule.
Manifest mafaira ane kuwedzera .pp
.
Mienzaniso miviri yekurwa
Tsanangudzo yenode uye zviwanikwa pairi
Pane node server1.testdomain
faira inofanira kugadzirwa /etc/issue
nezvirimo Debian GNU/Linux n l
. Iyo faira inofanirwa kuve yemushandisi uye neboka root
, kodzero dzekuwana dzinofanira kuva 644
.
Isu tinonyora 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 в начале будет воспринято как записанное в восьмеричной системе, и всё пойдёт не так, как задумано
}
}
Hukama pakati pezviwanikwa pane node
Pane node server2.testdomain
nginx inofanira kunge ichimhanya, ichishanda neyakagadzirirwa gadziriro.
Rega kugadzirisa dambudziko:
- Iyo package inoda kuiswa
nginx
. - Izvo zvinodikanwa kuti mafaera ekugadzirisa akodzwe kubva kune server.
- Iyo sevhisi inofanirwa kunge ichishanda
nginx
. - Kana iyo gadziriso yakagadziridzwa, sevhisi inofanirwa kutangwazve.
Isu tinonyora 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 izvi zvishande, unoda inenge inotevera faira nzvimbo pane puppet server:
/etc/puppetlabs/code/environments/production/ # (это для нового Паппета, для старого корневой директорией будет /etc/puppet)
├── manifests/
│ └── site.pp
└── modules/
└── example/
└── files/
└── nginx-conf/
├── nginx.conf
├── mime.types
└── conf.d/
└── some.conf
Resource Types
Rondedzero yakazara yemhando dzezvishandiso zvinotsigirwa inogona kuwanikwa pano
faira
Inogadzirisa mafaera, madhairekitori, symlinks, zvirimo, uye kodzero dzekuwana.
Parameter:
- zita resource - nzira yefaira (inosarudza)
- Nzira - nzira yefaira (kana isina kutaurwa muzita)
- nyatsoona - rudzi rwefaira:
absent
- bvisa fairapresent
- panofanira kunge paine faira remhando ipi neipi (kana pasina faira, faira renguva dzose richagadzirwa)file
- faira yenguva dzosedirectory
-dhairekitorilink
- symlink
- gutsikana - faira zviri mukati (inokodzera chete mafaera enguva dzose, haigone kushandiswa pamwe chete mabviro kana chinangwa)
- mabviro - chinongedzo kunzira yaunoda kukopa zviri mukati mefaira (haigone kushandiswa pamwe chete ne gutsikana kana chinangwa) Inogona kutsanangurwa seURI ine chirongwa
puppet:
(ipapo mafaera kubva kune puppet server achashandiswa), uye nechirongwahttp:
(Ndinovimba kuti zvakajeka zvichaitika munyaya iyi), uye kunyange nemufananidzofile:
kana senzira yakakwana isina schema (ipapo iyo faira kubva kuFS yemuno pane node ichashandiswa) - chinangwa - uko symlink inofanirwa kunongedzera (haigone kushandiswa pamwe chete ne gutsikana kana mabviro)
- muridzi - mushandisi anofanira kunge ari muridzi wefaira
- boka - boka iro faira rinofanira kuva raro
- rudzi - mvumo yefaira (setambo)
- recurse - inogonesa recursive dhairekitori kugadzirisa
- purge - inogonesa kudzima mafaera asina kutsanangurwa muPuppet
- simba - inogonesa kudzima madhairekitori asina kutsanangurwa muPuppet
nhuri
Inoisa uye inobvisa mapakeji. Kugona kubata zviziviso - inodzosera pasuru kana parameter yatsanangurwa reinstall_on_refresh.
Parameter:
- zita resource - zita repasuru (sarudzo)
- zita - zita repasuru (kana risina kutaurwa muzita)
- Provider -Package maneja wekushandisa
- nyatsoona - yaidiwa mamiriro epakeji:
present
,installed
- chero shanduro yakaiswalatest
- yazvino vhezheni yakaiswaabsent
- kubviswa (apt-get remove
)purged
- yakabviswa pamwe chete nemafaira ekugadzirisa (apt-get purge
)held
- package version yakavharwa (apt-mark hold
)любая другая строка
- iyo yakataurwa vhezheni yakaiswa
- reinstall_on_refresh - kana a
true
, ipapo kana yagamuchira chiziviso iyo package inozoiswazve. Inobatsira kugovera-kwakavakirwa kugovera, uko kuvakazve mapakeji kungave kuri madikanwa kana uchichinja kuvaka paramita. Defaultfalse
.
sevhisi
Anotarisira masevhisi. Kugona kugadzirisa zviziviso - inotangazve sevhisi.
Parameter:
- zita resource - sevhisi inotarisirwa (kusarudza)
- zita - iyo sevhisi inoda kutungamirwa (kana isina kutaurwa muzita)
- nyatsoona - mamiriro ebasa anodiwa:
running
- yakatangastopped
- akamira
- kuti munhu agone ku - inodzora kugona kutanga sevhisi:
true
- autorun inogoneswa (systemctl enable
)mask
- disguised (systemctl mask
)false
- autorun yakaremara (systemctl disable
)
- kutangazve - kuraira kuti utangezve sevhisi
- chinzvimbo - raira kuti utarise mamiriro ebasa
- hasrestart - ratidza kana iyo initscript yebasa inotsigira kutangazve. Kana
false
uye parameter inotsanangurwa kutangazve - kukosha kweiyi parameter inoshandiswa. Kanafalse
uye parameter kutangazve isina kutaurwa - iyo sevhisi inomiswa uye yakatanga kutangazve (asi systemd inoshandisa murairosystemctl restart
). - hasstatus - ratidza kana iyo initscript yebasa inotsigira murairo
status
. kanafalse
, ipapo kukosha kweparameter kunoshandiswa chinzvimbo. Defaulttrue
.
exec
Inomhanya mirairo yekunze. Kana iwe usingataure parameters inosika, onlyif, kunze kokuti kana refreshonly, murairo uchaitwa pese pese panoitwa Puppet. Inokwanisa kugadzirisa zviziviso - inoshandisa murairo.
Parameter:
- zita resource - murairo kuti uitwe (optional)
- murayiro - murairo unofanirwa kuurayiwa (kana usina kutaurwa muzita)
- Nzira - nzira dzekutsvaga faira rinogoneka
- onlyif - kana murairo wakataurwa mune iyi parameter wapera ne zero kodhi yekudzoka, murairo mukuru uchaitwa
- kunze kokuti - kana murairo wakataurwa mune iyi parameter wapera nekodhi isiri zero yekudzoka, murairo mukuru uchaitwa
- inosika - kana iyo faira inotsanangurwa mune iyi parameter isipo, murairo mukuru uchaitwa
- refreshonly - kana a
true
, ipapo murairo unozoitwa chete kana uyu exec agamuchira chiziviso kubva kune zvimwe zviwanikwa - cwd - dhairekitori kubva kwaunomhanyisa rairo
- mushandisi - mushandisi kubva kwaari kumhanyisa rairo
- Provider - maitiro ekuita murairo:
- posix - maitiro emwana anongogadzirwa, iva nechokwadi chekutsanangura Nzira
- deko - murairo unotangwa mugoko
/bin/sh
, zvingasatsanangurwa Nzira, unogona kushandisa globbing, mapaipi uye mamwe magoko. Kazhinji zvinoonekwa otomatiki kana paine akakosha mavara (|
,;
,&&
,||
zvichingoenda zvakadaro).
cron they
Inodzora cronjobs.
Parameter:
- zita resource - imwe mhando yechiratidzo
- nyatsoona - koronajob state:
present
- gadzira kana isipoabsent
- bvisa kana iripo
- murayiro - murairo upi wekumhanya
- mhepo mvura nenzvimbo -munzvimbo ipi yekumhanyisa kuraira (rondedzero yezvakatipoteredza zvinosiyana uye hunhu hwavo kuburikidza
=
) - mushandisi - kubva kune mushandisi wekumhanyisa rairo
- Mineti, awa, zuva revhiki, mwedzi, mwedzi wemwedzi - nguva yekumhanya cron. Kana chimwe cheizvi hunhu chisina kutaurwa, kukosha kwayo mu crontab kuchave
*
.
MuPuppet 6.0 cron they sekunge
Nezve zviwanikwa mune zvese
Zvinodikanwa zvekusiyana kwezviwanikwa
Chikanganiso chakanyanya chatinosangana nacho ndeichi Duplicate declaration. Kukanganisa uku kunoitika kana zviwanikwa zviviri kana kupfuura zverudzi rumwechete zvine zita rimwechete zvichionekwa mudhairekitori.
Naizvozvo, ndichanyora zvakare: kuratidzira kweiyo node imwe chete haifanire kunge iine zviwanikwa zvemhando imwechete ine zita rimwechete!
Dzimwe nguva pane kudikanwa kwekuisa mapakeji ane zita rimwechete, asi aine akasiyana epakeji mamaneja. Muchiitiko chino, unofanira kushandisa parameter name
kudzivirira kukanganisa:
package { 'ruby-mysql':
ensure => installed,
name => 'mysql',
provider => 'gem',
}
package { 'python-mysql':
ensure => installed,
name => 'mysql',
provider => 'pip',
}
Mamwe marudzi ezvishandiso ane sarudzo dzakafanana kubatsira kudzivirira kudzokorodza − name
у sevhisi, command
у exec, zvichingoenda zvakadaro.
Metaparameters
Mhando yega yega yekushandisa ine mamwe ma parameter akakosha, zvisinei nehunhu hwayo.
Runyorwa ruzere rwemeta paramita
Rondedzero pfupi:
- inoda - iyi parameter inoratidza kuti ndezvipi zviwanikwa izvi zvinotsamira pazviri.
- pamberi - Iyi parameter inotsanangura kuti ndezvipi zviwanikwa zvinoenderana nechinhu ichi.
- nokunyora magwaro - iyi parameter inotsanangura kubva kune zviwanikwa izvi sosi inogamuchira zviziviso.
- zivisa - Iyi parameter inotsanangura kuti ndezvipi zviwanikwa zvinogashira zviziviso kubva kune iyi sosi.
Yese yakanyorwa metaparameters inogashira ingave imwe chete yekushandisa link kana nhevedzano yezvekubatanidza mumabhuraketi akaenzana.
Links kune zviwanikwa
A resource link ingori kutaurwa kweiyo sosi. Iwo anonyanya kushandiswa kuratidza dependencies. Kurevera chinhu chisipo kunokonzeresa kukanganisa kwekubatanidza.
Syntax yeiyi link ndeiyi inotevera: resource type ine capital letter (kana zita rezita riine kaviri makoroni, ipapo chikamu chega chega chezita pakati pemakoroni chine capitalized), ipapo iro zita rekushandisa mumabhuraketi akaenzana (nyaya yezita. haina kuchinja!). Panofanira kunge pasina nzvimbo; masikweya mabhureki anonyorwa pakarepo mushure mezita remhando.
Muenzaniso:
file { '/file1': ensure => present }
file { '/file2':
ensure => directory,
before => File['/file1'],
}
file { '/file3': ensure => absent }
File['/file1'] -> File['/file3']
Zvinoenderana uye zviziviso
Sezvambotaurwa, nyore kutsamira pakati pezviwanikwa zvinochinja. Nenzira, chenjerera paunenge uchiwedzera kutsamira - iwe unogona kugadzira cyclic kutsamira, izvo zvinokonzeresa kukanganisa kwekuunganidza.
Kusiyana nekutsamira, zviziviso hazvisi zvekuchinja. Mitemo inotevera inoshanda kune zviziviso:
- Kana iyo sosi ikagamuchira chiziviso, inovandudzwa. Zviito zvekuvandudza zvinoenderana nerudzi rwezvekushandisa - exec anomhanyisa murairo, sevhisi inotangazve sevhisi, nhuri inodzosera pasuru. Kana iyo sosi isina chiitiko chekuvandudza chinotsanangurwa, saka hapana chinoitika.
- Munguva yekumhanya kwePuppet, iyo sosi inovandudzwa kwete kanopfuura kamwe. Izvi zvinogoneka nekuti zviziviso zvinosanganisira kutsamira uye girafu rekutsamira harina matenderedzwa.
- Kana Puppet ichichinja mamiriro echishandiso, sosi inotumira zviziviso kune zvese zviwanikwa zvakanyoreswa kwazviri.
- Kana sosi yakagadziridzwa, inotumira zviziviso kune zvese zviwanikwa zvakanyoreswa kwairi.
Kubata zvisina kutaurwa parameters
Semutemo, kana imwe dhizaini paramende isina kukosha kweiyo default uye iyi parameter haina kutaurwa mumanifesiti, ipapo Puppet haizoshandure iyi pfuma kune inoenderana sosi pane node. Somuenzaniso, kana sosi yemhando faira parameter haina kutaurwa owner
, ipapo Puppet haizoshandure muridzi wefaira rinoenderana.
Nhanganyaya kumakirasi, zvinoshanduka uye tsananguro
Ngatitii tine node akati wandei ane chikamu chakafanana chekugadzirisa, asi pane zvakare misiyano - zvikasadaro tinogona kuzvitsanangura zvese mubhuroka rimwe. node {}
. Ehe, iwe unogona kungokopa zvakafanana zvikamu zvechigadziriso, asi kazhinji iyi imhinduro yakaipa - iyo gadziriso inokura, uye kana ukashandura iyo yakawanda chikamu chekugadzirisa, iwe uchafanirwa kugadzirisa chinhu chimwe chete munzvimbo dzakawanda. Panguva imwecheteyo, zviri nyore kuita chikanganiso, uye kazhinji, iyo DRY (usazvidzokorora iwe pachako) nheyo yakagadzirwa nokuda kwechikonzero.
Kugadzirisa dambudziko iri kune dhizaini yakadai se класс.
Makirasi
Kutanga kirasi inoda kutsanangurwa. Tsanangudzo pachayo haiwedzeri chero zviwanikwa chero kupi. Kirasi inotsanangurwa mukuratidzira:
# Описание класса начинается с ключевого слова class и его названия.
# Дальше идёт тело класса в фигурных скобках.
class example_class {
...
}
Mushure meizvi kirasi inogona kushandiswa:
# первый вариант использования — в стиле ресурса с типом class
class { 'example_class': }
# второй вариант использования — с помощью функции include
include example_class
# про отличие этих двух вариантов будет рассказано дальше
Muenzaniso kubva pane rakapfuura basa - ngatifambise kuisirwa uye kumisikidzwa kwenginx mukirasi:
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
}
Misiyano
Kirasi kubva pamuenzaniso wapfuura haichinjiki zvachose nekuti inogara ichiunza iyo nginx kumisikidzwa. Ngatiite nzira yekuchinjisa shanduko, ipapo kirasi iyi inogona kushandiswa kuisa nginx nechero gadziriso.
Zvinogona kuitwa
Chenjerera: akasiyana muPuppet haachinjike!
Mukuwedzera, shanduko inogona kuwanikwa chete mushure mekunge yaziviswa, kana zvisina kudaro kukosha kwekusiyana kuchava undef
.
Muenzaniso wekushanda nemhando dzakasiyana:
# создание переменных
$variable = 'value'
$var2 = 1
$var3 = true
$var4 = undef
# использование переменных
$var5 = $var6
file { '/tmp/text': content => $variable }
# интерполяция переменных — раскрытие значения переменных в строках. Работает только в двойных кавычках!
$var6 = "Variable with name variable has value ${variable}"
Chipopi chine mazita enzvimbo, uye zvakasiyana-siyana, maererano nazvo, vane nzvimbo yekuonekwa: Shanduko ine zita rimwechete inogona kutsanangurwa munzvimbo dzakasiyana dzemazita. Paunenge uchigadzirisa kukosha kwekusiyana, shanduko inotsvakwa munzvimbo yemazita yemazuva ano, ipapo mune yakavharirwa zita, zvichingodaro.
Namespace mienzaniso:
- pasi rose - zvinosiyana kunze kwekirasi kana node tsananguro enda ikoko;
- node namespace mune node tsananguro;
- kirasi namespace mukutsanangurwa kwekirasi.
Kuti udzivise kusanzwisisika kana uchiwana shanduko, unogona kutsanangura iyo namespace muzita rinochinja-chinja:
# переменная без пространства имён
$var
# переменная в глобальном пространстве имён
$::var
# переменная в пространстве имён класса
$classname::var
$::classname::var
Ngatibvumei kuti nzira inoenda kune nginx kumisikidzwa iri mukusiyana $nginx_conf_source
. Ipapo kirasi ichaita seizvi:
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
}
Zvisinei, muenzaniso wakapiwa wakaipa nokuti kune imwe "zivo yakavanzika" iyo pane imwe nzvimbo mukati mekirasi inoshanduka ine zita rakadaro uye rakadaro rinoshandiswa. Zvakanyanya kurongeka kuita ruzivo urwu ruzere - makirasi anogona kuve nemaparamita.
Kirasi parameters zvinosiyana-siyana munzvimbo yemazita ekirasi, zvinotsanangurwa mumusoro wekirasi uye zvinogona kushandiswa sezvinosiyana-siyana mumuviri wekirasi. Parameter values inotsanangurwa kana uchishandisa kirasi mune manifest.
Iyo parameter inogona kuiswa kune yakasarudzika kukosha. Kana parameter isina kukosha kwekutanga uye kukosha kusina kuiswa kana kushandiswa, kunokonzera kukanganisa kwekubatanidza.
Ngatitarisei kirasi kubva pamuenzaniso wepamusoro uye tiwedzere maviri paramita: yekutanga, inodiwa, ndiyo nzira yekumisikidzwa, uye yechipiri, sarudzo, ndiro zita repasuru ine nginx (muDebian, semuenzaniso, kune mapakeji. 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', # задаём параметры класса точно так же, как параметры для других ресурсов
}
}
MuPuppet, mavara akasiyana anotaipa. Eat
Rudzi rwakanyorwa pakarepo pamberi pezita reparameter:
class example (
String $param1,
Integer $param2,
Array $param3,
Hash $param4,
Hash[String, String] $param5,
) {
...
}
Makirasi: anosanganisira classname vs class{'classname':}
Kirasi yega yega chitubu cherudzi kirasi. Sezvakaita chero imwe mhando yechishandiso, hapagone kuve nezviitiko zviviri zvekirasi imwechete pane imwechete node.
Kana iwe ukaedza kuwedzera kirasi kune imwechete node kaviri uchishandisa class { 'classname':}
(hapana mutsauko, ane akasiyana kana akafanana paramita), pachave nekukanganisa kwekuunganidza. Asi kana iwe ukashandisa kirasi mune resource dhizaini, unogona pakarepo kuseta kwayo ese ma paramita mune manifest.
Nekudaro, kana ukashandisa include
, ipapo kirasi inogona kuwedzerwa kakawanda sezvaunoda. Chokwadi ndechekuti include
ibasa risina simba rinotarisa kana kirasi yawedzerwa kune dhairekitori. Kana iyo kirasi isiri mudhairekitori, inoiwedzera, uye kana yatovepo, haiite chinhu. Asi kana kushandisa include
Iwe haugone kuseta makirasi paramita panguva yekuzivisa kwekirasi - ese anodiwa ma paramita anofanirwa kuiswa mune yekunze data sosi - Hiera kana ENC. Tichataura nezvavo munyaya inotevera.
Inotsanangura
Sezvakataurwa mubhokisi rakapfuura, kirasi imwechete haigoni kuvapo pane node kanopfuura kamwe. Nekudaro, mune zvimwe zviitiko iwe unofanirwa kukwanisa kushandisa iyo imwechete block yekodhi ine akasiyana ma paramita pane imwechete node. Mune mamwe mazwi, panodiwa mhando yezviwanikwa zvayo.
Semuenzaniso, kuti tiise iyo PHP module, tinoita zvinotevera muAvito:
- Isa pasuru neiyi module.
- Ngatigadzire faira rekugadzirisa ye module iyi.
- Isu tinogadzira symlink kune iyo config ye php-fpm.
- Isu tinogadzira symlink kune iyo config ye php cli.
Mumamiriro ezvinhu akadaro, dhizaini yakadai se $title
, uko zita rekushandisa rinoenda kana raziviswa. Sezvakaita munyaya yemakirasi, tsanangudzo inofanira kutanga yatsanangurwa, mushure mokunge inogona kushandiswa.
Muenzaniso wakareruka une module yePHP:
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' }
}
Nzira iri nyore yekubata iyo Duplicate declaration kukanganisa iri muDefine. Izvi zvinoitika kana tsananguro iine sosi ine zita rinogara riripo, uye pane maviri kana anopfuura emuenzaniso wetsanangudzo iyi pane imwe node.
Zviri nyore kuzvidzivirira kubva kune izvi: zvese zviwanikwa mukati metsanangudzo zvinofanirwa kunge zvine zita zvinoenderana $title
. Imwe nzira ndeyekuwedzera zvisina simba kwezviwanikwa; mune yakapusa kesi, zvakakwana kufambisa zviwanikwa zvakajairwa kune ese mamiriro etsanangudzo mukirasi yakaparadzana uye inosanganisira iyi kirasi mune tsananguro - basa. include
idempotent.
Kune dzimwe nzira dzekuwana idempotency kana uchiwedzera zviwanikwa, kureva kushandisa mabasa defined
и ensure_resources
, asi ndichakuudza nezvazvo muchikamu chinotevera.
Zvinoenderana uye zviziviso zvekirasi uye tsananguro
Makirasi uye tsananguro dzinowedzera iyo inotevera mitemo pakubata zvinotsamira uye zviziviso:
- kuvimba nekirasi/tsanangudzo inowedzera kutsamira pane zvese zviwanikwa zvekirasi/define;
- kirasi / tsanangura kuvimba kunowedzera kutsamira kune ese makirasi / tsanangura zviwanikwa;
- kirasi / tsanangura chiziviso chinozivisa zvese zviwanikwa zvekirasi / tsanangura;
- class/define subscription inonyoresa kune zvese zviwanikwa zvekirasi/define.
Conditional statements uye vanosarudza
if
Zviri nyore apa:
if ВЫРАЖЕНИЕ1 {
...
} elsif ВЫРАЖЕНИЕ2 {
...
} else {
...
}
kunze kokuti
kunze kwekunge iri kana in reverse: iyo block yekodhi ichaitwa kana kutaura kuri kwenhema.
unless ВЫРАЖЕНИЕ {
...
}
mhosva
Hapana chakaoma apa futi. Iwe unogona kushandisa zvakajairwa kukosha (tambo, manhamba, nezvimwewo), zvirevo zvenguva dzose, uye mhando dzedata sehunhu.
case ВЫРАЖЕНИЕ {
ЗНАЧЕНИЕ1: { ... }
ЗНАЧЕНИЕ2, ЗНАЧЕНИЕ3: { ... }
default: { ... }
}
Selectors
Sarudzo imhando yemutauro wakafanana ne case
, asi pachinzvimbo chekuita block yekodhi, inodzosera kukosha.
$var = $othervar ? { 'val1' => 1, 'val2' => 2, default => 3 }
Modules
Kana iyo gadziriso idiki, inogona kuchengetwa nyore mune imwe manifest. Asi iyo yakawanda magadzirirwo atinotsanangura, iyo yakawanda makirasi uye node aripo mune manifest, inokura, uye zvinova zvinonetsa kushanda nazvo.
Pamusoro pezvo, pane dambudziko rekushandisazve kodhi - kana kodhi yese iri mukuratidzira, zvakaoma kugovera iyi kodhi nevamwe. Kugadzirisa matambudziko maviri aya, Puppet ine mubatanidzwa unonzi modules.
Modules -aya maseti emakirasi, tsananguro uye zvimwe masangano ePuppet akaiswa mune imwe dhairekitori. Mune mamwe mazwi, module chikamu chakazvimirira chePuppet logic. Semuenzaniso, panogona kunge paine module yekushanda nenginx, uye ichange iine izvo uye chete izvo zvinodiwa kuti ushande nenginx, kana panogona kunge paine module yekushanda nePHP, zvichingodaro.
Mamodule akashandurwa, uye kutsamira kwemamodule pane imwe neimwe kunotsigirwawo. Kune yakavhurika repository yemamodule -
Pane iyo puppet server, ma modules ari mune iyo modules subdirectory yemudzi dhairekitori. Mukati memodhi yega yega mune yakajairwa dhairekitori scheme - inoratidza, mafaera, matemplate, lib, zvichingodaro.
Chimiro chefaira mune module
Midzi yemodule inogona kunge iine madhairekitori anotevera ane mazita anotsanangura:
manifests
- ine manifestosfiles
- ine mafairatemplates
- ine matemplatelib
- ine Ruby kodhi
Iyi haisi rondedzero yakazara yemadhairekitori uye mafaera, asi yakakwana kune ino chinyorwa ikozvino.
Mazita ezviwanikwa uye mazita emafaira ari mumodule
Zviwanikwa (makirasi, tsananguro) mune module haigone kupihwa zita chero chaunoda. Pamusoro pezvo, pane kunyorerana kwakananga pakati pezita rechishandiso uye zita refaira umo Puppet achatsvaga tsananguro yechishandiso ichocho. Kana iwe ukatyora mitemo yekupa mazita, ipapo Puppet haingowane tsananguro yechishandiso, uye iwe uchawana kukanganisa kwekuunganidza.
Mitemo yacho iri nyore:
- Zvese zviwanikwa mumodule zvinofanirwa kunge zviri mumodule namespace. Kana iyo module yakadanwa
foo
, ipapo zviwanikwa zvese zviri mairi zvinofanirwa kupihwa zitafoo::<anything>
, kana kutifoo
. - Iyo sosi ine zita reiyo module inofanirwa kunge iri mufaira
init.pp
. - Kune zvimwe zviwanikwa, iyo faira yekutumidza zita chirongwa ndeiyi:
- prefix ine zita remodule inoraswa
- ese maviri colon, kana aripo, anotsiviwa nemaslash
- kuwedzera kunowedzerwa
.pp
Ndicharatidza nemuenzaniso. Ngatitii ndiri kunyora module nginx
. Rine zvinhu zvinotevera:
- класс
nginx
inotsanangurwa mumanifesitiinit.pp
; - класс
nginx::service
inotsanangurwa mumanifesitiservice.pp
; - define
nginx::server
inotsanangurwa mumanifesitiserver.pp
; - define
nginx::server::location
inotsanangurwa mumanifesitiserver/location.pp
.
Mapepa
Chokwadi iwe pachako unoziva kuti matemplate ndeapi; Ini handisi kuzoatsanangura zvakadzama pano. Asi ndichazvisiya chete
Mashandisiro ematemu: Zvinorehwa netemplate zvinogona kuwedzerwa uchishandisa basa template
, iyo inopfuudzwa nzira yekuenda kune template. Zvezviwanikwa zvemhando faira inoshandiswa pamwe chete neparameter content
. Semuenzaniso, seizvi:
file { '/tmp/example': content => template('modulename/templatename.erb')
Ona nzira <modulename>/<filename>
zvinoreva faira <rootdir>/modules/<modulename>/templates/<filename>
.
Uye zvakare, kune basa inline_template
- inogamuchira zvinyorwa zvetemplate sekuisa, kwete zita refaira.
Mukati mematemu, unogona kushandisa ese maPuppet akasiyana mune yazvino chiyero.
Puppet inotsigira matemplate muERB uye EPP fomati:
Muchidimbu nezveERB
Kudzora zvimiro:
<%= ВЫРАЖЕНИЕ %>
- isa kukosha kwechirevo<% ВЫРАЖЕНИЕ %>
- kuverenga kukosha kwechirevo (pasina kuiisa). Mamiriro ezvinhu (kana) uye zvishwe (chimwe nechimwe) anowanzoenda pano.<%# КОММЕНТАРИЙ %>
Matauriro ari muERB akanyorwa muRuby (ERB is actually Embedded Ruby).
Kuti uwane zvinosiyana kubva kumanifesiti, unofanirwa kuwedzera @
kune zita rakasiyana. Kuti ubvise mutsara unoputika unoonekwa mushure mekugadzirisa kuvaka, unoda kushandisa tag yekuvhara -%>
.
Muenzaniso wekushandisa template
Ngatitii ndiri kunyora module yekudzora ZooKeeper. Kirasi ine basa rekugadzira iyo config inotaridzika seizvi:
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'),
}
}
Uye template inoenderana zoo.cfg.erb
- Saka:
<% 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 -%>
Chokwadi uye Yakavakwa-mukati Variables
Kazhinji chikamu chaicho chekugadzirisa chinoenderana nezviri kuitika pane node. Semuenzaniso, zvichienderana nekuti Debian kuburitswa chii, unofanirwa kuisa imwe kana imwe vhezheni yepakeji. Unogona kutarisa zvese izvi nemaoko, kunyorazve kunoratidza kana node dzachinja. Asi iyi haisi nzira yakakomba; otomatiki iri nani zvakanyanya.
Kuti uwane ruzivo nezve node, Puppet ine nzira inonzi chokwadi. Chokwadi -Iri iruzivo nezve node, inowanikwa muzviratidziro muchimiro cheakajairwa akasiyana munzvimbo yepasirese mazita. Semuyenzaniso, zita rekutambira, vhezheni yekushandisa system, processor architecture, runyorwa rwevashandisi, runyorwa rwetiweki interfaces nemakero avo, uye zvakawanda, zvakawanda. Chokwadi chinowanikwa mumanifesiti uye matemplate seanogara achisiyana.
Muenzaniso wekushanda nechokwadi:
notify { "Running OS ${facts['os']['name']} version ${facts['os']['release']['full']}": }
# ресурс типа notify просто выводит сообщение в лог
Kutaura zviri pamutemo, chokwadi chine zita (tambo) uye kukosha (marudzi akasiyana-siyana aripo: tambo, arrays, dictionaries). Eat
Panguva yekushanda, mumiriri wepuppet anotanga akopa ese aripo echokwadi vatori kubva pappetserver kuenda kune node, mushure mezvo inovavhura uye inotumira chokwadi chakaunganidzwa kune server; Mushure meizvi, sevha inotanga kuunganidza iyo catalog.
Chokwadi chiri muchimiro chemafaira anoteeka
Zvinhu zvakadaro zvinoiswa mumamodule mudhairekitori facts.d
. Ehe, mafaera anofanira kunge achiitwa. Kana ichimhanya, ivo vanofanirwa kuburitsa ruzivo kune yakajairwa kubuda mune chero YAML kana kiyi = kukosha kwefomati.
Usakanganwa kuti chokwadi chinoshanda kune ese ma node anodzorwa nepoppet server uko module yako inotumirwa. Naizvozvo, mune script, ita shuwa kutarisa kuti system yacho ine ese mapurogiramu uye mafaera anodiwa kuti chokwadi chako chishande.
#!/bin/sh
echo "testfact=success"
#!/bin/sh
echo '{"testyamlfact":"success"}'
Ruby chokwadi
Zvinhu zvakadaro zvinoiswa mumamodule mudhairekitori 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
Zvinyorwa zvemashoko
Zvinhu zvakadaro zvinoiswa pamanodhi mudhairekitori /etc/facter/facts.d
muPuppet yekare kana /etc/puppetlabs/facts.d
muPuppet itsva.
examplefact=examplevalue
---
examplefact2: examplevalue2
anotherfact: anothervalue
Kusvika kune Chokwadi
Pane nzira mbiri dzekutaura chokwadi:
- kuburikidza neduramazwi
$facts
:$facts['fqdn']
; - uchishandisa zita rechokwadi sezita rakasiyana:
$fqdn
.
Zviri nani kushandisa duramazwi $facts
, kana zvirinani, ratidza nzvimbo yezita repasi rose ($::facts
).
Yakavakwa-mukati Variables
Kunze kwechokwadi, kune zvakare
- chokwadi chakavimbika - machinjiro anotorwa kubva pachitupa chemutengi (sezvo chitupa chinowanzo kupihwa papoppet server, mumiririri haagone kungotora nekuchinja chitupa chake, saka izvo zvinosiyana "zvinovimbwa"): zita rechitupa, saiti uye zita rezita, kuwedzera kubva pachitupa.
- server chokwadi -zvinosiyana zvine chekuita neruzivo nezve server-vhezheni, zita, server IP kero, nharaunda.
- agent chokwadi - akasiyana akawedzerwa zvakananga nepuppet-agent, uye kwete nefactor - zita retifiketi, mumiririri shanduro, puppet version.
- master variables -Pappetmaster zvinosiyana (sic!). Zvakafanana nein server chokwadi, pamwe nekumisikidza parameter maitiro aripo.
- compiler variables - compiler variables inosiyana mune imwe neimwe chiyero: zita reiyo module uye zita reiyo module umo chinhu chazvino chakawanikwa. Inogona kushandiswa, semuenzaniso, kutarisa kuti makirasi ako epachivande haasi kushandiswa zvakananga kubva kune mamwe ma module.
Kuwedzera 1: sei kumhanya uye kugadzirisa zvese izvi?
Chinyorwa chacho chaive nemienzaniso yakawanda yekodhi kodhi, asi hachina kutiudza zvachose maitiro ekuita iyi kodhi. Zvakanaka, ndiri kuzvigadzirisa.
Mumiririri akakwana kumhanyisa Puppet, asi kazhinji kazhinji iwe unozodawo sevha.
Agent
Zvirinani kubvira vhezheni XNUMX, puppet-agent mapakeji kubva
Muchiitiko chakareruka, kushandisa dhizaini yekumisikidza, zvakakwana kuvhura mumiriri mune serverless modhi: chero iyo puppet kodhi yakateedzerwa kune node, kutanga. 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
Zviri nani, hongu, kumisikidza sevha uye kumhanya vamiririri pane node mune daemon modhi - ipapo kamwe kamwe hafu yeawa vanozoisa iyo yekumisikidza yakatorwa kubva kuseva.
Iwe unogona kutevedzera push modhi yebasa - enda kune node yaunofarira uye tanga sudo puppet agent -t
. Key -t
(--test
) inosanganisa sarudzo dzinoverengeka dzinogona kugoneswa yega. Izvi zvinosanganisira zvinotevera:
- usamhanye mune daemon modhi (nekusagadzika mumiririri anotanga mune daemon mode);
- kuvhara mushure mekushandisa iyo catalog (nekusagadzika, mumiririri acharamba achishanda uye kushandisa gadziriro kamwe chete hafu yeawa);
- nyora chinyorwa chebasa chakadzama;
- ratidza shanduko mumafaira.
Mumiririri ane maitiro ekushanda pasina shanduko - unogona kuishandisa kana usina chokwadi chekuti wakanyora kugadzirisa uye unoda kutarisa kuti chii chaizvo chichachinja mumiririri panguva yekushanda. Iyi modhi inogoneswa neiyo parameter --noop
pamutsetse wekuraira: sudo puppet agent -t --noop
.
Uye zvakare, iwe unogona kugonesa iyo debugging log yebasa - mairi, puppet inonyora nezve zvese zviito zvazvinoita: nezve sosi yairi kugadzirisa parizvino, nezve maparamendi echishandiso ichi, nezvezvirongwa zvaanotangisa. Chokwadi iyi parameter --debug
.
Server
Ini handisi kuzofunga nezveseta yakazara yepappetserver uye kuendesa kodhi kwairi mune ino chinyorwa; Ini ndinongotaura kuti kunze kwebhokisi kune inoshanda zvizere vhezheni yeseva iyo isingade imwe gadziriso yekushanda nenhamba shoma nodes (ti, kusvika zana). Huwandu hukuru hwemanodhi hunoda tuning - nekusarudzika, puppetserver inotangisa vashandi vanopfuura vana, kuti uite zvakanyanya iwe unofanirwa kuwedzera nhamba yavo uye usakanganwa kuwedzera miganho yekurangarira, zvikasadaro sevha inounganidza marara kazhinji yenguva.
Code deployment - kana uchiida nekukurumidza uye zviri nyore, wobva watarisa (pa r10k)[
Wedzero 2: Coding Guidelines
- Isa zvese zvine musoro mumakirasi uye tsananguro.
- Chengetedza makirasi uye tsananguro mumamodule, kwete mumaratidziro anotsanangura node.
- Shandisa chokwadi.
- Usaite ifs zvichibva pamazita ekugamuchira.
- Inzwa wakasununguka kuwedzera maparamendi emakirasi uye tsananguro - izvi zviri nani pane fungidziro yakavanzika yakavanzwa mumuviri wekirasi/tsananguro.
Ini ndichatsanangura kuti sei ndichikurudzira kuita izvi munyaya inotevera.
mhedziso
Ngatipedzei nenhanganyaya. Muchinyorwa chinotevera ini ndichakuudza nezve Hiera, ENC uye PuppetDB.
Vashandisi vakanyoresa chete ndivo vanogona kutora chikamu muongororo.
Muchokwadi, kune zvimwe zvinhu zvakawanda - ndinogona kunyora zvinyorwa pane zvinotevera misoro, kuvhota pane zvaungade kuverenga nezvazvo:
- 59,1%Zvigadzirwa zvemhando yepamusoro zvezvidhori - zvimwe zvedanho rinotevera: zvishwe, mepu uye mamwe mataurirwo e lambda, vaunganidzi vezviwanikwa, zviwanikwa zvinotengeswa kunze kwenyika uye kutaurirana kwevatambi kuburikidza nePuppet, tags, vapeji, abstract data types.13
- 31,8%"Ndiri admin waamai vangu" kana kuti isu muAvito takaita sei shamwari nemaseva akati wandei eshanduro dzakasiyana, uye, mumusimboti, chikamu chekutarisira poppet server.7
- 81,8%Manyorero atinoita puppet code: instrumentation, zvinyorwa, kuedza, CI / CD.18
22 vashandisi vakavhota. 9 vashandisi vakaramba.
Source: www.habr.com