Réamhrá don Puipéad

Is córas bainistíochta cumraíochta é puipéad. Úsáidtear é chun ina hóstach a thabhairt chuig an stát atá ag teastáil agus an stát seo a chothabháil.

Tá mé ag obair le Puipéad le breis agus cúig bliana anois. Is éard atá sa téacs seo go bunúsach ná cnuasach aistrithe agus athordaithe de phríomhphointí ón gcáipéisíocht oifigiúil, a ligfidh do thosaitheoirí bunbhrí an Phuipéid a thuiscint go tapa.

Réamhrá don Puipéad

Faisnéis faoi Basova

Is cliant-freastalaí é córas oibriúcháin Puipéad, cé go dtacaíonn sé freisin le hoibriú gan freastalaí le feidhmiúlacht theoranta.

Úsáidtear múnla oibríochta tarraingt: de réir réamhshocraithe, uair amháin gach leath uair an chloig, déanann cliaint teagmháil leis an bhfreastalaí le haghaidh cumraíochta agus cuir i bhfeidhm é. Má d'oibrigh tú le Ansible, ansin úsáideann siad múnla brú difriúil: cuireann an riarthóir tús leis an bpróiseas chun an chumraíocht a chur i bhfeidhm, ní chuirfidh na cliaint iad féin aon rud i bhfeidhm.

Le linn cumarsáide líonra, úsáidtear criptiú TLS dhá bhealach: tá a n-eochracha príobháideacha féin agus na deimhnithe comhfhreagracha ag an bhfreastalaí agus an cliant. De ghnáth eisíonn an freastalaí teastais do chliaint, ach i bprionsabal is féidir CA seachtrach a úsáid.

Réamhrá ar na manifestos

I dtéarmaíocht Puipéad chuig an bhfreastalaí puipéad ceangal nóid (nóid). Scríobhtar cumraíocht na nóid in manifestos i dteanga cláir speisialta - Puipéad DSL.

Teanga dhearbhaithe is ea Puipéad DSL. Déanann sé cur síos ar staid inmhianaithe an nód i bhfoirm dearbhuithe acmhainní aonair, mar shampla:

  • Tá an comhad ann agus tá ábhar ar leith ann.
  • Tá an pacáiste suiteáilte.
  • Tá an tseirbhís tosaithe.

Is féidir acmhainní a idirnascadh:

  • Tá spleáchais ann, cuireann siad isteach ar an ord ina n-úsáidtear acmhainní.
    Mar shampla, "suiteáil an pacáiste ar dtús, ansin cuir an comhad cumraíochta in eagar, ansin cuir tús leis an tseirbhís."
  • Tá fógraí ann - má tá acmhainn athraithe, seolann sé fógraí chuig na hacmhainní atá suibscríofa leis.
    Mar shampla, má athraíonn an comhad cumraíochta, is féidir leat an tseirbhís a atosú go huathoibríoch.

Ina theannta sin, tá feidhmeanna agus athróga ag an Puipéad DSL, chomh maith le ráitis choinníollacha agus roghnóirí. Tacaítear freisin le meicníochtaí éagsúla templúcháin - EPP agus ORC.

Tá puipéad scríofa i Ruby, mar sin baintear go leor de na tógálacha agus téarmaí as sin. Ligeann Ruby duit Puipéad a leathnú - cuir loighic casta, cineálacha nua acmhainní, feidhmeanna.

Cé go bhfuil Puipéad ar siúl, cuirtear manifests do gach nód ar leith ar an bhfreastalaí le chéile in eolaire. Eolaire Is liosta acmhainní agus a ngaolta tar éis luach feidhmeanna, athróg agus leathnú ráiteas coinníollach a ríomh.

Comhréir agus stíl chóid

Seo codanna den doiciméadú oifigiúil a chabhróidh leat an chomhréir a thuiscint mura leor na samplaí a cuireadh ar fáil:

Seo sampla den chuma atá ar an léiriú:

# Комментарии пишутся, как и много где, после решётки.
#
# Описание конфигурации ноды начинается с ключевого слова node,
# за которым следует селектор ноды — хостнейм (с доменом или без)
# или регулярное выражение для хостнеймов, или ключевое слово default.
#
# После этого в фигурных скобках описывается собственно конфигурация ноды.
#
# Одна и та же нода может попасть под несколько селекторов. Про приоритет
# селекторов написано в статье про синтаксис описания нод.
node 'hostname', 'f.q.d.n', /regexp/ {
  # Конфигурация по сути является перечислением ресурсов и их параметров.
  #
  # У каждого ресурса есть тип и название.
  #
  # Внимание: не может быть двух ресурсов одного типа с одинаковыми названиями!
  #
  # Описание ресурса начинается с его типа. Тип пишется в нижнем регистре.
  # Про разные типы ресурсов написано ниже.
  #
  # После типа в фигурных скобках пишется название ресурса, потом двоеточие,
  # дальше идёт опциональное перечисление параметров ресурса и их значений.
  # Значения параметров указываются через т.н. hash rocket (=>).
  resource { 'title':
    param1 => value1,
    param2 => value2,
    param3 => value3,
  }
}

Ní cuid riachtanach den léiriú iad eangú agus briseadh líne, ach moltar é treoir stíl. Achoimre:

  • fleasc dhá-spás, ní úsáidtear cluaisíní.
  • Tá braces curly scartha ag spás;
  • Camóga tar éis gach paraiméadar, lena n-áirítear an ceann deireanach. Tá gach paraiméadar ar líne ar leith. Déantar eisceacht don chás gan paraiméadair agus paraiméadar amháin: is féidir leat scríobh ar líne amháin agus gan camóg (i.e. resource { 'title': } и resource { 'title': param => value }).
  • Ba cheart go mbeadh na saigheada ar na paraiméadair ag an leibhéal céanna.
  • Scríobhtar saigheada caidrimh acmhainne os a gcomhair.

Suíomh na gcomhad ar an bhfreastalaí paipéid

Le haghaidh tuilleadh mínithe, tabharfaidh mé isteach an coincheap "fréamheolaire". Is é an t-eolaire fréamhacha an t-eolaire ina bhfuil an chumraíocht Puipéad le haghaidh nód ar leith.

Athraíonn an t-eolaire fréamhacha ag brath ar an leagan de Puipéad agus na timpeallachtaí a úsáidtear. Is tacair neamhspleácha cumraíochta iad timpeallachtaí a stóráiltear in eolairí ar leith. De ghnáth úsáidtear é i gcomhcheangal le git, agus sa chás sin cruthaítear timpeallachtaí ó bhrainsí git. Dá réir sin, tá gach nód suite i dtimpeallacht amháin nó eile. Is féidir é seo a chumrú ar an nód féin, nó in ENC, a labhróidh mé faoi sa chéad alt eile.

  • Sa tríú leagan ("sean-Puipéad") a bhí an t-eolaire bonn /etc/puppet. Tá úsáid timpeallachtaí roghnach - mar shampla, ní úsáidimid iad leis an sean-Puipéad. Má úsáidtear timpeallachtaí, is gnách iad a stóráil i /etc/puppet/environments, beidh an eolaire fréimhe an eolaire comhshaoil. Mura n-úsáidtear timpeallachtaí, beidh an t-eolaire fréamhacha mar bhun-eolaire.
  • Ag tosú ón gceathrú leagan (“Puipéad nua”), bhí úsáid timpeallachtaí éigeantach, agus aistríodh an t-eolaire bunaidh chuig /etc/puppetlabs/code. Dá réir sin, stóráiltear timpeallachtaí i /etc/puppetlabs/code/environments, is é eolaire fréimhe an t-eolaire comhshaoil.

Caithfidh fochomhadlann a bheith sa fhréamh-eolaire manifests, ina bhfuil manifests amháin nó níos mó ag cur síos ar na nóid. Ina theannta sin, ba cheart go mbeadh fochomhadlann ann modules, ina bhfuil na modúil. Inseoidh mé duit cad iad na modúil beagán níos déanaí. Ina theannta sin, d’fhéadfadh fochomhadlann a bheith ag an sean-Puipéad freisin files, ina bhfuil comhaid éagsúla a chóipeáilimid chuig na nóid. Sa Puipéad nua, cuirtear gach comhad i modúil.

Tá an síneadh ag comhaid follasach .pp.

Cúpla sampla comhraic

Cur síos ar an nód agus acmhainn ar sé....

Ar an nód server1.testdomain ní mór comhad a chruthú /etc/issue le hábhar Debian GNU/Linux n l. Caithfidh an comhad a bheith faoi úinéireacht úsáideoir agus grúpa root, ní mór cearta rochtana 644.

Scríobhaimid forógra:

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 в начале будет воспринято как записанное в восьмеричной системе, и всё пойдёт не так, как задумано
    }
}

Caidreamh idir acmhainní ar nód

Ar an nód server2.testdomain ní mór nginx a bheith ag rith, ag obair le cumraíocht ullmhaithe roimhe seo.

Déanaimis an fhadhb a dhianscaoileadh:

  • Is gá an pacáiste a shuiteáil nginx.
  • Is gá na comhaid cumraíochta a chóipeáil ón bhfreastalaí.
  • Ní mór an tseirbhís a bheith ar siúl nginx.
  • Má dhéantar an chumraíocht a nuashonrú, ní mór an tseirbhís a atosú.

Scríobhaimid forógra:

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 получает уведомление,
  # соответствующий сервис перезапускается.
}

Le go n-oibreoidh sé seo, beidh thart ar an suíomh comhaid seo a leanas uait ar an bhfreastalaí puipéad:

/etc/puppetlabs/code/environments/production/ # (это для нового Паппета, для старого корневой директорией будет /etc/puppet)
├── manifests/
│   └── site.pp
└── modules/
    └── example/
        └── files/
            └── nginx-conf/
                ├── nginx.conf
                ├── mime.types
                └── conf.d/
                    └── some.conf

Cineálacha Acmhainní

Is féidir liosta iomlán de na cineálacha acmhainní tacaithe a fháil anseo sa doiciméadú, anseo déanfaidh mé cur síos ar chúig chineál bunúsacha, atá i mo chleachtas go leor chun an chuid is mó de na fadhbanna a réiteach.

filléad

Bainistíonn comhaid, eolairí, nascanna naisc, a bhfuil iontu agus cearta rochtana.

roghanna:

  • ainm acmhainne — cosán go dtí an comhad (roghnach)
  • cosán — cosán chuig an gcomhad (mura bhfuil sé sonraithe san ainm)
  • a chinntiú - cineál comhaid:
    • absent - scrios comhad
    • present — ní mór comhad de chineál ar bith a bheith ann (mura bhfuil comhad ann, cruthófar gnáthchomhad)
    • file - comhad rialta
    • directory - eolaire
    • link - simplíink
  • ábhar — inneachar an chomhaid (oiriúnach do chomhaid rialta amháin, ní féidir é a úsáid in éineacht le foinsesprioc)
  • foinse — nasc chuig an gcosán óna dteastaíonn uait inneachar an chomhaid a chóipeáil (ní féidir é a úsáid in éineacht le ábharsprioc). Is féidir é a shonrú mar URI le scéim puppet: (úsáidfear comhaid ón bhfreastalaí puipéad ansin), agus leis an scéim http: (Tá súil agam go bhfuil sé soiléir cad a tharlóidh sa chás seo), agus fiú leis an léaráid file: nó mar chonair iomlán gan scéimre (ansin úsáidfear an comhad ón FS áitiúil ar an nód)
  • sprioc — an áit ar cheart don nasc simplí pointe (ní féidir é a úsáid in éineacht le ábharfoinse)
  • úinéir — an t-úsáideoir ar cheart dó/di an comhad a bheith ina úinéir
  • grúpa — an grúpa ar cheart an comhad a bheith ina bhall de
  • Modh — ceadanna comhaid (mar theaghrán)
  • atarlú - cuireann sé ar chumas próiseáil eolaire athfhillteach
  • purge - cuireann sé ar chumas comhaid nach bhfuil cur síos orthu i Puipéad a scriosadh
  • bhfeidhm - cuireann sé ar chumas eolairí nach bhfuil cur síos orthu i Puipéad a scriosadh

pacáiste

Suiteáil agus baintear pacáistí. In ann fógraí a láimhseáil - reinstalls an pacáiste má tá an paraiméadar sonraithe reinstall_on_refresh.

roghanna:

  • ainm acmhainne — ainm an phacáiste (roghnach)
  • ainm — ainm an phacáiste (mura bhfuil sé sonraithe san ainm)
  • soláthraí — bainisteoir pacáiste le húsáid
  • a chinntiú — staid inmhianaithe an phacáiste:
    • present, installed - aon leagan suiteáilte
    • latest - an leagan is déanaí suiteáilte
    • absent - scriosta (apt-get remove)
    • purged — scriosta mar aon le comhaid chumraíochta (apt-get purge)
    • held - tá leagan an phacáiste faoi ghlas (apt-mark hold)
    • любая другая строка - tá an leagan sonraithe suiteáilte
  • reinstall_on_refresh - más a true, ansin nuair a fhaightear an fógra athshuiteálfar an pacáiste. Úsáideach le haghaidh dáiltí foinse-bhunaithe, nuair is féidir go mbeadh gá le pacáistí atógáil agus paraiméadair tógála á n-athrú. Réamhshocrú false.

seirbhís

Bainistíonn sé seirbhísí. In ann fógraí a phróiseáil - restarts an tseirbhís.

roghanna:

  • ainm acmhainne — seirbhís le bainistiú (roghnach)
  • ainm — an tseirbhís is gá a bhainistiú (mura bhfuil sé sonraithe san ainm)
  • a chinntiú — staid inmhianaithe na seirbhíse:
    • running - seolta
    • stopped - stad
  • chumasú — a rialaíonn an cumas an tseirbhís a thosú:
    • true — tá autorun cumasaithe (systemctl enable)
    • mask - faoi cheilt (systemctl mask)
    • false — tá autorun díchumasaithe (systemctl disable)
  • atosú - ordú chun an tseirbhís a atosú
  • stádas - ordú chun stádas seirbhíse a sheiceáil
  • tosaithe — cuir in iúl an dtacaíonn an initscript seirbhíse leis an atosú. Dá false agus sonraítear an paraiméadar atosú — úsáidtear luach an pharaiméadar seo. Dá false agus paraiméadar atosú nach bhfuil sonraithe - stoptar an tseirbhís agus tosaítear ar a atosú (ach úsáideann systemd an t-ordú systemctl restart).
  • hasstatus — cuir in iúl an dtacaíonn an initscript seirbhíse leis an ordú status. Dá false, ansin úsáidtear an luach paraiméadar stádas. Réamhshocrú true.

exec

Ritheann orduithe seachtracha. Mura bhfuil tú a shonrú paraiméadair Cruthaíonn, achif, mura rud éúrnua, reáchtálfar an t-ordú gach uair a reáchtálfar Puipéad. In ann fógraí a phróiseáil - ritheann ordú.

roghanna:

  • ainm acmhainne — ordú le forghníomhú (roghnach)
  • orduithe — an t-ordú atá le déanamh (mura bhfuil sé sonraithe san ainm)
  • cosán — cosáin inar féidir an comhad inrite a chuardach
  • achif — má chríochnaigh an t-ordú atá sonraithe sa pharaiméadar seo le cód aischuir nialasach, déanfar an príomhordú a fhorghníomhú
  • mura rud é — má chríochnaíonn an t-ordú atá sonraithe sa pharaiméadar seo le cód aischuir neamh-nialas, déanfar an príomhordú a fhorghníomhú
  • Cruthaíonn — mura bhfuil an comhad sonraithe sa pharaiméadar seo ann, cuirfear an príomhordú i gcrích
  • úrnua - más a true, ansin ní reáchtálfar an t-ordú ach amháin nuair a fhaigheann an exec seo fógra ó acmhainní eile
  • cud — eolaire as ar cheart an t-ordú a rith
  • faoi ​​úsáideoir — an t-úsáideoir ónar cheart an t-ordú a rith
  • soláthraí - conas an t-ordú a rith:
    • POSIX - Tá próiseas leanbh a cruthaíodh go simplí, a bheith cinnte a shonrú cosán
    • bhlaosc - seoltar an t-ordú sa bhlaosc /bin/sh, ní féidir a shonrú cosán, is féidir leat globbing, píopaí agus gnéithe bhlaosc eile a úsáid. De ghnáth braitear go huathoibríoch má tá aon charachtair speisialta (|, ;, &&, || agus mar sin de).

cron

Rialaíonn cronjobs.

roghanna:

  • ainm acmhainne - ach aitheantóir de chineál éigin
  • a chinntiú — staid choróinjob:
    • present - cruthaigh mura bhfuil ann
    • absent - scrios má tá
  • orduithe - cén ordú a rith
  • timpeallacht — ina timpeallacht chun an t-ordú a rith (liosta na n-athróg timpeallachta agus a luachanna trí =)
  • faoi ​​úsáideoir - cén úsáideoir a ritheann an t-ordú
  • nóiméad, uair an chloig, i rith na seachtaine, , míosa — cathain is ceart cron a rith. Mura sonraítear aon cheann de na tréithe seo, beidh a luach sa crontab *.

Sa Phuipéad 6.0 cron amhail is dá mba bhaint as an mbosca sa puipéadfhreastalaí, mar sin níl aon doiciméadú ar an suíomh ginearálta. Ach tá sé atá sa bhosca i ngníomhaire puipéad, mar sin ní gá é a shuiteáil ar leithligh. Is féidir leat an doiciméadú a fheiceáil dó sna doiciméid don chúigiú leagan de Puipéadar GitHub.

Maidir le hacmhainní go ginearálta

Ceanglais maidir le huathúlacht acmhainní

Is é an botún is coitianta a bhíonn againn Dearbhú dúblach. Tarlaíonn an earráid seo nuair a bhíonn dhá acmhainn nó níos mó den chineál céanna leis an ainm céanna le feiceáil san eolaire.

Dá bhrí sin, scríobhfaidh mé arís: níor cheart go mbeadh acmhainní den chineál céanna leis an teideal céanna in manifests don nód céanna!

Uaireanta is gá pacáistí a shuiteáil leis an ainm céanna, ach le bainisteoirí pacáiste éagsúla. Sa chás seo, ní mór duit an paraiméadar a úsáid namechun an earráid a sheachaint:

package { 'ruby-mysql':
  ensure   => installed,
  name     => 'mysql',
  provider => 'gem',
}
package { 'python-mysql':
  ensure   => installed,
  name     => 'mysql',
  provider => 'pip',
}

Tá roghanna comhchosúla ag cineálacha eile acmhainní chun cuidiú le dúbailt a sheachaint − name у seirbhís, command у exec, agus mar sin de.

Metaparaiméadair

Tá roinnt paraiméadair speisialta ag gach cineál acmhainne, beag beann ar a nádúr.

Liosta iomlán de na paraiméadair meta sa doiciméadú Puipéad.

Liosta gearr:

  • a cheangal ar — léiríonn an paraiméadar seo na hacmhainní a mbraitheann an acmhainn seo orthu.
  • roimh - Sonraíonn an paraiméadar seo na hacmhainní atá ag brath ar an acmhainn seo.
  • liostáil — sonraítear sa pharaiméadar seo cé na hacmhainní a fhaigheann an acmhainn seo fógraí.
  • fógra a thabhairt — Sonraítear leis an bparaiméadar seo na hacmhainní a fhaigheann fógraí ón acmhainn seo.

Glacann na meiteashonraí liostaithe go léir le nasc acmhainne amháin nó le raon nasc idir lúibíní cearnacha.

Naisc chuig acmhainní

Níl i nasc acmhainne ach tagairt don acmhainn. Úsáidtear iad go príomha chun spleáchais a léiriú. Má dhéantar tagairt d'acmhainn nach bhfuil ann, cruthófar earráid tiomsaithe.

Is é seo a leanas comhréir an naisc: cineál acmhainne le ceannlitir (má tá coilíneacha dúbailte sa chineálainm, déantar caipitliú ar gach cuid den ainm idir na coilíneachtaí), ansin ainm na hacmhainne idir lúibíní cearnacha (cás an ainm ní athraíonn!). Níor cheart go mbeadh spásanna ann; scríobhtar lúibíní cearnacha díreach tar éis an t-ainm cineáil.

Sampla:

file { '/file1': ensure => present }
file { '/file2':
  ensure => directory,
  before => File['/file1'],
}
file { '/file3': ensure => absent }
File['/file1'] -> File['/file3']

Spleáchais agus fógraí

Doiciméadú anseo.

Mar a dúradh níos luaithe, tá spleáchais shimplí idir acmhainní idirthréimhseach. Dála an scéil, bí cúramach agus tú ag cur spleáchais - is féidir leat spleáchais timthriallacha a chruthú, rud a chuirfidh earráid tiomsaithe.

Murab ionann agus spleáchais, níl fógraí neamhaistrithe. Tá feidhm ag na rialacha seo a leanas maidir le fógraí:

  • Má fhaigheann an acmhainn fógra, déantar é a nuashonrú. Braitheann na gníomhartha nuashonraithe ar an gcineál acmhainne − exec ritheann an t-ordú, seirbhís atosaíonn an tseirbhís, pacáiste athshuiteálann sé an pacáiste. Mura bhfuil gníomh nuashonraithe sainmhínithe ag an acmhainn, ní tharlaíonn aon rud.
  • Le linn rith amháin Puipéad, ní dhéantar an acmhainn a nuashonrú níos mó ná uair amháin. Tá sé seo indéanta toisc go bhfuil spleáchais san áireamh sna fógraí agus nach bhfuil timthriallta sa ghraf spleáchais.
  • Má athraíonn Puipéad staid acmhainne, seolann an acmhainn fógraí chuig na hacmhainní go léir atá suibscríofa leis.
  • Má dhéantar acmhainn a nuashonrú, seolann sé fógraí chuig na hacmhainní go léir atá suibscríofa léi.

Láimhseáil paraiméadair neamhshonraithe

De ghnáth, mura bhfuil luach réamhshocraithe ag roinnt paraiméadar acmhainne agus nach bhfuil an paraiméadar seo sonraithe sa léiriú, ansin ní athróidh Puipéad an mhaoin seo don acmhainn chomhfhreagrach ar an nód. Mar shampla, más acmhainn de chineál filléad paraiméadar nach bhfuil sonraithe owner, ansin ní athróidh Puipéad úinéir an chomhaid chomhfhreagrach.

Réamhrá do ranganna, athróga agus sainmhínithe

Cuir i gcás go bhfuil roinnt nóid againn a bhfuil an chuid chéanna den chumraíocht acu, ach tá difríochtaí ann freisin - nó d'fhéadfaimis cur síos a dhéanamh air in aon bhloc amháin node {}. Ar ndóigh, is féidir leat codanna comhionanna den chumraíocht a chóipeáil go simplí, ach go ginearálta is droch-réiteach é seo - fásann an chumraíocht, agus má athraíonn tú an chuid ghinearálta den chumraíocht, beidh ort an rud céanna a chur in eagar i go leor áiteanna. Ag an am céanna, tá sé éasca botún a dhéanamh, agus go ginearálta, cruthaíodh prionsabal TRY (ná déan tú féin arís) ar chúis.

Chun an fhadhb seo a réiteach tá dearadh den sórt sin mar rang.

Ranganna

Rang is bloc ainmnithe de chód poppet. Tá ranganna ag teastáil chun cód a athúsáid.

Ar dtús is gá cur síos a dhéanamh ar an rang. Ní chuireann an cur síos féin aon acmhainní in áit ar bith. Tá cur síos ar an rang i manifests:

# Описание класса начинается с ключевого слова class и его названия.
# Дальше идёт тело класса в фигурных скобках.
class example_class {
    ...
}

Ina dhiaidh seo is féidir an rang a úsáid:

# первый вариант использования — в стиле ресурса с типом class
class { 'example_class': }
# второй вариант использования — с помощью функции include
include example_class
# про отличие этих двух вариантов будет рассказано дальше

Sampla ón tasc roimhe seo - bogfaimid suiteáil agus cumraíocht nginx isteach i rang:

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
}

Athróga

Níl an rang ón sampla roimhe seo solúbtha ar chor ar bith toisc go dtugann sé an chumraíocht nginx céanna i gcónaí. Déanaimis an cosán chuig an athróg cumraíochta, ansin is féidir an rang seo a úsáid chun nginx a shuiteáil le haon chumraíocht.

Is féidir é a dhéanamh ag baint úsáide as athróga.

Aird: tá athróga sa Puipéad do-athlasta!

Ina theannta sin, ní féidir rochtain a fháil ar athróg ach amháin tar éis é a dhearbhú, ar shlí eile beidh luach na hathróige undef.

Sampla d’oibriú le hathróga:

# создание переменных
$variable = 'value'
$var2 = 1
$var3 = true
$var4 = undef
# использование переменных
$var5 = $var6
file { '/tmp/text': content => $variable }
# интерполяция переменных — раскрытие значения переменных в строках. Работает только в двойных кавычках!
$var6 = "Variable with name variable has value ${variable}"

Tá puipéad spásanna ainmneacha, agus na hathróga, dá réir sin, tá limistéar infheictheachta: Is féidir athróg leis an ainm céanna a shainmhíniú in ainmspásanna éagsúla. Nuair a bhíonn luach athróige á réiteach, déantar an athróg a chuardach san ainmspás reatha, ansin san ainmspás faoi iamh, agus mar sin de.

Samplaí ainmspáis:

  • domhanda - téann athróga lasmuigh den aicme nó den tuairisc nód ann;
  • ainmspás nód sa tuairisc nód;
  • spás ainm ranga sa tuairisc ranga.

Chun débhríocht a sheachaint agus athróg á rochtain agat, is féidir leat an t-ainmspás a shonrú in ainm na hathróige:

# переменная без пространства имён
$var
# переменная в глобальном пространстве имён
$::var
# переменная в пространстве имён класса
$classname::var
$::classname::var

Aontaímid go luíonn an cosán chuig cumraíocht nginx san athróg $nginx_conf_source. Ansin beidh cuma mar seo ar an rang:

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
}

Mar sin féin, tá an sampla a thugtar dona mar go bhfuil roinnt “eolas rúnda” ann go n-úsáidtear athróg a bhfuil a leithéid d’ainm in áit éigin laistigh den rang. Tá sé i bhfad níos ceart an t-eolas seo a dhéanamh ginearálta - is féidir paraiméadair a bheith ag ranganna.

Paraiméadair ranga is athróga iad in ainmspás an ranga, sonraítear iad i gceanntásc an ranga agus is féidir iad a úsáid mar athróga rialta i gcorp an ranga. Sonraítear luachanna paraiméadar nuair a bhíonn an rang á úsáid sa léiriú.

Is féidir an paraiméadar a shocrú de réir luach réamhshocraithe. Mura bhfuil luach réamhshocraithe ag paraiméadar agus nach bhfuil an luach socraithe nuair a úsáidtear é, cuirfidh sé faoi deara earráid tiomsaithe.

Déanaimis an rang a pharaiméadar ón sampla thuas agus cuirfimid dhá pharaiméadar leis: is é an chéad cheann, atá ag teastáil, an cosán go dtí an chumraíocht, agus an dara ceann, roghnach, is é ainm an phacáiste le nginx (i Debian, mar shampla, tá pacáistí ann. 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 Puipéad, clóscríobhtar athróga. Ith go leor cineálacha sonraí. Úsáidtear cineálacha sonraí de ghnáth chun luachanna paraiméadar a chuirtear ar aghaidh chuig aicmí agus sainmhínithe a bhailíochtú. Mura dtagann an paraiméadar a ritheadh ​​leis an gcineál sonraithe, tarlóidh earráid tiomsaithe.

Scríobhtar an cineál díreach roimh ainm an pharaiméadar:

class example (
  String $param1,
  Integer $param2,
  Array $param3,
  Hash $param4,
  Hash[String, String] $param5,
) {
  ...
}

Aicmí: cuir ainm ranga vs rang{'ainm ranga':} san áireamh

Is acmhainn cineáil gach rang ranga. Mar aon le haon chineál acmhainne eile, ní féidir dhá chás den rang céanna a bheith ar an nód céanna.

Má dhéanann tú iarracht rang a chur leis an nód céanna faoi dhó úsáid class { 'classname':} (gan aon difríocht, le paraiméadair dhifriúla nó comhionann), beidh earráid tiomsaithe ann. Ach má úsáideann tú rang sa stíl acmhainne, is féidir leat a paraiméadair go léir a shocrú láithreach sa léiriú.

Mar sin féin, má úsáideann tú include, ansin is féidir an rang a chur leis chomh minic agus is mian leis. Is é fírinne an scéil go include is feidhm dhochloíte a sheiceálann an bhfuil aicme curtha leis an eolaire. Mura bhfuil an rang sa chomhadlann, cuireann sé é, agus má tá sé ann cheana féin, ní dhéanann sé rud ar bith. Ach i gcás úsáid a bhaint as include Ní féidir leat paraiméadair ranga a shocrú le linn dearbhú ranga - ní mór na paraiméadair riachtanacha go léir a shocrú i bhfoinse seachtrach sonraí - Hiera nó ENC. Déanfaimid labhairt mar gheall orthu san alt seo chugainn.

Sainmhíníonn

Mar a dúradh sa bhloc roimhe seo, ní féidir leis an rang céanna a bheith i láthair ar nód níos mó ná uair amháin. Mar sin féin, i gcásanna áirithe ní mór duit a bheith in ann an bloc cód céanna a úsáid le paraiméadair éagsúla ar an nód céanna. I bhfocail eile, tá gá le cineál acmhainne dá chuid féin.

Mar shampla, chun an modúl PHP a shuiteáil, déanaimid an méid seo a leanas in Avito:

  1. Suiteáil an pacáiste leis an modúl seo.
  2. Cruthaímid comhad cumraíochta don mhodúl seo.
  3. Cruthaímid nasc-simplí leis an gcumraíocht do php-fpm.
  4. Cruthaímid nasc-simplí leis an gcumraíocht le haghaidh php cli.

I gcásanna den sórt sin, dearadh ar nós shainigh (sainmhínigh, cineál sainithe, cineál sainithe acmhainne). A Tá Sainmhínigh cosúil le haicme, ach tá difríochtaí ann: ar dtús, is cineál acmhainne gach Sainmhínigh, ní acmhainn; sa dara háit, tá paraiméadar intuigthe ag gach sainmhíniú $title, an áit a dtéann an t-ainm acmhainne nuair a dhearbhaítear é. Díreach mar atá i gcás ranganna, ní mór sainmhíniú a thabhairt ar dtús, agus is féidir é a úsáid ina dhiaidh sin.

Sampla simplithe le modúl do 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' }
}

Is é an bealach is éasca chun an earráid um dhearbhú Dúblach a ghabháil ná Sainmhínigh. Tarlaíonn sé seo má tá acmhainn ag sainmhíniú le hainm tairiseach, agus tá dhá chás nó níos mó den sainmhíniú seo ar nód éigin.

Tá sé éasca tú féin a chosaint uaidh seo: ní mór ainm a bheith ag gach acmhainn sa sainmhíniú $title. Rogha eile is ea acmhainní a shuimiú go míchuí; include díomhaoin.

Tá bealaí eile ann chun neamhláithreacht a bhaint amach agus acmhainní á gcur leis, eadhon feidhmeanna a úsáid defined и ensure_resources, ach inseoidh mé duit faoi sa chéad eipeasóid eile.

Spleáchais agus fógraí le haghaidh aicmí agus sainmhínithe

Cuireann aicmí agus sainmhínithe na rialacha seo a leanas le láimhseáil spleáchais agus fógraí:

  • cuireann spleáchas ar rang/sainmhíniú spleáchas ar acmhainní uile an ranga/sainmhínithe;
  • cuireann spleáchas ranga/sainmhínithe spleáchais le gach acmhainn ranga/sainmhínithe;
  • cuireann fógra aicme/sainmhínithe acmhainní uile an aicme/sainmhínithe ar an eolas;
  • síntiús rang/sainmhíniú le gach acmhainn den rang/sainmhíniú.

Ráitis choinníollach agus roghnóirí

Doiciméadú anseo.

if

Tá sé simplí anseo:

if ВЫРАЖЕНИЕ1 {
  ...
} elsif ВЫРАЖЕНИЕ2 {
  ...
} else {
  ...
}

mura rud é

mura rud é gur droim ar ais é: cuirfear an bloc cód i bhfeidhm má tá an slonn bréagach.

unless ВЫРАЖЕНИЕ {
  ...
}

cás

Níl aon rud casta anseo ach an oiread. Is féidir leat luachanna rialta (teaghráin, uimhreacha, etc.), sloinn rialta, agus cineálacha sonraí a úsáid mar luachanna.

case ВЫРАЖЕНИЕ {
  ЗНАЧЕНИЕ1: { ... }
  ЗНАЧЕНИЕ2, ЗНАЧЕНИЕ3: { ... }
  default: { ... }
}

Roghnóirí

Is éard is roghnóir ann ná tógáil teanga cosúil le case, ach in ionad bloc cód a fhorghníomhú, cuireann sé luach ar ais.

$var = $othervar ? { 'val1' => 1, 'val2' => 2, default => 3 }

Modúil

Nuair a bhíonn an chumraíocht beag, is féidir é a choinneáil go héasca i gceann léiriú. Ach dá mhéad cumraíochtaí a ndéanaimid cur síos orthu, is mó ranganna agus nóid atá sa léiriú, fásann sé, agus bíonn sé deacair oibriú leis.

Ina theannta sin, tá fadhb ann maidir le hathúsáid cód - nuair a bhíonn an cód ar fad in aon léiriú amháin, tá sé deacair an cód seo a roinnt le daoine eile. Chun an dá fhadhb seo a réiteach, tá eintiteas ar a dtugtar modúil ag Puipéad.

Modúil - is tacair aicmí, sainmhínithe agus aonáin Puipéad eile iad seo a chuirtear in eolaire ar leith. I bhfocail eile, is píosa neamhspleách de loighic Puipéad é modúl. Mar shampla, d'fhéadfadh go mbeadh modúl ann le bheith ag obair le nginx, agus ní bheidh ann ach an méid atá ag teastáil chun oibriú le nginx, nó d'fhéadfadh go mbeadh modúl ann le bheith ag obair le PHP, agus mar sin de.

Déantar modúil a leagan, agus tacaítear freisin le spleáchais na modúl ar a chéile. Tá stór oscailte modúl ann - Puipéad Forge.

Ar an bhfreastalaí puipéad, tá modúil suite i bhfochomhadlann modúil an fhréamh-eolaire. Taobh istigh de gach modúl tá scéim eolaire caighdeánach - manifests, comhaid, teimpléid, lib, agus mar sin de.

Struchtúr comhaid i modúl

Féadfaidh na heolairí seo a leanas a bhfuil ainmneacha tuairisciúla orthu a bheith i bhfréamh an mhodúil:

  • manifests - tá manifestos ann
  • files - tá comhaid ann
  • templates - tá teimpléid ann
  • lib - tá cód Ruby ann

Ní liosta iomlán eolairí agus comhaid é seo, ach is leor don alt seo le tamall anuas.

Ainmneacha na n-acmhainní agus ainmneacha na gcomhad sa mhodúl

Doiciméadú anseo.

Ní féidir acmhainní (ranganna, sainmhínithe) i modúl a ainmniú cibé rud is mian leat. Ina theannta sin, tá comhfhreagras díreach idir ainm acmhainne agus ainm an chomhaid ina lorgóidh Puipéad cur síos ar an acmhainn sin. Má sháraíonn tú na rialacha ainmniúcháin, ní bhfaighidh Puipéad cur síos ar an acmhainn agus gheobhaidh tú earráid tiomsaithe.

Tá na rialacha simplí:

  • Caithfidh gach acmhainn i modúl a bheith in ainmspás an mhodúil. Má thugtar an modúl foo, ansin ba chóir na hacmhainní go léir atá ann a ainmniú foo::<anything>, nó díreach foo.
  • Caithfidh an acmhainn ar a bhfuil ainm an mhodúil a bheith sa chomhad init.pp.
  • Maidir le hacmhainní eile, is mar seo a leanas atá scéim na gcomhad a ainmniú:
    • cuirtear an réimír ar a bhfuil ainm an mhodúil ar ceal
    • cuirtear slais in ionad gach coilín dúbailte, más ann dóibh
    • cuirtear síneadh leis .pp

Léireoidh mé le sampla. Ligean le rá go bhfuil modúl á scríobh agam nginx. Tá na hacmhainní seo a leanas ann:

  • rang nginx cur síos orthu sa léiriú init.pp;
  • rang nginx::service cur síos orthu sa léiriú service.pp;
  • shainigh nginx::server cur síos orthu sa léiriú server.pp;
  • shainigh nginx::server::location cur síos orthu sa léiriú server/location.pp.

teimpléid

Is cinnte go bhfuil a fhios agat féin cad iad na teimpléid; ní dhéanfaidh mé cur síos mionsonraithe orthu anseo. Ach fágfaidh mé é ar eagla na heagla nasc chuig Vicipéid.

Conas teimpléid a úsáid: Is féidir brí teimpléid a leathnú trí fheidhm a úsáid template, a chuirtear an cosán ar aghaidh chuig an teimpléad. Le haghaidh acmhainní de chineál filléad a úsáidtear mar aon leis an bparaiméadar content. Mar shampla, mar seo:

file { '/tmp/example': content => template('modulename/templatename.erb')

Féach cosán <modulename>/<filename> le tuiscint comhad <rootdir>/modules/<modulename>/templates/<filename>.

Ina theannta sin, tá feidhm inline_template — faigheann sé an téacs teimpléad mar ionchur, ní ainm an chomhaid.

Laistigh de theimpléid, is féidir leat gach athróg Puipéad a úsáid sa raon feidhme reatha.

Tacaíonn puipéad le teimpléid i bhformáid ERB agus EPP:

Go hachomair faoi ERB

Struchtúir rialaithe:

  • <%= ВЫРАЖЕНИЕ %> — cuir isteach luach na slonn
  • <% ВЫРАЖЕНИЕ %> — luach slonn a ríomh (gan é a chur isteach). Is gnách go dtéann ráitis choinníollach (más rud é) agus lúba (gach ceann) anseo.
  • <%# КОММЕНТАРИЙ %>

Scríobhtar na habairtí in ORC i Ruby (is Ruby Leabaithe é an ERB).

Chun rochtain a fháil ar athróga ón léiriú, ní mór duit a shuimiú @ don ainm athróg. Chun briseadh líne a thagann chun cinn tar éis tógáil rialaithe a bhaint, ní mór duit clib deiridh a úsáid -%>.

Sampla den teimpléad a úsáid

Ligean le rá go bhfuil mé ag scríobh modúl chun ZooKeeper a rialú. Breathnaíonn an rang atá freagrach as an gcumraíocht a chruthú mar seo:

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'),
  }
}

Agus an teimpléad comhfhreagrach zoo.cfg.erb - Mar sin:

<% 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 -%>

Fíricí agus Athróga Insuite

Go minic braitheann an chuid ar leith den chumraíocht ar an méid atá ag tarlú faoi láthair ar an nód. Mar shampla, ag brath ar cad é scaoileadh Debian, ní mór duit leagan amháin nó leagan eile den phacáiste a shuiteáil. Is féidir leat monatóireacht a dhéanamh ar seo go léir de láimh, manifests athscríobh má athraíonn nóid. Ach ní cur chuige tromchúiseach é seo;

Chun faisnéis a fháil faoi nóid, tá meicníocht ag Puipéad ar a dtugtar fíricí. fíricí - is faisnéis é seo faoin nód, atá ar fáil i manifests i bhfoirm gnáth-athróg san ainmspás domhanda. Mar shampla, ainm óstaigh, leagan an chórais oibriúcháin, ailtireacht próiseálaí, liosta úsáideoirí, liosta comhéadain líonra agus a seoltaí, agus i bhfad, i bhfad níos mó. Tá fíricí ar fáil i manifests agus teimpléid mar athróga rialta.

Sampla de bheith ag obair le fíricí:

notify { "Running OS ${facts['os']['name']} version ${facts['os']['release']['full']}": }
# ресурс типа notify просто выводит сообщение в лог

Go foirmiúil, tá ainm (teaghrán) agus luach ag fíric (tá cineálacha éagsúla ar fáil: teaghráin, eagair, foclóirí). Ith sraith fíricí ionsuite. Is féidir leat do chuid féin a scríobh freisin. Déantar cur síos ar bhailitheoirí fíricí cosúil le feidhmeanna i Ruby, nó mar comhaid inrite. Is féidir fíricí a chur i láthair san fhoirm freisin comhaid téacs le sonraí ar na nóid.

Le linn oibriú, déanann an gníomhaire puipéad cóip den chéad uair ar na bailitheoirí fíricí go léir atá ar fáil ón bhfreastalaí paipéid chuig an nód, agus ina dhiaidh sin seolann sé iad agus seolann sé na fíricí bailithe chuig an bhfreastalaí; Tar éis seo, tosaíonn an freastalaí ag tiomsú na catalóige.

Fíricí i bhfoirm comhaid inrite

Cuirtear fíricí mar seo i modúil san eolaire facts.d. Ar ndóigh, ní mór na comhaid a bheith inrite. Agus iad á rith, ní mór dóibh faisnéis a aschur go dtí an t-aschur caighdeánach i bhformáid YAML nó eochair=luach.

Ná déan dearmad go mbaineann na fíricí le gach nód atá á rialú ag an bhfreastalaí poppet a bhfuil do mhodúl imlonnaithe ann. Mar sin, sa script, bí cúramach a sheiceáil go bhfuil na cláir agus na comhaid go léir is gá chun go n-oibreoidh tú ag an gcóras.

#!/bin/sh
echo "testfact=success"
#!/bin/sh
echo '{"testyamlfact":"success"}'

Fíricí Ruby

Cuirtear fíricí mar seo i modúil san eolaire 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

Fíricí téacs

Cuirtear fíricí mar seo ar nóid san eolaire /etc/facter/facts.d i sean-Puipéad nó /etc/puppetlabs/facts.d sa Phuipéad nua.

examplefact=examplevalue
---
examplefact2: examplevalue2
anotherfact: anothervalue

Dul chuig na Fíricí

Tá dhá bhealach ann chun dul i ngleic leis na fíricí:

  • tríd an bhfoclóir $facts: $facts['fqdn'];
  • ag baint úsáide as an fhíorainm mar ainm athróg: $fqdn.

Is fearr foclóir a úsáid $facts, nó níos fearr fós, léirigh an t-ainmspás domhanda ($::facts).

Seo an chuid ábhartha den doiciméadú.

Athróga Insuite

Chomh maith leis na fíricí, tá freisin roinnt athróg, ar fáil san ainmspás domhanda.

  • fíricí iontaofa — athróga a thógtar ó dheimhniú an chliaint (ós rud é go n-eisítear an deimhniú ar fhreastalaí poppet de ghnáth, ní féidir leis an ngníomhaire a dheimhniú a ghlacadh agus a athrú, agus mar sin tá na hathróga "muiníneach"): ainm an deimhnithe, ainm an óstach agus fearann, síntí ón deimhniú.
  • fíricí freastalaí —athróga a bhaineann le faisnéis faoin bhfreastalaí - leagan, ainm, seoladh IP an fhreastalaí, timpeallacht.
  • fíricí gníomhaire — athróga arna gcur isteach go díreach ag gníomhaire puipéad, agus ní trí fhíorasc — ainm an deimhnithe, leagan an ghníomhaire, leagan puipéad.
  • athróga máistir - Athróga Pappetmaster (sic!). Tá sé thart ar an gcéanna i fíricí freastalaí, móide luachanna paraiméadar cumraíochta ar fáil.
  • athróga tiomsaitheoir — athróga tiomsaitheora atá éagsúil i ngach raon feidhme: ainm an mhodúil reatha agus ainm an mhodúil ina bhfuarthas rochtain ar an réad reatha. Is féidir iad a úsáid, mar shampla, chun a sheiceáil nach bhfuil do ranganna príobháideacha á n-úsáid go díreach ó mhodúil eile.

Aguisín 1: conas é seo go léir a rith agus a dhífhabhtú?

Bhí go leor samplaí de chód puipéad san alt, ach níor inis sé dúinn ar chor ar bith conas an cód seo a rith. Bhuel, tá mé ag ceartú mé féin.

Is leor gníomhaire chun Puipéad a rith, ach i bhformhór na gcásanna beidh freastalaí ag teastáil uait freisin.

Gníomhaire

Ar a laghad ó leagan 5, pacáistí gníomhaire puipéad ó stór oifigiúil Pupetlabs go bhfuil na spleáchais go léir (ruby agus na GEMS comhfhreagracha), agus mar sin níl aon deacrachtaí suiteála ann (táim ag caint faoi dháiltí bunaithe ar Debian - ní úsáidimid dáiltí bunaithe ar RPM).

Sa chás is simplí, chun an chumraíocht puipéad a úsáid, is leor an gníomhaire a sheoladh i mód gan freastalaí: ar choinníoll go ndéantar an cód puipéad a chóipeáil chuig an nód, seoladh 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

Tá sé níos fearr, ar ndóigh, an freastalaí a shocrú agus gníomhairí a rith ar na nóid i mód deamhan - ansin uair amháin gach leath uair an chloig cuirfidh siad an chumraíocht a íoslódáil ón bhfreastalaí i bhfeidhm.

Is féidir leat aithris a dhéanamh ar mhúnla an bhrú oibre - téigh go dtí an nód a bhfuil suim agat agus tosaigh sudo puppet agent -t. eochair -t (--test) folaíonn sé i ndáiríre roinnt roghanna is féidir a chumasú ina n-aonar. Áirítear na roghanna seo a leanas:

  • ná rith i mód deamhan (de réir réamhshocraithe tosaíonn an gníomhaire i mód deamhan);
  • stoptar tar éis an catalóg a chur i bhfeidhm (de réir réamhshocraithe, leanfaidh an gníomhaire ag obair agus cuirfidh sé an chumraíocht i bhfeidhm uair amháin gach leath uair an chloig);
  • loga oibre mionsonraithe a scríobh;
  • athruithe i gcomhaid a thaispeáint.

Tá modh oibriúcháin ag an ngníomhaire gan athruithe - is féidir leat é a úsáid nuair nach bhfuil tú cinnte go bhfuil an chumraíocht cheart scríofa agat agus gur mhaith leat a sheiceáil cad go díreach a athróidh an gníomhaire le linn oibriú. Tá an mód seo cumasaithe ag an bparaiméadar --noop ar an líne ordaithe: sudo puppet agent -t --noop.

Ina theannta sin, is féidir leat logáil dífhabhtaithe na hoibre a chumasú - ann, scríobhann puipéad faoi na gníomhartha go léir a dhéanann sé: faoin acmhainn atá á phróiseáil aige faoi láthair, faoi pharaiméadair na hacmhainne seo, faoi na cláir a sheolann sé. Ar ndóigh is paraiméadar é seo --debug.

Freastalaí

Ní bhreithneoidh mé socrú iomlán an fhreastalaí pappet agus imscaradh cód dó san Airteagal seo; ní dhéarfaidh mé ach go bhfuil leagan lánfheidhmiúil den fhreastalaí nach bhfuil gá le cumraíocht bhreise chun oibriú le líon beag díobh. nóid (abair, suas le céad). Beidh gá le tiúnadh le haghaidh líon níos mó nóid - de réir réamhshocraithe, seolann puipéad freastalaí nach mó ná ceithre oibrí, le haghaidh feidhmíochta níos fearr is gá duit a n-uimhir a mhéadú agus ná déan dearmad na teorainneacha cuimhne a mhéadú, ar shlí eile baileoidh an freastalaí truflais an chuid is mó den am.

Imscaradh cód - má theastaíonn sé uait go tapa agus go héasca, féach ansin (ar r10k)[https://github.com/puppetlabs/r10k], le haghaidh suiteálacha beaga ba chóir go mbeadh sé sách go leor.

Aguisín 2: Treoirlínte um Chódú

  1. Cuir an loighic ar fad i ranganna agus i sainmhínithe.
  2. Coinnigh ranganna agus sainmhínithe i modúil, ní i manifests a chuireann síos ar nóid.
  3. Bain úsáid as na fíricí.
  4. Ná déan ifs bunaithe ar óstainmneacha.
  5. Ná bíodh drogall ort paraiméadair do ranganna agus sainmhínithe a chur leis - is fearr é seo ná an loighic intuigthe atá i bhfolach i gcorp an ranga/sainmhínithe.

Míneoidh mé cén fáth a molaim é seo a dhéanamh sa chéad alt eile.

Conclúid

Críochnaímis leis an réamhrá. Sa chéad alt eile inseoidh mé duit faoi Hiera, ENC agus PuppetDB.

Ní féidir ach le húsáideoirí cláraithe páirt a ghlacadh sa suirbhé. Sínigh isteach, le do thoil.

Go deimhin, tá i bhfad níos mó ábhar ann - is féidir liom ailt a scríobh ar na hábhair seo a leanas, vótáil ar na rudaí a mbeadh suim agat a léamh faoi:

  • 59,1%Tógálacha puipéad chun cinn - roinnt cac den chéad leibhéal eile: lúba, mapáil agus abairtí lambda eile, bailitheoirí acmhainní, acmhainní easpórtáilte agus cumarsáid idir-óstach trí Puipéad, clibeanna, soláthraithe, cineálacha sonraí teibí.13
  • 31,8%“Is mise riarthóir mo mháthar” nó mar a rinne muidne in Avito cairdeas le roinnt freastalaithe poppet de leaganacha éagsúla, agus, i bprionsabal, an chuid faoi riar an fhreastalaí poppet.7
  • 81,8%Conas a scríobhaimid cód puipéad: ionstraimíocht, doiciméadú, tástáil, CI/CD.18

Vótáil 22 úsáideoir. Staon 9 úsáideoir.

Foinse: will.com