He Kupu Whakataki mo te Puppet

Ko te karetao he punaha whakahaere whirihoranga. Ka whakamahia hei kawe i nga kaihautu ki te ahua e hiahiatia ana me te pupuri i tenei ahuatanga.

Neke atu i te rima tau ahau e mahi ana me te Puppet inaianei. Ko tenei tuhinga he whakahiatotanga kua whakamaoritia me te whakariterite ano i nga kaupapa matua mai i nga tuhinga whaimana, e taea ai e te hunga timata te mohio tere ki te mauri o te Karetao.

He Kupu Whakataki mo te Puppet

Nga korero tuuturu

Ko te punaha whakahaere a Puppet he kaihoko-tūmau, ahakoa e tautoko ana i te mahi kore-tumau me te iti o te mahi.

Ka whakamahia he tauira kume: ma te taunoa, kotahi ia hawhe haora, ka whakapa atu nga kaihoko ki te tūmau mo te whirihoranga me te whakamahi. Mena kua mahi koe me Ansible, ka whakamahia e raatau he tauira pana rereke: ka timata te kaiwhakahaere ki te tono i te whirihoranga, kaore nga kaihoko e tono i tetahi mea.

I te wa o te whakawhitiwhiti korero whatunga, ka whakamahia te whakamunatanga TLS e rua-ara: kei te kaimau me te kiritaki o raatau ake kii motuhake me o raatau tiwhikete. Ko te tikanga ka tukuna e te tūmau nga tiwhikete mo nga kaihoko, engari ko te tikanga ka taea te whakamahi i te CA o waho.

He kupu whakataki ki nga whakaaturanga

In Puppet terms ki te tūmau karetao hono kōpuku (nodes). Kua tuhia te whirihoranga mo nga pona i roto i nga whakaaturanga i roto i te reo hotaka motuhake - Puppet DSL.

Ko te Puppet DSL he reo whakapuaki. Ka whakaahuahia te ahua o te node i roto i te ahua o nga whakapuakanga o nga rauemi takitahi, hei tauira:

  • Kei te noho te konae, kei a ia ano nga ihirangi motuhake.
  • Kua tāutahia te mōkihi.
  • Kua timata te mahi.

Ka taea te hono nga rauemi:

  • He herenga, ka pa ki te raupapa e whakamahia ai nga rauemi.
    Hei tauira, "tuatahi te whakauru i te kete, ka whakatika i te konae whirihoranga, katahi ka tiimata te ratonga."
  • He whakamohiotanga - mena kua rereke tetahi rauemi, ka tukuna he panui ki nga rauemi kua ohauru ki a ia.
    Hei tauira, ki te huri te konae whirihoranga, ka taea e koe te whakaara aunoa i te ratonga.

I tua atu, he mahi me nga taurangi te Puppet DSL, tae atu ki nga korero here me nga kaiwhiriwhiri. Ka tautokona ano nga momo momo tauira - EPP me ERB.

Kua tuhia te karetao ki Ruby, no reira he maha nga hanga me nga kupu i tangohia mai i reira. Ka taea e Ruby te whakawhānui ake i te Karetao - te taapiri i te arorau matatini, nga momo rauemi hou, nga mahi.

I te wa e rere ana te Puppet, ka whakahiatohia nga whakaaturanga mo ia node motuhake i runga i te tūmau ki roto i te whaiaronga. Whaiaronga he rarangi rauemi me o raatau hononga i muri i te tatau i te uara o nga mahi, taurangi me te roha o nga tauākī herenga.

Wetereo me te momo waehere

Anei nga waahanga o nga tuhinga whaimana hei awhina i a koe ki te mohio ki te wetereo mena kaore i te rawaka nga tauira e whakaratohia ana:

Anei tetahi tauira o te ahua o te whakaaturanga:

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

Ko te nuku me nga wehenga raina ehara i te waahanga e hiahiatia ana o te whakaaturanga, engari he tohutohu aratohu kāhua. Whakarāpopototanga:

  • Ko nga nuku mokowā-rua, kaore e whakamahia nga ripa.
  • Ka wehea nga taiapa weriweri e te mokowā;
  • Ko nga piko i muri i ia tawhā, tae atu ki te mea whakamutunga. Ko ia tawhā kei runga i te raina motuhake. He rereke mo te keehi kaore he tawhā me tetahi tawhā: ka taea e koe te tuhi ki runga i te raina kotahi me te kore he piko (arā. resource { 'title': } и resource { 'title': param => value }).
  • Ko nga pere i runga i nga tawhā kia rite te taumata.
  • Kua tuhia nga pere hononga rauemi ki mua i a raatau.

Te waahi o nga konae kei runga i te pappetserver

Mo etahi atu whakamaramatanga, ka whakauruhia e ahau te kaupapa o te "whaiaronga pakiaka". Ko te whaiaronga pakiaka te whaiaronga kei roto te whirihoranga Puppet mo tetahi node.

Ko te whaiaronga pakiaka ka rereke i runga i te putanga o te Puppet me nga taiao e whakamahia ana. Ko nga taiao he huinga motuhake o te whirihoranga ka penapena ki roto i nga raarangi motuhake. I te nuinga o te wa ka whakamahia tahi me te git, ka hangaia nga taiao mai i nga manga git. I runga i tenei, ka noho ia node ki tetahi taiao, ki tetahi atu. Ka taea te whirihora i tenei i runga i te node ake, i te ENC ranei, ka korerohia e au i roto i te tuhinga e whai ake nei.

  • I te putanga tuatoru ("Karetao tawhito") ko te whaiaronga turanga /etc/puppet. Ko te whakamahi i nga taiao he mea whiriwhiri - hei tauira, kaore matou e whakamahi me te Puppet tawhito. Mena ka whakamahia nga taiao, ka penapenahia ki roto /etc/puppet/environments, ko te whaiaronga pakiaka te whaiaronga taiao. Ki te kore e whakamahia nga taiao, ko te whaiaronga pakiaka te whaiaronga turanga.
  • Mai i te putanga tuawha ("Karetao hou"), ka whakamanahia te whakamahi i nga taiao, ka nukuhia te whaiaronga turanga ki /etc/puppetlabs/code. Na reira, ka penapena nga taiao ki roto /etc/puppetlabs/code/environments, ko te whaiaronga pakiaka te whaiaronga taiao.

Me noho he whaiarongaroto kei roto i te whaiaronga pakiaka manifests, kei roto kotahi, neke atu ranei nga whakaaturanga e whakaatu ana i nga pona. I tua atu, me waiho he raarangi-roto modules, kei roto nga kōwae. Ka korero ahau ki a koe he aha nga waahanga i muri tata nei. I tua atu, tera pea kei te Puppet tawhito he raarangiroto files, kei roto nga momo konae ka kapea ki nga pona. I roto i te Puppet hou, ka whakauruhia nga konae katoa ki nga waahanga.

Ko nga kōnae Manifest te toronga .pp.

He tokorua nga tauira whawhai

Whakaahuatanga o te node me te rauemi kei runga

I runga i te node server1.testdomain me hanga he kōnae /etc/issue me te ihirangi Debian GNU/Linux n l. Me riro te kōnae i te kaiwhakamahi me te roopu root, me whai mana uru 644.

Ka tuhia e matou he whakaaturanga:

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

Te hononga i waenga i nga rauemi i runga i te node

I runga i te node server2.testdomain me rere te nginx, me te mahi me te whirihoranga kua oti te whakarite.

Me tihorea te raruraru:

  • Me tāuta te mōkihi nginx.
  • He mea tika kia kape nga konae whirihoranga mai i te tūmau.
  • Me whakahaere te ratonga nginx.
  • Mena kua whakahoutia te whirihoranga, me whakaara ano te ratonga.

Ka tuhia e matou he whakaaturanga:

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 tenei mahi, me tata ki te waahi konae e whai ake nei i runga i te tūmau karetao:

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

Momo Rauemi

Ka kitea he rarangi katoa o nga momo rauemi tautoko i konei i roto i nga tuhinga, i konei ka whakaahua ahau i nga momo taketake e rima, i roto i aku mahi e ranea ana hei whakaoti rapanga.

kōnae

Ka whakahaere i nga konae, i nga whaiaronga, i nga hononga tohu, i o raatau ihirangi, me nga mana uru.

Parama:

  • ingoa rauemi — ara ki te konae (he kowhiri)
  • ara — ara ki te konae (mehemea karekau i tohua ki te ingoa)
  • whakarite - momo kōnae:
    • absent - mukua he konae
    • present — me noho he konae ahakoa he aha te momo (mehemea karekau he konae, ka hangaia he konae rite tonu)
    • file - kōnae auau
    • directory - whaiaronga
    • link - hononga tohu
  • ihirangi — nga ihirangi o nga konae (he pai mo nga konae noa, kaore e taea te whakamahi tahi me pūtake ranei ūnga)
  • pūtake — he hononga ki te ara e hiahia ana koe ki te kape i nga ihirangi o te konae (kaore e taea te whakamahi tahi me ihirangi ranei ūnga). Ka taea te tohu hei URI me tetahi kaupapa puppet: (Katahi ka whakamahia nga konae mai i te karetao tūmau), me te kaupapa http: (Te ti'aturi nei au e marama ana nga mea ka puta i tenei keehi), a tae noa ki te hoahoa file: hei ara tino kore ranei he aronuinga (katahi ka whakamahia te konae mai i te FS o te rohe kei runga i te node)
  • ūnga — kei hea te tohu tohu tohu (kaore e taea te whakamahi tahi me ihirangi ranei pūtake)
  • rangatira — te kaiwhakamahi nana te konae
  • rōpū — te roopu e tika ana te konae
  • aratau - whakaaetanga kōnae (hei aho)
  • whakahou - ka taea te tukatuka whaiaronga recursive
  • horoi - ka taea te whakakore i nga konae kaore i te whakaahuatia i te Puppet
  • kaha - ka taea te whakakore i nga whaiaronga kaore i te whakaahuatia i te Puppet

mōkihi

Ka tāuta me te tango pōkai. Ka taea ki te hapai i nga whakamohiotanga - ka whakauru ano i te kete mena kua tohua te tawhā reinstall_on_refresh.

Parama:

  • ingoa rauemi — ingoa mōkihi (kōwhiringa)
  • ingoa — ingoa mōkihi (mehemea karekau i tohua ki te ingoa)
  • kaiwhakarato — kaiwhakahaere mōkihi ki te whakamahi
  • whakarite — te ahua o te kete e hiahiatia ana:
    • present, installed - tetahi putanga kua whakauruhia
    • latest - te putanga hou kua whakauruhia
    • absent - kua mukua (apt-get remove)
    • purged — kua mukua me nga konae whirihoranga (apt-get purge)
    • held - kua maukati te putanga kete (apt-mark hold)
    • любая другая строка — kua whakauruhia te putanga kua tohua
  • reinstall_on_refresh - mena true, ka tae mai te panui ka whakauruhia ano te kete. He pai mo nga tohatoha-a-puna, kei te hiahiatia nga kohinga hangahanga ina huri i nga tawhā hanga. Taunoa false.

ratonga

Whakahaere ratonga. Ka taea te tukatuka whakamohiotanga - ka whakaara ano i te ratonga.

Parama:

  • ingoa rauemi — kia whakahaeretia te ratonga (he kowhiri)
  • ingoa — te ratonga e tika ana kia whakahaerea (mehemea karekau i tohua ki te ingoa)
  • whakarite — te ahua o te ratonga e hiahiatia ana:
    • running - whakarewahia
    • stopped - mutu
  • taea — ka whakahaere i te kaha ki te timata i te ratonga:
    • true — kua whakahohea te autorun (systemctl enable)
    • mask - huna (systemctl mask)
    • false — kua monoa te autorun (systemctl disable)
  • tīmata - whakahau kia timata ano te ratonga
  • tūnga — whakahau kia tirohia te mana o te ratonga
  • kua tīmata anō — tohu mena kei te tautoko te tuhinga wera o te ratonga ki te whakaara ano. Mehemea false ka tohua te tawhā tīmata — ka whakamahia te uara o tenei tawhā. Mehemea false me te tawhā tīmata kaore i tohua - ka mutu te ratonga ka timata ki te whakaara ano (engari ka whakamahia e te systemd te whakahau systemctl restart).
  • whai mana — tohuhia mena kei te tautoko te tuhinga wera i te whakahau status. Mena false, ka whakamahia te uara tawhā tūnga. Taunoa true.

exec

Ka whakahaere i nga whakahau o waho. Ki te kore koe e tauwhāiti i ngā tawhā hanga, mena anake, ki te kore ranei whakamahana noa, ka whakahaeretia te whakahau i nga wa katoa e whakahaerea ana te Puppet. Ka taea te tukatuka whakamohiotanga - ka whakahaere he whakahau.

Parama:

  • ingoa rauemi — kia mahia te whakahau (he kowhiri)
  • whakahau — te whakahau kia mahia (mehemea karekau i tohua ki te ingoa)
  • ara — nga ara hei rapu i te konae ka taea te whakahaere
  • mena anake — ki te oti te whakahau i tohua i tenei tawhā me te waehere kore whakahoki, ka mahia te whakahau matua
  • ki te kore — ki te oti te whakahau kua tohua ki tenei tawhā me te waehere whakahoki kore-kore, ka mahia te whakahau matua
  • hanga — ki te kore te konae kua tohua ki tenei tawhā, ka mahia te whakahau matua
  • whakamahana noa - mena true, katahi ka whakahaerea te whakahau ina tae mai te panuitanga mai i etahi atu rauemi
  • cwd — whaiaronga hei whakahaere i te whakahau
  • kaiwhakamahi — ko te kaiwhakamahi hei whakahaere i te whakahau
  • kaiwhakarato - me pehea te whakahaere i te whakahau:
    • posix — he mea hanga noa he tukanga tamaiti, kia mohio koe ki te tohu ara
    • anga - ka whakarewahia te whakahau i roto i te anga /bin/sh, kaore pea e tohua ara, ka taea e koe te whakamahi globbing, paipa me etahi atu ahuatanga anga. Ko te tikanga ka kitea aunoa mena he tohu motuhake (|, ;, &&, || etc).

cron

Whakahaere cronjobs.

Parama:

  • ingoa rauemi - he momo tautohu noa
  • whakarite — te ahua o te karauna:
    • present - hanga mena karekau
    • absent - muku mena kei te noho
  • whakahau - he aha te whakahau hei whakahaere
  • taiao — kei hea te taiao hei whakahaere i te whakahau (rarangi o nga taurangi taiao me o raatau uara ma =)
  • kaiwhakamahi — mai i te kaiwhakamahi hei whakahaere i te whakahau
  • meneti, haora, rāwiki, marama, marama — te wa ki te whakahaere cron. Ki te kore tetahi o enei huanga i tohua, ko tona uara kei roto i te crontab *.

Kei te Puppet 6.0 cron me te mea tangohia mai i te pouaka i roto i te puppetserver, na reira kaore he tuhinga i runga i te pae whanui. Engari ko ia kei roto i te pouaka i roto i te karetao-agent, no reira kaore he take ki te whakauru motuhake. Ka taea e koe te kite i nga tuhinga mo tena i roto i nga tuhinga mo te putanga tuarima o te Puppet, ranei i runga i GitHub.

Mō ngā rauemi whānui

Nga whakaritenga mo te ahurei rawa

Ko te hapa tino noa e pa ana ki a tatou Whakapuakanga taarua. Ka puta tenei hapa ina puta nga rauemi e rua, neke atu ranei o te momo kotahi me te ingoa kotahi i roto i te whaiaronga.

No reira, ka tuhi ano ahau: Ko nga whakaaturanga mo te node kotahi kaua e uru ki nga rauemi o te momo rite me te taitara kotahi!

I etahi wa ka hiahia ki te whakauru i nga kohinga me te ingoa kotahi, engari me nga kaiwhakahaere putea rereke. I tenei keehi, me whakamahi koe i te tawhā nameki te karo i te hapa:

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

He rite nga whiringa mo etahi atu momo rauemi hei karo i te taarua − name у ratonga, command у exec, me etahi atu.

Ngā tawhā meta

Kei ia momo rauemi etahi tawhā motuhake, ahakoa te ahua.

Rarangi katoa o nga tawhā meta i roto i nga tuhinga Puppet.

Rārangi poto:

  • hiahia — ko tenei tawhā e tohu ana ko wai nga rauemi e whakawhirinaki ana tenei rauemi.
  • i mua i - Ko tenei tawhā ka whakapūtā ko ēhea ngā rauemi e whakawhirinaki ana ki tēnei rauemi.
  • ohauru — ko tenei tawhā e tohu mai i nga rauemi ka whiwhi whakamohiotanga tenei rauemi.
  • whakamōhio — Ko tenei tawhā e tohu ana ko nga rauemi ka whiwhi whakamohiotanga mai i tenei rauemi.

Ka whakaaetia e nga taapapa meta kua whakarārangihia he hononga rauemi kotahi, he huinga hononga ranei kei roto i nga taiapa tapawha.

Nga hononga ki nga rauemi

Ko te hononga rauemi he korero noa mo te rauemi. Ka whakamahia te nuinga hei tohu i nga whakawhirinakitanga. Ko te tohutoro i te rauemi kore-kore ka puta he hapa whakahiato.

Ko te wetereo o te hononga e whai ake nei: momo rauemi me te reta matua (mehemea kei roto i te ingoa momo nga kopirua, katahi ka tuhia ia wahanga o te ingoa i waenga i nga kopirua), katahi ko te ingoa rauemi kei roto i nga taiapa tapawha (te take o te ingoa e kore e huri!). Kaua he mokowā; ka tuhia nga taiapa tapawha i muri tonu i te ingoa momo.

Hei tauira:

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

Te whakawhirinaki me te whakamohiotanga

Nga tuhinga kei konei.

Ka rite ki te korero i mua ake nei, ko nga whakawhirinakitanga ngawari i waenga i nga rauemi he whakawhiti. Ma te ara, kia tupato ki te taapiri i nga taapiri - ka taea e koe te hanga i nga whakawhirinakitanga hurihanga, ka puta he hapa whakahiato.

Kaore i rite ki nga whakawhirinakitanga, ehara nga whakamohiotanga i te whakawhiti. Ko nga ture e whai ake nei e pa ana mo nga panui:

  • Mena ka whiwhi panui te rauemi, ka whakahouhia. Ko nga mahi whakahou ka whakawhirinaki ki te momo rauemi − exec ka whakahaere i te whakahau, ratonga ka whakaara ano i te ratonga, mōkihi ka tāuta anō i te mōkihi. Mena karekau he mahi whakahou i te rauemi, karekau he mea ka puta.
  • I te wa kotahi o te Karetao, ka whakahouhia te rauemi kaua e neke atu i te kotahi. Ka taea tenei na te mea kei roto i nga whakamohiotanga nga whakawhirinakitanga me te kauwhata whakawhirinaki kaore he huringa.
  • Mena ka huri a Puppet i te ahua o tetahi rauemi, ka tukuna e te rauemi he whakamohiotanga ki nga rauemi katoa kua ohauru ki a ia.
  • Ki te whakahōuhia he rauemi, ka tuku whakamohiotanga ki nga rauemi katoa kua ohauru ki a ia.

Te whakahaere i nga tawhā kaore i tohua

Hei tikanga, mena karekau he uara taunoa o etahi tawhā rauemi, karekau hoki tenei tawhā i tohua ki te whakaaturanga, karekau a Puppet e huri i tenei taonga mo te rauemi e rite ana ki te node. Hei tauira, mena he momo rauemi kōnae tawhā kāore i tohua owner, ka kore te Puppet e huri i te rangatira o te konae e rite ana.

He kupu whakataki ki nga karaehe, taurangi me nga whakamaramatanga

Mehemea he maha nga pona he rite tonu te waahanga o te whirihoranga, engari he rereke ano - mena ka taea te whakaahua katoa ki te poraka kotahi node {}. Ae ra, ka taea e koe te kape noa i nga waahanga rite o te whirihoranga, engari i te nuinga o te waa he otinga kino tenei - ka tipu te whirihoranga, a ki te huri koe i te waahanga whanui o te whirihoranga, me whakatika e koe te mea ano i nga waahi maha. I te wa ano, he mea ngawari ki te pohehe, a, i te nuinga o te waa, i hangaia te kaupapa DRY (kaua e tukurua) mo tetahi take.

Hei whakaoti i tenei raru he hoahoa penei te piha haapiiraa.

Karaehe

Класс he poraka ingoa o te waehere poppet. Ka hiahiatia nga karaehe hei whakamahi ano i te waehere.

Tuatahi me whakaahua te akomanga. Ko te whakaahuatanga ake kaore e taapiri i nga rauemi ki hea. Ka whakaatuhia te akomanga ki nga whakaaturanga:

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

I muri i tenei ka taea te whakamahi i te akomanga:

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

He tauira mai i te mahi o mua - me nukuhia te whakaurunga me te whirihoranga o nginx ki roto i te karaehe:

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
}

Ngā rerekētanga

Ko te karaehe mai i te tauira o mua kaore i te ngawari na te mea he rite tonu te whirihoranga nginx. Me hanga te ara ki te taurangi whirihoranga, katahi ka taea te whakamahi i tenei akomanga ki te whakauru i te nginx me tetahi whirihoranga.

Ka taea te mahi te whakamahi taurangi.

Kia mahara: ko nga taurangi kei roto i te Puppet e kore e huri!

I tua atu, ka taea anake te uru atu ki tetahi taurangi i muri i te whakapuakitanga, ki te kore ko te uara o te taurangi undef.

He tauira o te mahi me nga taurangi:

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

Puppet has mokowā ingoa, me nga taurangi, na reira, he wāhi kitea: Ko te taurangi he rite te ingoa ka taea te tautuhi ki nga mokowāingoa rereke. I te whakatau i te uara o te taurangi, ka rapua te taurangi ki te mokowāingoa o nāianei, kātahi ki te mokowāingoa āpiti, me te aha.

Nga tauira mokowāingoa:

  • ao - ka haere nga taurangi kei waho o te karaehe, te whakaahuatanga node ranei;
  • mokowāingoa kōpuku i te whakaahuatanga kōpuku;
  • mokowāingoa akomanga i te whakaahuatanga o te akomanga.

Hei karo i te rangirua ina uru ki tetahi taurangi, ka taea e koe te tohu mokowāingoa ki te ingoa taurangi:

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

Kia whakaae tatou ko te ara ki te whirihoranga nginx kei roto i te taurangi $nginx_conf_source. Na ka penei te ahua o te akomanga:

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
}

Heoi, he kino te tauira na te mea he "mohio huna" kei roto i te akomanga ka whakamahia he taurangi penei me te ingoa pera. He tika ake te whakawhanui i tenei matauranga - ka taea e nga karaehe nga tawhā.

Tawhā karaehe he taurangi kei roto i te mokowāingoa akomanga, kua tohua ki te pane o te karaehe ka taea te whakamahi penei i nga taurangi auau i te tinana o te akomanga. Ka tohua nga uara tawhā ina whakamahi ana i te karaehe i roto i te whakaaturanga.

Ka taea te tautuhi i te tawhā ki te uara taunoa. Mena karekau he uara taunoa o te tawhā, karekau hoki te uara i whakaritea ina whakamahia, ka puta he hapa whakahiato.

Me whakarite te karaehe mai i te tauira i runga ake nei ka taapirihia nga taapiri e rua: ko te tuatahi, e hiahiatia ana, ko te huarahi ki te whirihoranga, ko te tuarua, ko te kowhiringa, ko te ingoa o te kete me te nginx (i Debian, hei tauira, he kete 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 roto i te Puppet, ka patohia nga taurangi. Kai maha nga momo raraunga. Ko nga momo raraunga ka whakamahia hei whakamana i nga uara tawhā kua tukuna ki nga karaehe me nga whakamaramatanga. Ki te kore e taurite te tawhā kua paahitia ki te momo kua tohua, ka puta he hapa whakahiato.

Ka tuhia te momo i mua tonu i te ingoa tawhā:

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

Karaehe: whakauruhia te ingoa akomanga me te karaehe{'classname':}

Ko ia akomanga he momo rauemi piha haapiiraa. Pērā i ētahi atu momo rauemi, kāore e rua ngā tauira o te karaehe kotahi i runga i te kōpuku kotahi.

Mena ka ngana koe ki te taapiri i tetahi karaehe ki te node kotahi e rua te whakamahi class { 'classname':} (kare he rereke, he rereke, he rite nga tawhā), ka puta he hapa whakahiato. Engari ki te whakamahi koe i tetahi karaehe i roto i te momo rauemi, ka taea e koe te tautuhi i ona tawhā katoa ki te whakaaturanga.

Heoi, ki te whakamahi koe include, katahi ka taea te taapiri i te karaehe kia maha nga wa e hiahiatia ana. Ko te meka ko tera include he mahi idempotent e taki ana mena kua taapirihia he akomanga ki te whaiaronga. Mena karekau te karaehe i roto i te raarangi, ka taapirihia, mena kei te noho tonu, kaore he mahi. Engari ki te whakamahi include Kaore e taea e koe te whakarite tawhā karaehe i te wa whakapuakanga o te karaehe - me whakatakoto nga tawhā e hiahiatia ana ki tetahi puna raraunga o waho - Hiera, ENC ranei. Ka korero tatou mo ratou i roto i te tuhinga ka whai ake.

Ka tautuhi

Ka rite ki te korero i roto i te poraka o mua, kaore e taea e te karaehe kotahi te noho ki runga i te node neke atu i te kotahi. Heoi, i etahi wa me kaha koe ki te whakamahi i te poraka kotahi o te waehere me nga tawhā rereke i runga i te node kotahi. Arā, he hiahia mō tētahi momo rauemi mōna ake.

Hei tauira, hei whakauru i te waahanga PHP, ka mahia e matou nga mea e whai ake nei i Avito:

  1. Tāutahia te mōkihi me tēnei kōwae.
  2. Me hanga he kōnae whirihoranga mo tenei kōwae.
  3. Ka hangaia e matou he hononga hono ki te whirihora mo php-fpm.
  4. Ka hangaia e matou he symlink ki te whirihora mo te php cli.

I enei ahuatanga, he hoahoa penei tautuhi (tautuhia, momo tautuhi, momo rauemi kua tautuhia). He rite te Define ki te akomanga, engari he rereke: tuatahi, he momo rauemi ia Define, ehara i te rauemi; tuarua, kei ia whakamaramatanga he tawhā whai kiko $title, ka haere te ingoa rauemi ina whakapuakina. Ka rite ki nga karaehe, me whakamaarama i te tuatahi, katahi ka taea te whakamahi.

He tauira ngawari me tetahi waahanga 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' }
}

Ko te huarahi ngawari ki te hopu i te Hapa Whakapuakanga Taarua kei roto i te Define. Ka tupu tenei ki te mea he rauemi to te whakamaramatanga me te ingoa tonu, a e rua, neke atu ranei nga waahi o tenei whakamaramatanga i runga i etahi node.

He ngawari te tiaki i a koe mai i tenei: me whai ingoa nga rauemi katoa kei roto i te whakamaramatanga $title. Ko tetahi atu ko te taapiri i nga rauemi; i roto i te waa ngawari, he nui noa te neke i nga rauemi noa ki nga ahuatanga katoa o te whakamaramatanga ki roto i tetahi akomanga motuhake me te whakauru i tenei akomanga ki te whakamaramatanga - mahi. include manahau.

He huarahi kee hei whakatutuki i te ngoikoretanga ina taapiri rauemi, ara te whakamahi i nga mahi defined и ensure_resources, engari ka korerotia e ahau ki a koe i te waahanga e whai ake nei.

Te whakawhirinaki me te whakamohiotanga mo nga karaehe me nga whakamaramatanga

Ka taapirihia e nga karaehe me nga whakamaramatanga nga ture e whai ake nei ki te whakahaere i nga whakawhirinakitanga me nga whakamohiotanga:

  • te ti'aturi i runga i te karaehe/whakaahua ka taapiri i nga whakawhirinakitanga ki nga rauemi katoa o te akomanga/whakaahua;
  • he karaehe/tautuhia te ti'aturi ka taapiri i nga ti'aturi ki te akomanga katoa/tautuhia nga rauemi;
  • Ka whakamohiohia e te akomanga/tautuhia nga rauemi katoa o te akomanga/whakaahua;
  • ka ohauru te akomanga/whakaahua ki nga rauemi katoa o te karaehe/whakaahua.

Tauākī here me ngā kaikōwhiri

Nga tuhinga kei konei.

if

He mea ngawari ki konei:

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

ki te kore

ki te mea he whakamuri: ka mahia te poraka o te waehere ki te he te korero.

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

take

Karekau he mea uaua i konei. Ka taea e koe te whakamahi i nga uara auau (nga aho, nga nama, me etahi atu), nga korero auau, me nga momo raraunga hei uara.

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

Kaiwhiriwhiri

Ko te kaikowhiri he hanga reo rite ki case, engari hei utu mo te mahi poraka waehere, ka whakahokia he uara.

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

Ngā kōwae

Ina he iti te whirihoranga, ka ngawari te pupuri i roto i te whakaaturanga kotahi. Engari ko te nui ake o nga whirihoranga ka whakaahuahia e matou, ka nui ake nga karaehe me nga pona kei roto i te whakaaturanga, ka tipu haere, ka raru te mahi.

I tua atu, he raruraru o te whakamahi ano i te waehere - ka noho nga waehere katoa i roto i te whakaaturanga kotahi, he uaua ki te tiri i tenei waehere ki etahi atu. Hei whakaoti i enei rapanga e rua, he hinonga a Puppet e kiia nei ko modules.

Ngā kōwae - he huinga karaehe enei, he whakamaramatanga me etahi atu hinonga Puppet kua tuu ki roto i te raarangi motuhake. Arā, ko te kōwae he wāhanga motuhake o te arorau Puppet. Hei tauira, tera pea he waahanga mo te mahi me te nginx, kei roto ko nga mea me nga mea anake e hiahiatia ana hei mahi me te nginx, tera pea he waahanga mo te mahi me te PHP, me etahi atu.

Ka whakaputahia nga waahanga, ka tautokohia hoki nga whakawhirinakitanga o nga waahanga ki a raatau ano. He putunga tuwhera o nga waahanga - Puppet Forge.

I runga i te tūmau karetao, kei roto nga kōwae i roto i te rārangi-roto kōwae o te whaiaronga pakiaka. Kei roto i ia kōwae he kaupapa whaiaronga paerewa - whakaaturanga, konae, tauira, lib, aha atu.

Hanganga kōnae i roto i te kōwae

Kei roto pea i te putake o te kōwae nga whaiaronga e whai ake nei me nga ingoa whakamaarama:

  • manifests - kei roto nga whakaaturanga
  • files - kei roto nga konae
  • templates - kei roto nga tauira
  • lib — kei roto te waehere Ruby

Ehara tenei i te rarangi katoa o nga whaiaronga me nga konae, engari he nui mo tenei tuhinga mo tenei wa.

Nga ingoa o nga rauemi me nga ingoa o nga konae kei roto i te kōwae

Nga tuhinga kei konei.

Ko nga rauemi (akomanga, whakamaarama) i roto i tetahi kōwae e kore e taea te whakaingoatia ahakoa he pai ki a koe. I tua atu, he reta tika kei waenganui i te ingoa o tetahi rauemi me te ingoa o te konae ka rapua e te Puppet he whakaahuatanga mo taua rauemi. Mena ka takahia e koe nga ture whakaingoa, kare noa a Puppet e kite i te whakaahuatanga rauemi, ka puta he hapa whakahiato.

He ngawari nga ture:

  • Ko nga rauemi katoa kei roto i tetahi waahanga me noho ki te mokowāingoa kōwae. Mena ka karangahia te kōwae foo, me whakaingoatia nga rauemi katoa kei roto foo::<anything>, tika ranei foo.
  • Me noho te rauemi me te ingoa o te kōwae i roto i te kōnae init.pp.
  • Mo etahi atu rauemi, ko te kaupapa whakaingoa ingoa e whai ake nei:
    • ka makahia te tohumua me te ingoa kōwae
    • ka whakakapihia nga pourua rua, ki te mea he rītaha
    • ka taapirihia te toronga .pp

Ka whakaatu ahau me tetahi tauira. Me kī kei te tuhi kōwae ahau nginx. Kei roto nga rauemi e whai ake nei:

  • te piha haapiiraa nginx whakaahuatia i roto i te whakaaturanga init.pp;
  • te piha haapiiraa nginx::service whakaahuatia i roto i te whakaaturanga service.pp;
  • tautuhi nginx::server whakaahuatia i roto i te whakaaturanga server.pp;
  • tautuhi nginx::server::location whakaahuatia i roto i te whakaaturanga server/location.pp.

Tātauira

He pono kei te mohio koe he aha nga tauira; E kore ahau e whakaahua taipitopito i konei. Engari ka waiho noa e ahau hono ki Wikipedia.

Me pehea te whakamahi i nga tauira: Ka taea te whakawhānui ake i te tikanga o te tauira ma te whakamahi i tetahi mahi template, ka tukuna te ara ki te tauira. Mo nga momo rauemi kōnae whakamahia tahi me te tawhā content. Hei tauira, penei:

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

Tirohia te ara <modulename>/<filename> e tohu ana i te konae <rootdir>/modules/<modulename>/templates/<filename>.

Hei taapiri, he mahi ano to inline_template — ka whiwhi i te tuhinga tauira hei whakauru, kaua ko te ingoa konae.

I roto i nga tauira, ka taea e koe te whakamahi i nga taurangi Puppet katoa i roto i te whānuitanga o naianei.

Ka tautoko te karetao i nga tauira i roto i te whakatakotoranga ERB me te EPP:

He poto mo te ERB

Hanganga mana:

  • <%= ВЫРАЖЕНИЕ %> — whakauruhia te uara o te korero
  • <% ВЫРАЖЕНИЕ %> — tātaihia te wāriu o tētahi kīanga (kaore he whakauru). Ko nga korero here (mehemea) me nga koropiko (ia) ka haere ki konei.
  • <%# КОММЕНТАРИЙ %>

Ko nga korero i roto i te ERB ka tuhia ki te Ruby (Ko te ERB te Ruby Whakamau).

Hei uru ki nga taurangi mai i te whakaaturanga, me taapiri koe @ ki te ingoa taurangi. Hei tango i te wehenga raina ka puta i muri i te hanga mana, me whakamahi koe i te tohu kati -%>.

He tauira mo te whakamahi i te tauira

Me kii kei te tuhi au i tetahi waahanga hei whakahaere i te ZooKeeper. Ko te karaehe hei hanga i te whirihora he ahua penei:

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

Me te tauira e rite ana zoo.cfg.erb - Na:

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

Nga Meka me nga Taurangi Hanga-roto

I te nuinga o te wa ko te waahanga motuhake o te whirihoranga ka whakawhirinaki ki nga mea e tupu ana i tenei wa i runga i te node. Hei tauira, i runga i te ahua o te tukunga a Debian, me whakauru e koe tetahi, tetahi atu putanga o te kete. Ka taea e koe te aro turuki i enei mea katoa, me te tuhi ano i nga whakaaturanga mena ka huri nga pona. Engari ehara tenei i te huarahi tino nui; he pai ake te automation.

Hei tiki korero mo nga pona, he tikanga a Puppet e kiia ana ko te meka. Facts - he korero tenei mo te node, e waatea ana i roto i nga whakaaturanga i roto i te ahua o nga taurangi noa i te waahi ingoa o te ao. Hei tauira, te ingoa kaihautu, te putanga o te punaha whakahaere, te hoahoanga tukatuka, te rarangi o nga kaiwhakamahi, te rarangi o nga hononga whatunga me o raatau wahitau, me te maha atu. E waatea ana nga korero i roto i nga whakaaturanga me nga tauira hei taurangi auau.

He tauira mo te mahi me nga meka:

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

Ko te korero okawa, he ingoa (aho) me te uara o te meka (he maha nga momo e waatea ana: aho, rarangi, papakupu). Kai huinga o nga meka hanga-i roto. Ka taea hoki e koe te tuhi i a koe ake. Ka whakaahuahia nga kaikohi meka he rite nga mahi i Rubyahakoa rite kōnae kawe. Ka taea hoki te whakaatu i nga korero i roto i te puka kōnae kuputuhi me te raraunga i runga i nga pona.

I te wa e mahi ana, ka kape tuatahitia e te kaihoko karetao nga kaikohi meka katoa mai i te pappetserver ki te node, muri iho ka whakarewahia e ia ka tukuna atu nga meka kua kohia ki te tūmau; I muri i tenei, ka timata te tūmau ki te whakahiato i te putumōhio.

Meka i roto i te ahua o nga konae whakahaere

Ko enei korero ka tuuhia ki roto i nga waahanga o te raarangi facts.d. Ko te tikanga, me kawe nga konae. Ina rere ana, me whakaputa korero ki te putanga paerewa i roto i te whakatakotoranga YAML, matua ranei = uara.

Kaua e wareware e pa ana nga meka ki nga pona katoa e whakahaerea ana e te tuumau poppet e horahia ana to kōwae. Na reira, i roto i te tuhinga, kia tupato ki te tirotiro kei te punaha nga kaupapa me nga konae katoa e tika ana kia mahi to mahi.

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

Ruby meka

Ko enei korero ka tuuhia ki roto i nga waahanga o te raarangi 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

Kuputuhi meka

Ko enei meka ka tukuna ki runga i nga kohanga o te raarangi /etc/facter/facts.d i roto i te Puppet tawhito ranei /etc/puppetlabs/facts.d i roto i te Puppet hou.

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

Haere ki nga Meka

E rua nga huarahi ki te whakatata ki nga meka:

  • na roto i te papakupu $facts: $facts['fqdn'];
  • te whakamahi i te ingoa meka hei ingoa taurangi: $fqdn.

He pai ake te whakamahi papakupu $facts, pai ake ranei, tohuhia te mokowāingoa o te ao ($::facts).

Anei te waahanga whai take o te tuhinga.

Taurangi-i roto

I tua atu i nga meka, kei reira ano etahi taurangi, e wātea ana i te mokowāingoa o te ao.

  • nga korero pono — nga taurangi ka tangohia mai i te tiwhikete a te kiritaki (i te mea ka tukuna te tiwhikete ki runga i te tuumau poppet, kaore e taea e te kaihoko te tango noa me te whakarereke i tana tiwhikete, no reira ka "whakawhirinaki" nga taurangi): te ingoa o te tiwhikete, te ingoa o te kaihautu me te rohe, nga toronga mai i te tiwhikete.
  • meka tūmau —taurangi e pa ana ki nga korero mo te tūmau—putanga, ingoa, wāhitau IP tūmau, taiao.
  • meka kaihoko — nga taurangi ka honoa tika e te karetao-kaiwhakahaere, kaua ma te mea - ingoa tiwhikete, putanga kaihoko, putanga karetao.
  • taurangi matua - Taurangi Pappetmaster (sic!). He rite tonu ki roto meka tūmau, me nga uara tawhā whirihoranga e waatea ana.
  • taurangi whakahiato — nga taurangi whakahiato he rereke i ia waahanga: te ingoa o te waahanga o naianei me te ingoa o te waahanga i uru atu ai te ahanoa o naianei. Ka taea te whakamahi, hei tauira, ki te tirotiro kei te whakamahia to akomanga motuhake mai i etahi atu waahanga.

Tāpiritanga 1: me pehea te whakahaere me te patuiro i enei mea katoa?

He maha nga tauira o te waehere karetao i roto i te tuhinga, engari kaore i tino korero mai me pehea te whakahaere i tenei waehere. Ana, kei te whakatika ahau i a au ano.

He nui te kaihoko ki te whakahaere i te Puppet, engari mo te nuinga o nga keehi ka hiahia koe ki tetahi tūmau.

Roia

I te iti rawa mai i te putanga XNUMX, nga kohinga karetao-kaiwhakahaere mai puppetlabs whaimana kei roto nga whakawhirinaki katoa (ruby me nga kohatu e rite ana), no reira kaore he uaua ki te whakauru (Kei te korero ahau mo nga tohatoha-a-Debian - kaore matou e whakamahi i nga tohatoha-a-RPM).

I roto i te keehi tino ngawari, ki te whakamahi i te whirihoranga karetao, he nui noa ki te whakarewa i te kaihoko i roto i te aratau karekau: mena ka kapehia te waehere karetao ki te node, whakarewahia. 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

He pai ake, he pai ake, ki te whakatu i te tūmau me te whakahaere i nga apiha i runga i nga node i roto i te aratau daemon - katahi ia hawhe haora ka tonohia te whirihoranga i tangohia mai i te tūmau.

Ka taea e koe te peehi i te tauira pana o te mahi - haere ki te node e hiahia ana koe ka timata sudo puppet agent -t. Kī -t (--test) he maha nga whiringa ka taea te mahi takitahi. Kei roto i enei whiringa nga mea e whai ake nei:

  • kaua e rere i roto i te aratau daemon (ma te taunoa ka tiimata te kaihoko ki te aratau daemon);
  • katia i muri i te tono i te putumōhio (ma te taunoa, ka mahi tonu te kaihoko me te whakamahi i te whirihoranga kotahi ia hawhe haora);
  • tuhia he raupapa mahi taipitopito;
  • whakaatu huringa i roto i nga kōnae.

He aratau whakahaere a te kaihoko kaore he huringa - ka taea e koe te whakamahi mena kaore koe i te tino mohio kua tuhia e koe te whirihoranga tika me te hiahia ki te tirotiro he aha te mea ka huri te kaihoko i te wa e mahi ana. Ka taea tenei aratau e te tawhā --noop i runga i te raina whakahau: sudo puppet agent -t --noop.

I tua atu, ka taea e koe te whakaahei i te rarangi patuiro o te mahi - kei roto, ka tuhia e te karetao mo nga mahi katoa e mahia ana e ia: mo te rauemi e tukatukahia ana i tenei wa, mo nga tawhā o tenei rauemi, mo nga kaupapa ka whakarewahia e ia. Ko te tikanga he tawhā tenei --debug.

Tūmau

E kore ahau e whakaaro ki te tatūnga katoa o te pappetserver me te tuku waehere ki roto i tenei tuhinga; Ka kii noa ahau kei waho o te pouaka he putanga tino mahi o te tūmau kaore e hiahiatia he whirihoranga taapiri hei mahi me te iti o te nodes (pei ki te kotahi rau). Ko te maha o nga pona ka hiahia ki te whakatika - ma te taunoa, ka tukuna e te puppetserver kia kaua e neke atu i te wha nga kaimahi, mo te mahi nui ake me whakanui ake o raatau nama me te kore e wareware ki te whakanui ake i nga rohe mahara, ki te kore ka kohia e te tūmau te nuinga o te waa.

Tukunga Waehere - ki te hiahia tere me te ngawari, katahi ka titiro (i te r10k)[https://github.com/puppetlabs/r10k], mo nga whakaurunga iti me tino nui.

Tāpiritanga 2: Aratohu Whakawaehere

  1. Whakanohoia nga arorau katoa ki nga karaehe me nga whakamaramatanga.
  2. Puritia nga karaehe me nga whakamaramatanga ki nga waahanga, kaua ki nga whakaaturanga e whakaahua ana i nga pona.
  3. Whakamahia nga meka.
  4. Kaua e hanga mena i runga i nga ingoa manaaki.
  5. Kaua e pai ki te taapiri i nga tawhā mo nga karaehe me nga whakamaramatanga - he pai ake tenei i te arorau huna e huna ana i roto i te tinana o te karaehe/whakaahua.

Ka whakamarama ahau he aha ahau ka tūtohu kia mahi i tenei i roto i te tuhinga e whai ake nei.

mutunga

Ka mutu me te whakataki. I te tuhinga e whai ake nei ka korero ahau mo Hiera, ENC me PuppetDB.

Ko nga kaiwhakamahi kua rehita anake ka uru ki te rangahau. Waitohu maitēnā.

Inaa, he maha atu nga korero - Ka taea e au te tuhi tuhinga mo nga kaupapa e whai ake nei, pooti mo nga mea e pai ana koe ki te panui:

  • 59,1 orauHe hanga karetao matatau - etahi o nga taumata o muri ake: he kopikopiko, he mapi me etahi atu korero lambda, he kaikohi rauemi, he rauemi kaweake me te whakawhitiwhiti korero i waenga i nga kaihautu ma te Puppet, nga tohu, nga kaiwhakarato, nga momo raraunga waitara.13
  • 31,8 orau"Ko ahau te kaiwhakahaere o toku whaea" me pehea ranei matou o Avito i whakahoa ki etahi momo tuumau poppet o nga momo momo rereke, a, ko te tikanga, ko te waahanga mo te whakahaere i te kaimau papeti.7
  • 81,8 orauMe pehea te tuhi i te waehere karetao: taputapu, tuhinga, whakamatautau, CI/CD.18

22 nga kaiwhakamahi i pooti. 9 nga kaiwhakamahi i aukati.

Source: will.com