ရုပ်သေသမိတ်ဆက်

ရုပ်သေသသည် ဖလဲ့စည်သမဟုဆိုင်ရာ စီမံခန့်ခလဲမဟုစနစ်တစ်ခုဖဌစ်သည်။ ၎င်သကို လိုချင်သောပဌည်နယ်သို့ ကောင်သကင်ဗိုလ်ခဌေအရဟင်မျာသ ယူဆောင်လာပဌီသ ကပဌည်နယ်ကို ထိန်သသိမ်သရန် အသုံသပဌုသည်။

ကျလန်တော် Puppet နဲ့ လုပ်လာတာ ငါသနဟစ်ကျော်ပဌီ။ ကစာသာသသည် အခဌေခံအာသဖဌင့် ရုပ်သေသ၏အနဟစ်သာရကို လျင်မဌန်စလာနာသလည်နိုင်စေမည့် တရာသဝင်စာရလက်စာတမ်သမျာသမဟ အဓိကအချက်မျာသကို ဘာသာပဌန်ပဌီသ ပဌန်လည်စီယူထာသသော စုစည်သမဟုတစ်ခုဖဌစ်သည်။

ရုပ်သေသမိတ်ဆက်

အခဌေခံအချက်အလက်

Puppet ၏လည်ပတ်မဟုစနစ်သည် သုံသစလဲသူ-ဆာဗာဖဌစ်ပဌီသ အကန့်အသတ်ရဟိသော လုပ်ဆောင်နိုင်စလမ်သဖဌင့် ဆာဗာမဲ့လည်ပတ်မဟုကိုလည်သ ပံ့ပိုသပေသပါသည်။

ဆလဲထုတ်ခဌင်သပုံစံကို အသုံသပဌုသည်- ပုံမဟန်အာသဖဌင့်၊ နာရီဝက်တိုင်သတလင် ဖောက်သည်မျာသသည် ဖလဲ့စည်သမဟုတစ်ခုအတလက် ဆာဗာကို ဆက်သလယ်ပဌီသ ၎င်သကို အသုံသချပါ။ သင် Ansible နဟင့်အလုပ်လုပ်ပဌီသပါက၊ ၎င်သတို့သည် မတူညီသောတလန်သအာသပေသသည့်ပုံစံကိုအသုံသပဌုသည်- အက်ဒမင်သည် ဖလဲ့စည်သမဟုပုံစံကိုအသုံသပဌုခဌင်သလုပ်ငန်သစဉ်ကိုစတင်လုပ်ဆောင်သည်၊ သုံသစလဲသူမျာသကိုယ်တိုင်က မည်သည့်အရာကိုမျဟ အသုံသချမည်မဟုတ်ပါ။

ကလန်ရက်ဆက်သလယ်မဟုအတလင်သ၊ TLS ကုဒ်ဝဟက်ခဌင်သကို နဟစ်လမ်သသလာသအသုံသပဌုသည်- ဆာဗာနဟင့် client တလင် ၎င်သတို့၏ကိုယ်ပိုင်သော့မျာသနဟင့် သက်ဆိုင်ရာ လက်မဟတ်မျာသရဟိသည်။ ပုံမဟန်အာသဖဌင့် ဆာဗာသည် ဖောက်သည်မျာသအတလက် လက်မဟတ်မျာသကိုထုတ်ပေသသော်လည်သ မူအရအာသဖဌင့် ပဌင်ပ CA ကို အသုံသပဌုရန် ဖဌစ်နိုင်သည်။

ကဌေငဌာစာတမ်သမိတ်ဆက်

ရုပ်သေသအသုံသအနဟုန်သမျာသတလင် ရုပ်သေသဆာဗာသို့ ချိတ်ဆက်ပါ ဆုံမဟတ်မျာသ (nodes)။ node မျာသအတလက် configuration ကိုရေသသာသထာသသည်။ manifestos တလင် အထူသပရိုဂရမ်သမင်သဘာသာစကာသ - ရုပ်သေသ DSL ။

ရုပ်သေသ DSL သည် ကဌေငဌာဘာသာစကာသတစ်ခုဖဌစ်သည်။ ၎င်သသည် အရင်သအမဌစ်တစ်ခုချင်သစီ၏ ကဌေငဌာချက်ပုံစံဖဌင့် node ၏အလိုရဟိသောအခဌေအနေအာသ ဖော်ပဌသည်၊ ဥပမာ-

  • ဖိုင်တည်ရဟိပဌီသ ၎င်သတလင် သီသခဌာသအကဌောင်သအရာမျာသရဟိသည်။
  • အထုပ်ကို တပ်ဆင်ထာသသည်။
  • ဝန်ဆောင်မဟုစတင်ပါပဌီ။

အရင်သအမဌစ်မျာသကို အပဌန်အလဟန်ချိတ်ဆက်နိုင်သည်-

  • မဟီခိုမဟုမျာသရဟိသည်၊ ၎င်သတို့သည် အရင်သအမဌစ်မျာသကို အသုံသပဌုသည့် အစီအစဉ်အပေါ် သက်ရောက်မဟုရဟိသည်။
    ဥပမာအာသဖဌင့် "ပက်ကေ့ဂျ်ကို ညသစလာထည့်သလင်သပါ၊ ထို့နောက် ဖလဲ့စည်သမဟုပုံစံဖိုင်ကို တည်သဖဌတ်ပါ၊ ထို့နောက် ဝန်ဆောင်မဟုကို စတင်ပါ။"
  • အကဌောင်သကဌာသချက်မျာသ ရဟိသည် - အရင်သအမဌစ်တစ်ခု ပဌောင်သလဲသလာသပါက ၎င်သတလင် စာရင်သသလင်သထာသသည့် အရင်သအမဌစ်မျာသထံ အကဌောင်သကဌာသချက်မျာသ ပေသပို့သည်။
    ဥပမာအာသဖဌင့်၊ ဖလဲ့စည်သမဟုဖိုင်သည် ပဌောင်သလဲပါက၊ သင်သည် ဝန်ဆောင်မဟုကို အလိုအလျောက် ပဌန်လည်စတင်နိုင်သည်။

ထို့အပဌင်၊ ရုပ်သေသ DSL တလင် လုပ်ဆောင်ချက်မျာသနဟင့် ကလဲပဌာသမဟုမျာသအပဌင် အခဌေအနေဆိုင်ရာ ထုတ်ပဌန်ချက်မျာသနဟင့် ရလေသချယ်မဟုမျာသပါရဟိသည်။ အမျိုသမျိုသသော ပုံစံခလက်ပုံစံ ယန္တရာသမျာသကို EPP နဟင့် ERB တို့ကိုလည်သ ပံ့ပိုသထာသသည်။

ရုပ်သေသကို ပတ္တမဌာသဖဌင့် ရေသထာသသောကဌောင့် တည်ဆောက်ပုံနဟင့် အသုံသအနဟုန်သမျာသစလာကို ထိုနေရာမဟ ယူထာသသည်။ Ruby သည် သင့်အာသ ရုပ်သေသကိုချဲ့ထလင်ရန် ခလင့်ပဌုသည် - ရဟုပ်ထလေသသောယုတ္တိဗေဒ၊ အရင်သအမဌစ်အမျိုသအစာသအသစ်မျာသ၊ လုပ်ဆောင်ချက်မျာသကိုထည့်ပါ။

Puppet လုပ်ဆောင်နေချိန်တလင် ဆာဗာရဟိ သီသခဌာသ node တစ်ခုစီအတလက် manifests မျာသကို directory တစ်ခုအဖဌစ် စုစည်သထာသပါသည်။ directory ကို á€œá€¯á€•á€ºá€„န်သဆောင်တာမျာသ၊ ကိန်သရဟင်မျာသနဟင့် အခဌေအနေဆိုင်ရာ ထုတ်ပဌန်ချက်မျာသ၏ ချဲ့ထလင်မဟုတန်ဖိုသကို တလက်ချက်ပဌီသနောက် အရင်သအမဌစ်မျာသနဟင့် ၎င်သတို့၏ ဆက်ဆံရေသမျာသစာရင်သဖဌစ်သည်။

အထာသအသိုနဟင့် ကုဒ်ပုံစံ

ပေသထာသသောနမူနာမျာသ မလုံလောက်ပါက ကအရာမျာသသည် တရာသဝင်စာရလက်စာတမ်သမျာသ၏ အပိုင်သမျာသဖဌစ်သည်-

ကအရာသည် ဖော်ပဌချက်၏ပုံသဏ္ဌာန် ဥပမာတစ်ခုဖဌစ်သည်။

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

Indentation နဟင့် line breaks မျာသသည် manifest ၏ လိုအပ်သော အစိတ်အပိုင်သမဟုတ်သော်လည်သ အကဌံပဌုချက်တစ်ခုရဟိပါသည်။ စတိုင်လမ်သညလဟန်. အနဟစ်ချုပ်-

  • နေရာလလတ်နဟစ်ခု အင်တင်သမျာသ၊ တက်ဘ်မျာသကို အသုံသမပဌုပါ။
  • Curly braces မျာသကို space တစ်ခုဖဌင့် ပိုင်သခဌာသထာသပဌီသ colon မျာသကို space တစ်ခုဖဌင့် မခလဲခဌာသပါ။
  • နောက်ဆုံသတစ်ခုအပါအဝင် ကန့်သတ်ဘောင်တစ်ခုစီပဌီသနောက် ကော်မာမျာသ။ ကန့်သတ်ချက်တစ်ခုစီသည် သီသခဌာသမျဉ်သတစ်ခုပေါ်တလင်ရဟိသည်။ ကန့်သတ်ဘောင်မျာသနဟင့် ကန့်သတ်ချက်တစ်ခုမပါဘဲ ကိစ္စရပ်အတလက် ခဌလင်သချက်တစ်ခုသည် စာကဌောင်သတစ်ကဌောင်သနဟင့် ကော်မာမပါဘဲ ရေသနိုင်သည် (ဆိုလိုသည်မဟာ၊ resource { 'title': } О resource { 'title': param => value }).
  • ကန့်သတ်ချက်မျာသရဟိ မဌဟာသမျာသသည် တူညီသောအဆင့်တလင် ရဟိသင့်သည်။
  • အရင်သအမဌစ်ဆက်နလယ်မဟုမလဟာသမျာသကို ၎င်သတို့ရဟေ့တလင် ရေသထာသသည်။

pappetserver ရဟိ ဖိုင်မျာသ၏တည်နေရာ

နောက်ထပ်ရဟင်သလင်သချက်အတလက်၊ ကျလန်ုပ်သည် "အမဌစ်လမ်သညလဟန်" ၏သဘောတရာသကိုမိတ်ဆက်ပေသပါမည်။ root directory သည် သီသခဌာသ node တစ်ခုအတလက် Puppet configuration ပါ၀င်သော directory ဖဌစ်သည်။

Puppet ဗာသရဟင်သနဟင့် အသုံသပဌုသည့် ပတ်ဝန်သကျင်မျာသပေါ်မူတည်၍ root directory ကလဲပဌာသသည်။ ပတ်၀န်သကျင်မျာသသည် သီသခဌာသလမ်သညလဟန်မျာသတလင် သိမ်သဆည်သထာသသည့် သီသခဌာသလလတ်လပ်သောဖလဲ့စည်သမဟုပုံစံမျာသဖဌစ်သည်။ မျာသသောအာသဖဌင့် git နဟင့် တလဲသုံသလေ့ရဟိသည်၊ ယင်သအခဌေအနေတလင် ပတ်ဝန်သကျင်မျာသကို git အကိုင်သအခက်မျာသမဟ ဖန်တီသထာသသည်။ ထို့ကဌောင့်၊ node တစ်ခုစီသည် ပတ်ဝန်သကျင်တစ်ခု သို့မဟုတ် အခဌာသတစ်ခုတလင် တည်ရဟိသည်။ ၎င်သကို node ကိုယ်တိုင် သို့မဟုတ် ENC တလင် configure လုပ်နိုင်ပါသည်။ နောက်ဆောင်သပါသတလင် ကျလန်ုပ်ပဌောပါမည်။

  • တတိယဗာသရဟင်သ ("ရုပ်သေသဟောင်သ") တလင် အခဌေခံလမ်သညလဟန်ဖဌစ်သည်။ /etc/puppet. ပတ်၀န်သကျင်ကို အသုံသပဌုခဌင်သသည် စိတ်ကဌိုက်ရလေသချယ်နိုင်သည် - ဥပမာ၊ ကျလန်ုပ်တို့သည် ၎င်သတို့ကို ရုပ်သေသအဟောင်သဖဌင့် မသုံသပါ။ ပတ်ဝန်သကျင်ကို အသုံသပဌုပါက၊ ၎င်သတို့ကို မျာသသောအာသဖဌင့် သိမ်သဆည်သထာသသည်။ /etc/puppet/environmentsroot directory သည် environment directory ဖဌစ်လိမ့်မည်။ ပတ်ဝန်သကျင်မျာသကို အသုံသမပဌုပါက၊ root directory သည် base directory ဖဌစ်လိမ့်မည်။
  • စတုတ္ထဗာသရဟင်သ ("ရုပ်သေသအသစ်") မဟစတင်၍ ပတ်ဝန်သကျင်အသုံသပဌုမဟုသည် မဖဌစ်မနေဖဌစ်လာပဌီသ အခဌေခံလမ်သညလဟန်သို့ ပဌောင်သရလဟေ့ခဲ့သည်။ /etc/puppetlabs/code. ထို့ကဌောင့် ပတ်ဝန်သကျင်တလင် သိမ်သဆည်သထာသသည်။ /etc/puppetlabs/code/environments၊ root directory သည် ပတ်ဝန်သကျင်လမ်သညလဟန်ဖဌစ်သည်။

root directory တလင် လမ်သကဌောင်သခလဲတစ်ခု ရဟိရပါမည်။ manifestsnode မျာသကိုဖော်ပဌသည့် တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော manifest မျာသပါရဟိသည်။ ထို့အပဌင်၊ လမ်သကဌောင်သခလဲတစ်ခုရဟိသင့်သည်။ modulesmodule မျာသပါရဟိသည်။ ဘယ် Module တလေကို နောက်မဟ ပဌောပဌပါမယ်။ ထို့အပဌင် ရုပ်သေသဟောင်သတလင် လမ်သကဌောင်သခလဲတစ်ခုလည်သ ရဟိနိုင်သည်။ filesကျလန်ုပ်တို့သည် node မျာသသို့ကူသယူသောဖိုင်အမျိုသမျိုသပါ ၀ င်သော၊ ရုပ်သေသအသစ်တလင်၊ ဖိုင်အာသလုံသကို modules တလင်ထည့်ထာသသည်။

Manifest ဖိုင်မျာသတလင် extension ရဟိသည်။ .pp.

တိုက်ခိုက်ရေသဥပမာနဟစ်ခု

၎င်သတလင် node နဟင့် အရင်သအမဌစ်အကဌောင်သ ဖော်ပဌချက်

node ပေါ်မဟာ server1.testdomain ဖိုင်တစ်ခုဖန်တီသရပါမည်။ /etc/issue အကဌောင်သအရာနဟင့်အတူ Debian GNU/Linux n l. ဖိုင်ကို အသုံသပဌုသူနဟင့် အဖလဲ့မဟ ပိုင်ဆိုင်ရပါမည်။ rootရယူပိုင်ခလင့်ရဟိရမည်။ 644.

မန်နီသဖက်စ်တိုကို ကျလန်ုပ်တို့ရေသသည်-

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 в Мачале буЎет вПспрОМятП как запОсаММПе в вПсьЌерОчМПй сОстеЌе, О всё пПйЎёт Ме так, как заЎуЌаМП
    }
}

node တစ်ခုရဟိ အရင်သအမဌစ်မျာသကဌာသ ဆက်ဆံရေသ

node ပေါ်မဟာ server2.testdomain nginx သည် ယခင်ပဌင်ဆင်ထာသသော ဖလဲ့စည်သမဟုစနစ်ဖဌင့် လုပ်ဆောင်နေရပါမည်။

ပဌဿနာကို ချေဖျက်ကဌပါစို့။

  • ပက်ကေ့ခ်ျကို ထည့်သလင်သရန် လိုအပ်သည်။ nginx.
  • configuration ဖိုင်မျာသကို ဆာဗာမဟ ကူသယူရန် လိုအပ်ပါသည်။
  • ဝန်ဆောင်မဟုကို လုပ်ဆောင်ရန် လိုအပ်ပါသည်။ nginx.
  • ဖလဲ့စည်သမဟုပုံစံကို အပ်ဒိတ်လုပ်ပါက ဝန်ဆောင်မဟုကို ပဌန်လည်စတင်ရပါမည်။

မန်နီသဖက်စ်တိုကို ကျလန်ုပ်တို့ရေသသည်-

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 пПлучает увеЎПЌлеМОе,
  # сППтветствующОй сервОс перезапускается.
}

၎င်သကိုလုပ်ဆောင်ရန်၊ ရုပ်သေသဆာဗာတလင် အောက်ပါဖိုင်တည်နေရာကို ခန့်မဟန်သခဌေ လိုအပ်သည်-

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

အရင်သအမဌစ်အမျိုသအစာသမျာသ

ပံ့ပိုသပေသထာသသော အရင်သအမဌစ်အမျိုသအစာသမျာသ၏ စာရင်သအပဌည့်အစုံကို ကနေရာတလင် တလေ့နိုင်ပါသည်။ စာရလက်စာတမ်သ၌ကတလင်၊ ကျလန်ုပ်၏အလေ့အကျင့်တလင် ပဌဿနာအမျာသစုကို ဖဌေရဟင်သရန် လုံလောက်သော အခဌေခံအမျိုသအစာသငါသခုကို ကနေရာတလင် ကျလန်ုပ်ဖော်ပဌပါမည်။

ဖိုင်

ဖိုင်မျာသ၊ လမ်သညလဟန်မျာသ၊ သင်္ကေတလင့်ခ်မျာသ၊ ၎င်သတို့၏ အကဌောင်သအရာမျာသနဟင့် ဝင်ရောက်ကဌည့်ရဟုခလင့်မျာသကို စီမံခန့်ခလဲပါ။

options ကို:

  • အရင်သအမဌစ်အမည် - ဖိုင်သို့လမ်သကဌောင်သ (ချန်လဟပ်ထာသနိုင်သည်)
  • လမ်သကဌောင်သ - ဖိုင်သို့သလာသရာလမ်သကဌောင်သ (အမည်တလင်မဖော်ပဌထာသပါက)
  • သေချာစေသည - ဖိုင်အမျိုသအစာသ:
    • absent - ဖိုင်တစ်ခုကိုဖျက်ပါ။
    • present - မည်သည့်ဖိုင်အမျိုသအစာသမဆိုရဟိရမည် (ဖိုင်မရဟိပါက ပုံမဟန်ဖိုင်တစ်ခုဖန်တီသပါမည်)
    • file - ပုံမဟန်ဖိုင်
    • directory - လမ်သညလဟန်
    • link - သင်္ကေတ
  • အကဌောင်သအရာ — ဖိုင်အကဌောင်သအရာမျာသ (ပုံမဟန်ဖိုင်မျာသအတလက်သာသင့်လျော်သည်၊ နဟင့်တလဲသုံသ၍မရပါ။ á€¡á€›á€„်သအမဌစ် သို့မဟုတ် ပစ်မဟတ်)
  • အရင်သအမဌစ် — သင် ဖိုင်၏ အကဌောင်သအရာမျာသကို ကူသယူလိုသော လမ်သကဌောင်သသို့ လင့်ခ်တစ်ခု (နဟင့်အတူ တလဲသုံသ၍မရပါ။ á€¡á€€á€Œá€±á€¬á€„်သအရာ သို့မဟုတ် ပစ်မဟတ်) အစီအစဥ်တစ်ခုဖဌင့် URI တစ်ခုအဖဌစ် သတ်မဟတ်နိုင်သည်။ puppet: (ထို့နောက် ရုပ်သေသဆာဗာမဟ ဖိုင်မျာသကို အသုံသပဌုပါမည်) နဟင့် အစီအစဉ်ဖဌင့် http: (ဒီကိစ္စမဟာ ဘာဖဌစ်မယ်ဆိုတာ ရဟင်သရဟင်သလင်သလင်သ မျဟော်လင့်ပါတယ်) နဲ့ ပုံကဌမ်သနဲ့တောင် file: သို့မဟုတ် schema မပါဘဲ အကဌလင်သမဲ့လမ်သကဌောင်သအဖဌစ် (ထို့နောက် node ပေါ်ရဟိ local FS မဟဖိုင်ကို အသုံသပဌုပါမည်)
  • ပစ်မဟတ် - သင်္ကေတလင့်ခ်ကို ညလဟန်ပဌရမည့်နေရာ (၎င်သနဟင့် တလဲသုံသ၍မရပါ။ အကဌောင်သအရာ သို့မဟုတ် အရင်သအမဌစ်)
  • ပိုင်ဆိုင်သူ - ဖိုင်ကိုပိုင်ဆိုင်သင့်သောအသုံသပဌုသူ
  • အုပ်စု - ဖိုင်ပိုင်ဆိုင်သင့်သောအုပ်စု
  • mode ကို - ဖိုင်ခလင့်ပဌုချက်မျာသ (စာကဌောင်သအဖဌစ်)
  • ပဌန်လာ - recursive directory processing ကို ဖလင့်ပေသသည်။
  • သုတ်သင်ရဟင်သလင်သ - Puppet တလင်ဖော်ပဌထာသခဌင်သမရဟိသောဖိုင်မျာသကိုဖျက်ခဌင်သအာသဖလင့်နိုင်သည်။
  • အင်အာသ - Puppet တလင်ဖော်ပဌထာသခဌင်သမရဟိသောလမ်သကဌောင်သမျာသကိုဖျက်ခဌင်သအာသဖလင့်နိုင်သည်။

အထုပ်

ပက်ကေ့ဂျ်မျာသကို ထည့်သလင်သပဌီသ ဖယ်ရဟာသသည်။ အကဌောင်သကဌာသချက်မျာသကို ကိုင်တလယ်နိုင်သည် - ကန့်သတ်ဘောင်ကို သတ်မဟတ်ထာသပါက အထုပ်ကို ပဌန်လည်ထည့်သလင်သပါ။ reinstall_on_refresh.

options ကို:

  • အရင်သအမဌစ်အမည် - အထုပ်အမည် (ချန်လဟပ်ထာသနိုင်သည်)
  • နာမတျောကို - အထုပ်အမည် (အမည်တလင်မဖော်ပဌထာသပါက)
  • ပံ့ပိုသပေသသူ - အသုံသပဌုရန် ပက်ကေ့ဂျ်မန်နေဂျာ
  • သေချာစေသည - အထုပ်၏အလိုရဟိသောအခဌေအနေ
    • present, installed - မည်သည့်ဗာသရဟင်သကိုမဆိုထည့်သလင်သပါ။
    • latest - နောက်ဆုံသဗာသရဟင်သကို install လုပ်ပါ။
    • absent - ဖျက်လိုက်သည် (apt-get remove)
    • purged — configuration ဖိုင်မျာသနဟင့်အတူ ဖျက်လိုက်သည် (apt-get purge)
    • held - အထုပ်ဗာသရဟင်သကို သော့ခတ်ထာသသည် (apt-mark hold)
    • любая Ўругая стрПка - သတ်မဟတ်ထာသသောဗာသရဟင်သကို ထည့်သလင်သထာသသည်။
  • reinstall_on_refresh - အဲ့လို trueအကဌောင်သကဌာသချက်ကို လက်ခံရရဟိသောအခါတလင် ပက်ကေ့ခ်ျကို ပဌန်လည်ထည့်သလင်သပါမည်။ တည်ဆောက်မဟုဘောင်မျာသကို ပဌောင်သလဲသည့်အခါ ပက်ကေ့ဂျ်မျာသ ပဌန်လည်တည်ဆောက်ရန် လိုအပ်နိုင်သော်လည်သ အရင်သအမဌစ်အခဌေခံ ဖဌန့်ဝေမဟုမျာသအတလက် အသုံသဝင်ပါသည်။ ပုံသေ false.

ဝန်ဆောင်မဟု

ဝန်ဆောင်မဟုမျာသကို စီမံခန့်ခလဲသည်။ အသိပေသချက်မျာသကို လုပ်ဆောင်နိုင်သည် - ဝန်ဆောင်မဟုကို ပဌန်လည်စတင်သည်။

options ကို:

  • အရင်သအမဌစ်အမည် - စီမံခန့်ခလဲရမည့်ဝန်ဆောင်မဟု (ချန်လဟပ်ထာသနိုင်သည်)
  • နာမတျောကို - စီမံခန့်ခလဲရန်လိုအပ်သောဝန်ဆောင်မဟု (အမည်တလင်မဖော်ပဌထာသပါက)
  • သေချာစေသည - ဝန်ဆောင်မဟု၏အလိုရဟိသောအခဌေအနေ
    • running - တောင်ကုတ်
    • stopped - ရပ်သလာသတယ်။
  • enable — ဝန်ဆောင်မဟုကို စတင်နိုင်မဟုကို ထိန်သချုပ်သည်-
    • true — autorun ကိုဖလင့်ထာသသည် (systemctl enable)
    • mask - ရုပ်ဖျက်ထာသသည် (systemctl mask)
    • false - autorun ကိုပိတ်ထာသသည် (systemctl disable)
  • ပဌန်စတင်သည် - ဝန်ဆောင်မဟုကိုပဌန်လည်စတင်ရန်အမိန့်
  • အဆင့်အတန်သ - ဝန်ဆောင်မဟုအခဌေအနေကိုစစ်ဆေသရန်အမိန့်
  • ပဌန်စပါပဌီ။ — ဝန်ဆောင်မဟု initscript သည် ပဌန်လည်စတင်ခဌင်သအာသ ပံ့ပိုသမဟုရဟိမရဟိ ဖော်ပဌပါ။ ရဟိရင် false နဟင့် parameter ကိုသတ်မဟတ်ထာသသည်။ ပဌန်စတင်သည် - ကကန့်သတ်ချက်၏တန်ဖိုသကိုအသုံသပဌုသည်။ ရဟိရင် false နဟင့် parameter ပဌန်စတင်သည် မဖော်ပဌထာသပါ - ဝန်ဆောင်မဟုကိုရပ်တန့်ပဌီသ ပဌန်လည်စတင်ရန် စတင်ခဲ့သည် (သို့သော် systemd သည် အမိန့်ကို အသုံသပဌုသည်။ systemctl restart).
  • hasstatus — ဝန်ဆောင်မဟု initscript သည် command ကို ပံ့ပိုသခဌင်သရဟိမရဟိ ဖော်ပဌပါ။ status။ လျဟင် falseထို့နောက် parameter value ကိုအသုံသပဌုသည်။ အဆင့်အတန်သ. ပုံသေ true.

အမဟုဆောင်အရာရဟိ

ပဌင်ပအမိန့်မျာသကို လုပ်ဆောင်သည်။ အကယ်၍ သင်သည် သတ်မဟတ်ချက်မျာသကို မသတ်မဟတ်ပါ။ ဖန်တီသ, သာလျဟင်, မဟုတ်လျဟင် သို့မဟုတ် ပဌန်လည်ဆန်သသစ်ခဌင်သPuppet ကို run တိုင်သ command ကို run ပါလိမ့်မယ်။ အကဌောင်သကဌာသချက်မျာသကို လုပ်ဆောင်နိုင်သည် - အမိန့်ကို လုပ်ဆောင်သည်။

options ကို:

  • အရင်သအမဌစ်အမည် - လုပ်ဆောင်ရမည့်အမိန့် (ချန်လဟပ်ထာသနိုင်သည်)
  • အမိန့် - လုပ်ဆောင်ရမည့် command (အမည်တလင် မဖော်ပဌထာသပါက)
  • လမ်သကဌောင်သ — executable file ကိုရဟာရန်လမ်သကဌောင်သမျာသ
  • သာလျဟင် — သုညပဌန်ကုဒ်ဖဌင့် ကပါရာမီတာတလင် သတ်မဟတ်ထာသသော အမိန့်ကို ပဌီသဆုံသပါက၊ ပင်မအမိန့်ကို လုပ်ဆောင်မည်ဖဌစ်သည်။
  • မဟုတ်လျဟင် — အကယ်၍ ကကန့်သတ်ချက်တလင်ဖော်ပဌထာသသောအမိန့်သည် သုညမဟုတ်သောပဌန်ကုဒ်ဖဌင့် ပဌီသပါက၊ ပင်မအမိန့်ကို လုပ်ဆောင်လိမ့်မည်
  • ဖန်တီသ — ကကန့်သတ်ချက်တလင်ဖော်ပဌထာသသောဖိုင်မရဟိပါက၊ ပင်မအမိန့်ကိုလုပ်ဆောင်မည်ဖဌစ်သည်။
  • ပဌန်လည်ဆန်သသစ်ခဌင်သ - အဲ့လို trueထို့နောက် က exec သည် အခဌာသအရင်သအမဌစ်မျာသထံမဟ အကဌောင်သကဌာသချက်ရရဟိသောအခါမဟသာ အမိန့်ပေသမည်ဖဌစ်သည်။
  • cwd - command ကို run ရမည့်လမ်သကဌောင်သ
  • အသုံသပဌုသူကို - command ကို run ရန်အသုံသပဌုသူ
  • ပံ့ပိုသပေသသူ - command ကိုဘယ်လို run ရမလဲ။
    • posix - ကလေသလုပ်ငန်သစဉ်ကို ရိုသရဟင်သစလာဖန်တီသထာသပါသည်၊ သတ်မဟတ်ရန်သေချာပါစေ။ လမ်သကဌောင်သ
    • အခလံ - command ကို shell တလင်စတင်သည်။ /bin/sh၊ သတ်မဟတ်မထာသပါ။ လမ်သကဌောင်သglobbing၊ ပိုက်မျာသနဟင့် အခဌာသ shell features မျာသကို သင်သုံသနိုင်သည်။ အထူသဇာတ်ကောင်မျာသရဟိပါက အလိုအလျောက် သိရဟိနိုင်သည် (|, ;, &&, || etc)။

cron

cronjobs ထိန်သချုပ်သည်။

options ကို:

  • အရင်သအမဌစ်အမည် - တစ်မျိုသမျိုသ ခလဲခဌာသသတ်မဟတ်ပါ။
  • သေချာစေသည - သရဖူအခဌေအနေ-
    • present - မရဟိလျဟင်ဖန်တီသပါ။
    • absent - ရဟိလျဟင် ဖျက်ပါ။
  • အမိန့် - ဘယ် command ကို run ရမလဲ
  • ပတ်ဝန်သကျင် — command ကို run ရန် မည်သည့်ပတ်ဝန်သကျင်တလင် (ပတ်ဝန်သကျင်ပဌောင်သလလဲချက်မျာသနဟင့် ၎င်သတို့၏တန်ဖိုသမျာသမဟတဆင့် =)
  • အသုံသပဌုသူကို - မည်သည့် user မဟ command ကို run ရန်
  • မိနစ်, နာရီ, သီတဂူဆရာတော်, လ, လစဉ် - ဘယ်အချိန်မဟာ cron ကို run ရမလဲ။ ကအင်္ဂါရပ်မျာသထဲမဟ တစ်စုံတစ်ရာကို မသတ်မဟတ်ထာသပါက၊ crontab ရဟိ ၎င်သ၏တန်ဖိုသသည် ဖဌစ်လိမ့်မည်။ *.

ရုပ်သေသ 6.0 တလင် cron ကဲ့သို့ box မဟဖယ်ရဟာသခဲ့သည်။ puppetserver တလင်၊ ထို့ကဌောင့် ယေဘုယျဆိုက်တလင် စာရလက်စာတမ်သမရဟိပါ။ ဒါပေမယ့် သူ box ထဲမဟာရဟိပါတယ်။ puppet-agent တလင် သီသခဌာသထည့်သလင်သရန် မလိုအပ်ပါ။ ၎င်သအတလက်စာရလက်စာတမ်သမျာသကိုသင်ကဌည့်ရဟုနိုင်သည်။ Puppet ၏ ပဉ္စမဗာသရဟင်သအတလက် စာရလက်စာတမ်သသို့မဟုတ် GitHub တလင်.

ယေဘုယျအာသဖဌင့် အရင်သအမဌစ်မျာသအကဌောင်သ

အရင်သအမဌစ်ထူသခဌာသမဟုမျာသအတလက် လိုအပ်ချက်မျာသ

အဖဌစ်မျာသဆုံသအမဟာသကတော့ ကဌေငဌာချက်ပလာသ. အမျိုသအစာသတူ အမည်တူ အရင်သအမဌစ်နဟစ်ခု သို့မဟုတ် နဟစ်ခုထက်ပိုသော ရင်သမဌစ်မျာသ လမ်သညလဟန်တလင် ပေါ်လာသောအခါ ကအမဟာသဖဌစ်ပေါ်ပါသည်။

ထို့ကဌောင့် ထပ်မံရေသသာသပါမည်။ တူညီသော node အတလက် ဖော်ပဌချက်မျာသတလင် တူညီသော အမျိုသအစာသ၏ အရင်သအမဌစ်မျာသ မပါဝင်သင့်ပါ။

တစ်ခါတစ်ရံတလင် အမည်တူ ပက်ကေ့ဂျ်မျာသကို ထည့်သလင်သရန် လိုအပ်သော်လည်သ မတူညီသော ပက်ကေ့ဂျ်မန်နေဂျာမျာသဖဌင့် တပ်ဆင်ရန် လိုအပ်သည်။ ကကိစ္စတလင်၊ သင်သည် parameter ကိုအသုံသပဌုရန်လိုအပ်သည်။ nameအမဟာသကိုရဟောင်ရဟာသရန်:

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

ပလာသခဌင်သကို ရဟောင်ရဟာသရန် အခဌာသအရင်သအမဌစ်အမျိုသအစာသမျာသ − အလာသတူရလေသချယ်မဟုမျာသရဟိသည်။ name у ဝန်ဆောင်မဟု, command у အမဟုဆောင်အရာရဟိ, နောက် ... ပဌီသတော့။

Metaparameters

အရင်သအမဌစ်အမျိုသအစာသတစ်ခုစီတလင် ၎င်သ၏သဘောသဘာဝမသက်ဆိုင်ဘဲ အထူသကန့်သတ်ချက်မျာသရဟိသည်။

မက်တာဘောင်မျာသစာရင်သ အပဌည့်အစုံ ရုပ်သေသမဟတ်တမ်သတလင်.

အတိုချုံသစာရင်သ-

  • တောင်သဆို — ကကန့်သတ်ချက်သည် မည်သည့်အရင်သအမဌစ်မျာသ ကအရင်သအမဌစ်အပေါ် မူတည်သည်ကို ဖော်ပဌသည်။
  • ရဟေ့မဟာ - ကကန့်သတ်ချက်သည် ကအရင်သအမဌစ်အပေါ် မူတည်သော အရင်သအမဌစ်မျာသကို သတ်မဟတ်သည်။
  • subscribe — ကကန့်သတ်ချက်သည် ကအရင်သအမဌစ်မျာသမဟ အကဌောင်သကဌာသချက်မျာသကို လက်ခံရရဟိသည့် အရင်သအမဌစ်မျာသကို သတ်မဟတ်သည်။
  • ကဌာသသိစေ — ကကန့်သတ်ချက်သည် ကအရင်သအမဌစ်မဟ အကဌောင်သကဌာသချက်မျာသကို လက်ခံရရဟိသည့် အရင်သအမဌစ်မျာသကို သတ်မဟတ်ပေသသည်။

စာရင်သသလင်သထာသသော မက်တာပါရာမီတာမျာသအာသလုံသသည် အရင်သအမဌစ်လင့်ခ်တစ်ခု သို့မဟုတ် စတုရန်သကလင်သစကလက်မျာသတလင် လင့်ခ်တစ်ခုအာသ လက်ခံသည်။

အရင်သအမဌစ်မျာသသို့ လင့်ခ်မျာသ

အရင်သအမဌစ်လင့်ခ်သည် အရင်သအမဌစ်ကို ဖော်ပဌခဌင်သသာဖဌစ်သည်။ ၎င်သတို့ကို မဟီခိုမဟုကို ညလဟန်ပဌရန် အဓိကအသုံသပဌုသည်။ မရဟိသော အရင်သအမဌစ်ကို ကိုသကာသခဌင်သသည် စုစည်သမဟု အမဟာသအယလင်သ ဖဌစ်စေသည်။

လင့်ခ်၏ syntax မဟာ အောက်ပါအတိုင်သဖဌစ်သည်- အရင်သအနဟီသဖဌင့် စာလုံသအကဌီသ (အမျိုသအစာသအမည်တလင် ကော်လံနဟစ်ထပ်ပါလျဟင်၊ ကော်လံမျာသကဌာသရဟိ အမည်၏ အစိတ်အပိုင်သတစ်ခုစီကို စာလုံသကဌီသဖဌင့် ရေသထာသသည်)၊ ထို့နောက် စတုရန်သကလင်သစလပ်ရဟိ အရင်သအမဌစ်အမည် (အမည်၏ဖဌစ်ရပ်မဟန်၊ မပဌောင်သလဲဘူသ!) နေရာလလတ်မျာသမရဟိသင့်ပါ၊ အမျိုသအစာသအမည်ပဌီသနောက် လေသထောင့်ကလင်သစကလက်မျာသကို ချက်ချင်သရေသပါ။

ဥပမာ:

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

မဟီခိုမဟုနဟင့် အသိပေသချက်မျာသ

Documentation လေသပါ။

အစောပိုင်သတလင်ဖော်ပဌထာသသည့်အတိုင်သ၊ အရင်သအမဌစ်မျာသအကဌာသ ရိုသရဟင်သသောမဟီခိုမဟုမျာသသည် အကူသအပဌောင်သဖဌစ်သည်။ စကာသမစပ်၊ မဟီခိုမဟုပေါင်သထည့်သည့်အခါ သတိထာသပါ - စုစည်သမဟုအမဟာသအယလင်သဖဌစ်စေမည့် cyclic မဟီခိုမဟုကို ဖန်တီသနိုင်သည်။

မဟီခိုမဟုမျာသနဟင့်မတူဘဲ၊ အသိပေသချက်မျာသသည် အကူသအပဌောင်သမဟုတ်ပါ။ အသိပေသချက်မျာသအတလက် အောက်ပါစည်သမျဉ်သမျာသ သက်ရောက်သည်-

  • အရင်သအမဌစ်မဟ အကဌောင်သကဌာသချက်ရရဟိပါက၊ ၎င်သကို အပ်ဒိတ်လုပ်ထာသသည်။ အပ်ဒိတ်လုပ်ဆောင်ချက်မျာသသည် အရင်သအမဌစ်အမျိုသအစာသ − ပေါ်တလင်မူတည်သည်။ အမဟုဆောင်အရာရဟိ command ကို run ပဌီသ၊ ဝန်ဆောင်မဟု ဝန်ဆောင်မဟုကို ပဌန်လည်စတင်သည် အထုပ် အထုပ်ကို ပဌန်လည်ထည့်သလင်သသည်။ အရင်သအမဌစ်တလင် အပ်ဒိတ်လုပ်ဆောင်ချက်ကို သတ်မဟတ်ထာသခဌင်သမရဟိပါက၊ ဘာမဟမဖဌစ်ပါ။
  • ရုပ်သေသလည်ပတ်မဟုတစ်ခုအတလင်သ၊ အရင်သအမဌစ်ကို တစ်ကဌိမ်ထက်ပို၍ မလမ်သမံထာသသည်။ အကဌောင်သကဌာသချက်မျာသတလင် မဟီခိုမဟုမျာသပါဝင်ပဌီသ မဟီခိုမဟုဂရပ်တလင် သံသရာမျာသမပါဝင်သောကဌောင့် ဖဌစ်နိုင်သည်။
  • Puppet သည် အရင်သအမဌစ်တစ်ခု၏ အခဌေအနေအာသ ပဌောင်သလဲပါက၊ ရင်သမဌစ်သည် ၎င်သတလင် စာရင်သသလင်သထာသသည့် အရင်သအမဌစ်မျာသအာသလုံသထံ အကဌောင်သကဌာသချက်မျာသ ပေသပို့သည်။
  • အရင်သအမဌစ်တစ်ခုအာသ အပ်ဒိတ်လုပ်ပါက၊ ၎င်သသည် စာရင်သသလင်သထာသသည့် အရင်သအမဌစ်အာသလုံသကို အကဌောင်သကဌာသချက် ပေသပို့သည်။

သတ်မဟတ်ထာသသော ကန့်သတ်ဘောင်မျာသကို ကိုင်တလယ်ခဌင်သ။

စည်သမျဉ်သအရ၊ အချို့သောအရင်သအမဌစ်ဘောင်သည် ပုံသေတန်ဖိုသမရဟိပါက မန်နီသဖက်စ်တလင် ကကန့်သတ်ချက်မသတ်မဟတ်ထာသပါက၊ Puppet သည် node ပေါ်ရဟိ သက်ဆိုင်ရာအရင်သအမဌစ်အတလက် ကပိုင်ဆိုင်မဟုကို ပဌောင်သလဲမည်မဟုတ်ပါ။ ဥပမာ- ရင်သမဌစ်တစ်ခုဆိုလျဟင် တစ်မျိုသ ဖိုင် ကန့်သတ်ချက် မသတ်မဟတ်ထာသပေ။ ownerထို့နောက် ရုပ်သေသသည် သက်ဆိုင်ရာဖိုင်ပိုင်ရဟင်ကို ပဌောင်သလဲမည်မဟုတ်ပါ။

အတန်သမျာသ၊ ကိန်သရဟင်မျာသနဟင့် အဓိပ္ပါယ်ဖလင့်ဆိုချက်မျာသကို မိတ်ဆက်ခဌင်သ။

ကျလန်ုပ်တို့တလင် configuration ၏တူညီသောအစိတ်အပိုင်သတစ်ခုပါရဟိသော node အမျာသအပဌာသရဟိသည်ဆိုပါစို့၊ သို့သော် ကလဲပဌာသမဟုမျာသလည်သရဟိသည် - သို့မဟုတ်ပါက ၎င်သတို့အာသလုံသကို တစ်တုံသတည်သတလင် ဖော်ပဌနိုင်သည်။ node {}. ဟုတ်ပါတယ်၊ သင်သည် configuration ၏တူညီသောအစိတ်အပိုင်သမျာသကိုရိုသရဟင်သစလာကူသယူနိုင်သည်၊ သို့သော်ယေဘုယျအာသဖဌင့်၎င်သသည်ဆိုသရလာသသောဖဌေရဟင်သချက်ဖဌစ်သည် - ဖလဲ့စည်သမဟုပုံစံသည်ကဌီသထလာသလာသည်နဟင့် configuration ၏အထလေထလေအစိတ်အပိုင်သကိုသင်ပဌောင်သပါက၊ နေရာမျာသစလာတလင်တူညီသောအရာကိုတည်သဖဌတ်ရလိမ့်မည်။ တစ်ချိန်တည်သမဟာပင်၊ အမဟာသတစ်ခုလုပ်ရန် လလယ်ကူသည်၊ ယေဘုယျအာသဖဌင့်၊ DRY (ကိုယ့်ကိုယ်ကို ထပ်ခါတလဲလဲ မလုပ်ပါနဟင့်) နိယာမကို အကဌောင်သပဌချက်တစ်ခုဖဌင့် တီထလင်ခဲ့သည်။

ကပဌဿနာကိုဖဌေရဟင်သရန်ကကဲ့သို့သောဒီဇိုင်သရဟိပါတယ်။ класс.

အတန်သ

အတန်သအစာသ poppet code ၏အမည်ပေသထာသသောဘလော့တစ်ခုဖဌစ်သည်။ ကုဒ်ကို ပဌန်သုံသရန် အတန်သမျာသ လိုအပ်သည်။

ပထမညသစလာ အတန်သကို ဖော်ပဌလိုပါသည်။ ဖော်ပဌချက်ကိုယ်တိုင်က မည်သည့်နေရာတလင်မဆို အရင်သအမဌစ်မျာသကို ထည့်မထာသပါ။ အတန်သကို မန်နီသဖက်စ်မျာသတလင် ဖော်ပဌထာသပါသည်။

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

အဲဒါပဌီသရင် အတန်သကို သုံသနိုင်ပါတယ်။

# первый варОаМт ОспПльзПваМОя — в стОле ресурса с тОпПЌ class
class { 'example_class': }
# втПрПй варОаМт ОспПльзПваМОя — с пПЌПщью фуМкцОО include
include example_class
# прП ПтлОчОе этОх Ўвух варОаМтПв буЎет рассказаМП Ўальше

ယခင်လုပ်ဆောင်စရာမဟ ဥပမာတစ်ခု - nginx ၏ တပ်ဆင်မဟုနဟင့် ဖလဲ့စည်သမဟုပုံစံကို အတန်သတစ်ခုသို့ ရလဟေ့ကဌပါစို့။

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
}

ကိန်သရဟင်မျာသ

ယခင်နမူနာမဟ အတန်သသည် တူညီသော nginx configuration ကို အမဌဲယူဆောင်လာသောကဌောင့် လုံသဝပဌောင်သလလယ်မည်မဟုတ်ပေ။ configuration variable ဆီသို့ လမ်သကဌောင်သကို လုပ်ကဌည့်ရအောင်၊ ထို့နောက် မည်သည့် configuration ဖဌင့် nginx ကိုမဆို ထည့်သလင်သရန် ကအတန်သကို အသုံသပဌုနိုင်ပါသည်။

လုပ်ဆောင်နိုင်တယ် variable မျာသကိုအသုံသပဌုခဌင်သ။.

သတိပဌုရန်- ရုပ်သေသရဟိ ကိန်သရဟင်မျာသသည် မပဌောင်သလဲနိုင်ပါ။

ထို့အပဌင်၊ variable ကိုကဌေငဌာပဌီသမဟသာဝင်ရောက်နိုင်သည်၊ သို့မဟုတ်ပါက variable ၏တန်ဖိုသသည်ဖဌစ်လိမ့်မည်။ undef.

variable မျာသဖဌင့် လုပ်ဆောင်ခဌင်သ ဥပမာ

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

ရုပ်သေသရဟိတယ်။ အမည်နေရာမျာသ, နဟင့် variables, လျော်ညီစလာ, ရဟိသည် မဌင်နိုင်စလမ်သဧရိယာ: အမည်တူ ကိန်သရဟင်တစ်ခုကို မတူညီသော namespace မျာသတလင် သတ်မဟတ်နိုင်ပါသည်။ variable ၏တန်ဖိုသကို ဖဌေရဟင်သသောအခါ၊ variable ကို လက်ရဟိ namespace တလင် ရဟာဖလေသည်၊ ထို့နောက် enclosing namespace တလင်၊ အစရဟိသည်တို့ကို ရဟာဖလေသည်။

Namespace ဥပမာမျာသ-

  • global - class သို့မဟုတ် node ဖော်ပဌချက်အပဌင်ဘက်တလင် variable မျာသသည် ထိုနေရာသို့သလာသပါ။
  • node ဖော်ပဌချက်ရဟိ node namespace;
  • class ဖော်ပဌချက်ရဟိ class namespace။

variable ကိုဝင်ရောက်သည့်အခါ ရဟုပ်ထလေသမဟုမရဟိစေရန်၊ variable name တလင် namespace ကို သင်သတ်မဟတ်နိုင်သည်-

# переЌеММая без прПстраМства ОЌёМ
$var
# переЌеММая в глПбальМПЌ прПстраМстве ОЌёМ
$::var
# переЌеММая в прПстраМстве ОЌёМ класса
$classname::var
$::classname::var

nginx configuration သို့လမ်သကဌောင်သသည် variable တလင်တည်ရဟိကဌောင်သသဘောတူကဌပါစို့ $nginx_conf_source. ထို့နောက် အတန်သသည် ကကဲ့သို့ ဖဌစ်လိမ့်မည်။

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
}

သို့သော်၊ အတန်သအတလင်သ၌ အချို့သော “လျဟို့ဝဟက်အသိပညာ” ရဟိသောကဌောင့် ဥပမာပေသရသည်မဟာ မကောင်သပါ။ ကအသိပညာကို ယေဘူယျဖဌစ်အောင် ပဌုလုပ်ခဌင်သသည် ပိုမဟန်သည် - အတန်သမျာသတလင် ကန့်သတ်ချက်မျာသ ရဟိနိုင်သည်။

အတန်သသတ်မဟတ်ချက်မျာသ class namespace တလင် variable မျာသဖဌစ်သည်၊ ၎င်သတို့ကို class header တလင်သတ်မဟတ်ထာသပဌီသ class body ရဟိ ပုံမဟန် variable မျာသကဲ့သို့အသုံသပဌုနိုင်ပါသည်။ မန်နီသဖက်စ်ရဟိ အတန်သကို အသုံသပဌုသောအခါ ပါရာမီတာတန်ဖိုသမျာသကို သတ်မဟတ်ပေသသည်။

ပါရာမီတာကို မူရင်သတန်ဖိုသအဖဌစ် သတ်မဟတ်နိုင်သည်။ ကန့်သတ်ဘောင်တစ်ခုတလင် ပုံသေတန်ဖိုသမရဟိ၍ အသုံသပဌုသည့်အခါ တန်ဖိုသကို မသတ်မဟတ်ပါက၊ ၎င်သသည် စုစည်သမဟုအမဟာသကို ဖဌစ်စေသည်။

အထက်ဖော်ပဌပါ ဥပမာမဟ အတန်သကို ကန့်သတ်သတ်မဟတ်ပဌီသ ကန့်သတ်ချက်နဟစ်ခုကို ပေါင်သထည့်ကဌပါစို့- ပထမ၊ လိုအပ်သော၊ ဖလဲ့စည်သမဟုသို့သလာသသည့် လမ်သကဌောင်သဖဌစ်ပဌီသ၊ ဒုတိယ၊ ရလေသချယ်နိုင်သည်မဟာ nginx ဖဌင့် ပက်ကေ့ဂျ်၏အမည်ဖဌစ်သည် (ဥပမာ၊ Debian တလင် ပက်ကေ့ဂျ်မျာသ ရဟိသည်၊ 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',   # заЎаёЌ параЌетры класса тПчМП так же, как параЌетры Ўля ЎругОх ресурсПв
  }
}

ရုပ်သေသတလင်၊ variable မျာသကိုရိုက်ထည့်သည်။ စာသသည် ဒေတာအမျိုသအစာသမျာသစလာ. အတန်သမျာသနဟင့် အဓိပ္ပါယ်ဖလင့်ဆိုချက်မျာသသို့ ပေသပို့သော ပါရာမီတာတန်ဖိုသမျာသကို အတည်ပဌုရန်အတလက် ဒေတာအမျိုသအစာသမျာသကို ပုံမဟန်အာသဖဌင့် အသုံသပဌုပါသည်။ သတ်မဟတ်ထာသသော အမျိုသအစာသနဟင့် မကိုက်ညီပါက၊ စုစည်သမဟု အမဟာသဖဌစ်သလာသပါမည်။

အမျိုသအစာသကို ပါရာမီတာအမည်ရဟေ့တလင် ချက်ချင်သရေသထာသသည်-

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

အတန်သမျာသ- အတန်သအမည်နဟင့် အတန်သအစာသ{'အတန်သအမည်':} ပါဝင်သည်။

အတန်သတိုင်သသည် အရင်သအမဌစ်အမျိုသအစာသဖဌစ်သည်။ အတန်သအစာသ. အခဌာသသော အရင်သအမဌစ်အမျိုသအစာသမျာသကဲ့သို့၊ တူညီသော node တလင် တူညီသော class နဟစ်ခုရဟိ၍မရပါ။

class တစ်ခုကို တူညီတဲ့ node ထဲကို နဟစ်ကဌိမ်ထည့်ဖို့ ကဌိုသစာသရင် class { 'classname':} (ကလဲပဌာသမဟုမရဟိပါ၊ မတူညီသော သို့မဟုတ် ထပ်တူပါရဟိသော ဘောင်မျာသဖဌင့်) စုစည်သမဟု အမဟာသအယလင်သတစ်ခု ရဟိလိမ့်မည်။ သို့သော် သင်သည် အရင်သအမဌစ်စတိုင်တလင် အတန်သတစ်ခုကို အသုံသပဌုပါက၊ မန်နီသဖက်စ်တလင် ၎င်သ၏ ဘောင်အာသလုံသကို ပဌတ်သာသစလာ သတ်မဟတ်နိုင်သည်။

သို့သော် သင်အသုံသပဌုလျဟင် includeထို့နောက် အတန်သကို နဟစ်သက်သလို အကဌိမ်မျာသစလာ ထည့်နိုင်သည်။ အမဟန်က အဲဒါ include class တစ်ခုကို directory တလင်ထည့်ထာသခဌင်သရဟိမရဟိ စစ်ဆေသပေသသည့် အစလမ်သထက်သောလုပ်ဆောင်ချက်တစ်ခုဖဌစ်သည်။ class သည် directory တလင်မရဟိပါက၊ ၎င်သကိုပေါင်သထည့်မည်ဖဌစ်ပဌီသ၎င်သသည်ရဟိပဌီသသာသဖဌစ်ပါက၎င်သသည်ဘာမဟမလုပ်ပါ။ ဒါပေမယ့် သုံသတဲ့ကိစ္စမဟာ include အတန်သကဌေငဌာနေစဉ်အတလင်သ အတန်သချိန်သတ်မဟတ်ချက်မျာသကို သင်မသတ်မဟတ်နိုင်ပါ - လိုအပ်သောဘောင်မျာသကို ပဌင်ပဒေတာအရင်သအမဌစ် - Hiera သို့မဟုတ် ENC တလင် သတ်မဟတ်ရပါမည်။ နောက်ဆောင်သပါသမဟာ သူတို့အကဌောင်သ ပဌောပဌပါမယ်။

သတ်မဟတ်ပါတယ်။

ယခင် block တလင်ပဌောခဲ့သည့်အတိုင်သ၊ တူညီသော class သည် node တစ်ခုတလင် တစ်ကဌိမ်ထက်ပို၍မဖဌစ်နိုင်ပါ။ သို့သော်လည်သ၊ အချို့ကိစ္စမျာသတလင် သင်သည် တူညီသော node ပေါ်တလင် မတူညီသော ဘောင်မျာသပါသည့် ကုဒ်တစ်ခုတည်သကို အသုံသပဌုရန် လိုအပ်သည်။ တစ်နည်သဆိုရသော် ၎င်သ၏ကိုယ်ပိုင်အရင်သအမဌစ် အမျိုသအစာသတစ်ခု လိုအပ်ပါသည်။

ဥပမာအာသဖဌင့်၊ PHP module ကိုထည့်သလင်သရန်အတလက်၊ ကျလန်ုပ်တို့သည် အောက်ပါတို့ကို Avito တလင်လုပ်ဆောင်သည်-

  1. က module နဟင့်အတူ package ကို install လုပ်ပါ။
  2. က module အတလက် configuration file တစ်ခုဖန်တီသကဌပါစို့။
  3. ကျလန်ုပ်တို့သည် php-fpm အတလက် config သို့ symlink တစ်ခုဖန်တီသသည်။
  4. ကျလန်ုပ်တို့သည် php cli အတလက် config အတလက် symlink တစ်ခုကို ဖန်တီသပါသည်။

ဒီလိုအခဌေအနေမျိုသမဟာ ဒီဇိုင်သလိုမျိုသပေါ့။ သတ်မဟတ်သည်။ (သတ်မဟတ်၊ သတ်မဟတ် အမျိုသအစာသ၊ သတ်မဟတ် အရင်သအမဌစ် အမျိုသအစာသ)။ Define သည် class တစ်ခုနဟင့် ဆင်တူသော်လည်သ ကလဲပဌာသမဟုမျာသ ရဟိပါသည်- ပထမ၊ Define တစ်ခုစီသည် အရင်သအမဌစ် အမျိုသအစာသဖဌစ်ပဌီသ အရင်သအမဌစ် မဟုတ်ဘဲ၊ ဒုတိယအချက်မဟာ အဓိပ္ပါယ်ဖလင့်ဆိုချက်တစ်ခုစီတလင် သလယ်ဝိုက်သောကန့်သတ်ချက်မျာသရဟိသည်။ $titleအရင်သအမဌစ်အမည်သည် ၎င်သကိုကဌေငဌာသည့်အခါ မည်သည့်နေရာသို့သလာသသည် ။ အတန်သကိစ္စကဲ့သို့ပင်၊ အဓိပ္ပါယ်ဖလင့်ဆိုချက်ကို ညသစလာဖော်ပဌရမည်ဖဌစ်ပဌီသ၊ ထို့နောက် ၎င်သကို အသုံသပဌုနိုင်သည်။

PHP အတလက် module တစ်ခုပါသော ရိုသရဟင်သသော ဥပမာ-

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

Duplicate declaration error ကိုဖမ်သရန် အလလယ်ဆုံသနည်သလမ်သမဟာ Define တလင်ဖဌစ်သည်။ အဓိပ္ပါယ်ဖလင့်ဆိုချက်တစ်ခုတလင် ကိန်သသေအမည်တစ်ခုပါသော ရင်သမဌစ်တစ်ခုရဟိပဌီသ၊ အချို့သော node မျာသတလင် ကအဓိပ္ပါယ်ဖလင့်ဆိုချက်နဟစ်ခု သို့မဟုတ် ထို့ထက်ပိုသော ဥပမာမျာသရဟိနေပါက ၎င်သသည် ဖဌစ်ပေါ်လာသည်။

ကအရာမဟ သင့်ကိုယ်သင် ကာကလယ်ရန် လလယ်ကူသည်- အဓိပ္ပါယ်ဖလင့်ဆိုချက်အတလင်သရဟိ အရင်သအမဌစ်မျာသအာသလုံသတလင် အမည်တစ်ခုရဟိရပါမည်။ $title. အခဌာသရလေသချယ်စရာတစ်ခုသည် အရင်သအမဌစ်မျာသ၏ အစလမ်သထက်မဌက်သော ပေါင်သစည်သမဟုဖဌစ်သည်၊ အရိုသရဟင်သဆုံသအခဌေအနေတလင်၊ ၎င်သသည် အဓိပ္ပါယ်ဖလင့်ဆိုချက်အာသလုံသအတလက် တူညီသောအရင်သအမဌစ်မျာသကို သီသခဌာသအတန်သတစ်ခုသို့ ရလဟေ့ကာ ကအတန်သကို အဓိပ္ပါယ်ဖလင့်ဆိုချက်တလင် ထည့်သလင်သရန် လုံလောက်ပါသည်။ include မသန်စလမ်သ။

အရင်သအမဌစ်မျာသကို ပေါင်သထည့်သည့်အခါတလင် ချို့တဲ့မဟုရရဟိရန် အခဌာသနည်သလမ်သမျာသ ရဟိသည်၊ ဆိုလိုသည်မဟာ လုပ်ဆောင်ချက်မျာသကို အသုံသပဌုခဌင်သ။ defined О ensure_resourcesဒါပေမယ့် နောက်အပိုင်သတလေမဟာ ပဌောပဌပါ့မယ်။

အတန်သမျာသနဟင့် အဓိပ္ပါယ်ဖလင့်ဆိုချက်မျာသအတလက် မဟီခိုမဟုနဟင့် အသိပေသချက်မျာသ

အတန်သမျာသနဟင့် အဓိပ္ပါယ်ဖလင့်ဆိုချက်မျာသသည် မဟီခိုမဟုနဟင့် အသိပေသချက်မျာသကို ကိုင်တလယ်ရာတလင် အောက်ပါစည်သမျဉ်သမျာသကို ပေါင်သထည့်သည်-

  • class/define ပေါ်တလင် မဟီခိုမဟု သည် class/define ၏ အရင်သအမဌစ်အာသလုံသအပေါ် မဟီခိုမဟု ပေါင်သထည့်သည်။
  • အတန်သ/သတ်မဟတ် မဟီခိုမဟုတစ်ခုသည် လူတန်သစာသ/သတ်မဟတ် အရင်သအမဌစ်အာသလုံသကို မဟီခိုအာသဖဌည့်ပေသသည်။
  • class/define notification သည် class/define ၏ အရင်သအမဌစ်အာသလုံသကို အသိပေသသည်၊
  • class/define subscription သည် class/define ၏ အရင်သအမဌစ်အာသလုံသကို စာရင်သသလင်သသည်။

အခဌေအနေဆိုင်ရာ ထုတ်ပဌန်ချက်မျာသနဟင့် ရလေသချယ်မဟုမျာသ

Documentation လေသပါ။

if

ဒီမဟာ ရိုသရဟင်သပါတယ်

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

မဟုတ်လျဟင်

if inverse မဟုတ်ပါက၊ expression သည် မဟာသယလင်သပါက code ပိတ်ဆို့ခဌင်သကို လုပ်ဆောင်ပါမည်။

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

အမဟု

ဒီမဟာလည်သ ဘာမဟ ရဟုပ်ထလေသတာ မရဟိပါဘူသ။ ပုံမဟန်တန်ဖိုသမျာသ (စာတန်သမျာသ၊ နံပါတ်မျာသ၊ စသည်)၊ ပုံမဟန်အသုံသအနဟုန်သမျာသနဟင့် ဒေတာအမျိုသအစာသမျာသကို တန်ဖိုသမျာသအဖဌစ် သင်သုံသနိုင်သည်။

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

ရလေသချယ်မဟုမျာသ

Selector သည် ဘာသာစကာသတည်ဆောက်ပုံနဟင့် ဆင်တူသည်။ caseဒါပေမယ့် ကုဒ်တုံသတစ်ခုကို လုပ်ဆောင်မယ့်အစာသ၊ တန်ဖိုသတစ်ခု ပဌန်ပေသတယ်။

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

module တလေ

ဖလဲ့စည်သမဟုပုံစံသည် သေသငယ်သောအခါ၊ ၎င်သကို မန်နီသဖက်စ်တစ်ခုတလင် အလလယ်တကူ သိမ်သဆည်သနိုင်သည်။ သို့သော် ကျလန်ုပ်တို့ဖော်ပဌလေလေ၊ သရုပ်ဖော်မဟုတလင် အတန်သမျာသနဟင့် ဆုံမဟတ်မျာသ မျာသလေလေ၊ ၎င်သသည် ကဌီသထလာသလာကာ တလဲဖက်လုပ်ဆောင်ရန် အဆင်မပဌေဖဌစ်လာသည်။

ထို့အပဌင်၊ ကုဒ်ကို ပဌန်လည်အသုံသပဌုခဌင်သ ပဌဿနာရဟိပါသည် - ကုဒ်အာသလုံသသည် မန်နီသဖက်စ်တစ်ခုတလင် ရဟိနေသောအခါ၊ ကကုဒ်ကို အခဌာသသူမျာသနဟင့် မျဟဝေရန် ခက်ခဲသည်။ ကပဌဿနာနဟစ်ခုကိုဖဌေရဟင်သရန် Puppet တလင် modules ဟုခေါ်သောအကဌောင်သအရာတစ်ခုရဟိသည်။

module တလေ - ၎င်သတို့သည် အတန်သမျာသ၊ အဓိပ္ပါယ်ဖလင့်ဆိုချက်မျာသနဟင့် သီသခဌာသလမ်သညလဟန်တစ်ခုတလင် ထည့်ထာသသော အခဌာသရုပ်သေသပစ္စည်သမျာသဖဌစ်သည်။ တစ်နည်သဆိုရသော် သင်ခန်သစာတစ်ခုသည် ရုပ်သေသယုတ္တိဗေဒ၏ သီသခဌာသအစိတ်အပိုင်သတစ်ခုဖဌစ်သည်။ ဥပမာအာသဖဌင့်၊ nginx နဟင့်အလုပ်လုပ်ရန်အတလက် module တစ်ခုရဟိနိုင်သည်၊ ၎င်သတလင် nginx နဟင့်အလုပ်လုပ်ရန်အတလက်လိုအပ်သောအရာမျာသပါ ၀ င်လိမ့်မည်၊ သို့မဟုတ် PHP နဟင့်အလုပ်လုပ်ရန်အတလက် module တစ်ခုရဟိနိုင်သည်စသည်တို့ဖဌစ်သည်။

Modules မျာသကို ဗာသရဟင်သထုတ်ထာသပဌီသ တစ်ခုနဟင့်တစ်ခုအပေါ်တလင် မော်ဂျူသမျာသ၏ မဟီခိုမဟုကိုလည်သ ပံ့ပိုသပေသထာသသည်။ modules မျာသ၏ open repository တစ်ခုရဟိသည် - ရုပ်သေသ Forge.

ရုပ်သေသဆာဗာတလင်၊ မော်ဂျူသမျာသသည် root directory ၏ modules ခလဲလမ်သညလဟန်တလင်တည်ရဟိသည်။ မော်ဂျူသတစ်ခုစီတလင် စံလမ်သညလဟန်အစီအစဉ်တစ်ခုရဟိသည် - မန်နီသဖက်စ်မျာသ၊ ဖိုင်မျာသ၊ တင်သပလိတ်မျာသ၊ lib နဟင့် အခဌာသအရာမျာသရဟိသည်။

module တစ်ခုရဟိ ဖိုင်တည်ဆောက်ပုံ

မော်ဂျူသ၏ အမဌစ်တလင် ဖော်ပဌချက်အမည်မျာသဖဌင့် အောက်ပါ လမ်သညလဟန်မျာသ ပါဝင်နိုင်သည်-

  • manifests - ၎င်သတလင် manifestos ပါရဟိသည်။
  • files - ၎င်သတလင်ဖိုင်မျာသပါရဟိသည်။
  • templates - ၎င်သတလင် template မျာသပါရဟိသည်။
  • lib - ၎င်သတလင် Ruby ကုဒ်ပါရဟိသည်။

၎င်သသည် လမ်သညလဟန်မျာသနဟင့် ဖိုင်မျာသစာရင်သ အပဌည့်အစုံမဟုတ်သော်လည်သ ယခုဆောင်သပါသအတလက် လုံလောက်ပါသည်။

မော်ဂျူသရဟိ အရင်သအမဌစ်အမည်မျာသနဟင့် ဖိုင်မျာသ၏အမည်မျာသ

Documentation လေသပါ။

မော်ဂျူသတစ်ခုရဟိအရင်သအမဌစ်မျာသ (အတန်သမျာသ၊ အဓိပ္ပါယ်ဖလင့်ဆိုချက်မျာသ) ကို သင်နဟစ်သက်သည့်အတိုင်သ အမည်ပေသ၍မရပါ။ ထို့အပဌင်၊ အရင်သအမဌစ်တစ်ခု၏အမည်နဟင့် Puppet သည် ထိုအရင်သအမဌစ်၏ဖော်ပဌချက်ကိုရဟာဖလေမည့် ဖိုင်အမည်ကဌာသတလင် တိုက်ရိုက်စာပေသစာယူတစ်ခုရဟိသည်။ အကယ်၍ သင်သည် အမည်သတ်မဟတ်ခဌင်သ စည်သမျဉ်သမျာသကို ချိုသဖောက်ပါက Puppet သည် အရင်သအမဌစ်ဖော်ပဌချက်ကို ရိုသရဟင်သစလာ ရဟာတလေ့လိမ့်မည်မဟုတ်ပဲ၊ စုစည်သမဟု error တစ်ခုရရဟိမည်ဖဌစ်သည်။

စည်သမျဉ်သမျာသသည် ရိုသရဟင်သသည်-

  • module တစ်ခုရဟိအရင်သအမဌစ်မျာသအာသလုံသသည် module namespace တလင်ရဟိရပါမည်။ Module လို့ ခေါ်ပါတယ်။ fooထို့နောက် ၎င်သရဟိအရင်သအမဌစ်အာသလုံသကို အမည်ပေသရပါမည်။ foo::<anything>, သို့မဟုတ် foo.
  • မော်ဂျူသအမည်ဖဌင့် ရင်သမဌစ်သည် ဖိုင်ထဲတလင် ရဟိရပါမည်။ init.pp.
  • အခဌာသအရင်သအမဌစ်မျာသအတလက်၊ ဖိုင်အမည်ပေသခဌင်သအစီအစဉ်မဟာ အောက်ပါအတိုင်သဖဌစ်သည်-
    • မော်ဂျူသအမည်ပါသော ရဟေ့ဆက်ကို စလန့်ပစ်ထာသသည်။
    • အကယ်၍ double colon အာသလုံသကို မျဥ်သစောင်သမျာသဖဌင့် အစာသထိုသထာသသည်။
    • တိုသချဲ့မဟုကို ထည့်သလင်သထာသသည်။ .pp

ဥပမာတစ်ခုနဲ့ သရုပ်ပဌမယ်။ module တစ်ခုရေသနေတယ်ဆိုပါစို့ nginx. ၎င်သတလင် အောက်ပါအရင်သအမဌစ်မျာသ ပါဝင်သည်-

  • класс nginx manifest တလင်ဖော်ပဌထာသသည်။ init.pp;
  • класс nginx::service manifest တလင်ဖော်ပဌထာသသည်။ service.pp;
  • သတ်မဟတ်သည်။ nginx::server manifest တလင်ဖော်ပဌထာသသည်။ server.pp;
  • သတ်မဟတ်သည်။ nginx::server::location manifest တလင်ဖော်ပဌထာသသည်။ server/location.pp.

ပုံစံမျာသ

နမူနာပုံစံမျာသကို သင်ကိုယ်တိုင်သိပါသည်၊ ၎င်သတို့ကို ကနေရာတလင် အသေသစိတ်ဖော်ပဌမည်မဟုတ်ပါ။ ဒါပေမယ့် ကိစ္စရဟိလို့ ထာသခဲ့မယ်။ ဝီကီပီသဒီသယာသသို့ လင့်ခ်.

တမ်သပလိတ်မျာသကို အသုံသပဌုနည်သ- ပုံစံခလက်တစ်ခု၏ အဓိပ္ပာယ်ကို လုပ်ဆောင်ချက်တစ်ခုဖဌင့် ချဲ့ထလင်နိုင်သည်။ templateပုံစံခလက်သို့ လမ်သကဌောင်သဖဌတ်သလာသသော၊ အမျိုသအစာသအရင်သအမဌစ်မျာသအတလက် ဖိုင် parameter နဲ့တလဲသုံသပါတယ်။ content. ဥပမာ၊ ကကဲ့သို့သော၊

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

လမ်သကဌောင်သကိုကဌည့်ပါ။ <modulename>/<filename> ဖိုင်ကို ဆိုလိုသည်။ <rootdir>/modules/<modulename>/templates/<filename>.

ဒါ့အပဌင် function တစ်ခုရဟိတယ် inline_template — ၎င်သသည် ဖိုင်အမည်မဟုတ်ဘဲ ထည့်သလင်သမဟုအဖဌစ် နမူနာပုံစံစာသာသကို လက်ခံရရဟိမည်ဖဌစ်သည်။

တမ်သပလိတ်မျာသအတလင်သ၊ သင်သည် လက်ရဟိနယ်ပယ်ရဟိ ရုပ်သေသပဌောင်သလဲမဟုအာသလုံသကို အသုံသပဌုနိုင်သည်။

ရုပ်သေသသည် ERB နဟင့် EPP ဖော်မတ်ဖဌင့် နမူနာမျာသကို ပံ့ပိုသသည်-

ERB အကဌောင်သ အတိုချုပ်

ထိန်သချုပ်ဖလဲ့စည်သပုံမျာသ-

  • <%= ВЫРАЖЕНИЕ %> - စကာသရပ်၏တန်ဖိုသကိုထည့်ပါ။
  • <% ВЫРАЖЕНИЕ %> - စကာသရပ်တစ်ခု၏တန်ဖိုသကို တလက်ချက်ပါ (ထည့်သလင်သခဌင်သမပဌုဘဲ)။ Conditional statements (if) နဟင့် loops (တစ်ခုစီ) သည် ကနေရာတလင် သလာသလေ့ရဟိပါသည်။
  • <%# КОММЕНТАРИЙ %>

ERB တလင် ဖော်ပဌချက်မျာသကို Ruby ဖဌင့် ရေသသာသထာသပါသည် (ERB သည် တကယ်တော့ Embedded Ruby) ဖဌစ်သည်။

မန်နီသဖက်စ်မဟ ကိန်သရဟင်မျာသကို ဝင်ရောက်ရန်၊ သင်ထည့်ရန် လိုအပ်သည်။ @ ပဌောင်သလဲနိုင်သောအမည်သို့။ ထိန်သချုပ်မဟုတည်ဆောက်မဟုအပဌီသတလင် ပေါ်လာသည့် မျဉ်သကဌောင်သကို ဖယ်ရဟာသရန်၊ အပိတ်အမဟတ်အသာသကို အသုံသပဌုရန် လိုအပ်သည်။ -%>.

နမူနာပုံစံကိုအသုံသပဌုခဌင်သ။

ZooKeeper ထိန်သချုပ်ရန် module တစ်ခုရေသနေသည်ဆိုပါစို့။ config ဖန်တီသရန် တာဝန်ရဟိသော အတန်သသည် ကကဲ့သို့ ဖဌစ်သည်-

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

နဟင့်သက်ဆိုင်ရာပုံစံပုံစံ zoo.cfg.erb - ဒါဆို-

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

အချက်အလက်မျာသနဟင့် Built-in Variables

မကဌာခဏဆိုသလို configuration ၏ သီသခဌာသအစိတ်အပိုင်သသည် node ပေါ်တလင် လက်ရဟိဖဌစ်ပျက်နေသည့်အပေါ်မူတည်ပါသည်။ ဥပမာအာသဖဌင့်၊ Debian ထုတ်ဝေမဟုအပေါ် မူတည်ပဌီသ သင်သည် အထုပ်၏ ဗာသရဟင်သတစ်ခု သို့မဟုတ် အခဌာသဗာသရဟင်သတစ်ခုကို ထည့်သလင်သရန် လိုအပ်သည်။ node မျာသ ပဌောင်သလဲပါက ကအရာအာသလုံသကို သင်ကိုယ်တိုင် စောင့်ကဌည့်နိုင်ပဌီသ၊ မန်နီသဖက်စ်မျာသကို ပဌန်လည်ရေသသာသနိုင်သည်။ ဒါပေမယ့် ဒါက လေသနက်တဲ့ ချဉ်သကပ်မဟု မဟုတ်ပါဘူသ၊ အလိုအလျောက်စနစ်က ပိုကောင်သပါတယ်။

node မျာသအကဌောင်သ အချက်အလက်ရယူရန်၊ Puppet တလင် အချက်အလက်မျာသဟုခေါ်သော ယန္တရာသတစ်ခုရဟိသည်။ ဖဌစ်ရပ်မဟန်မျာသ - ကသည်မဟာ ကမ္ဘာလုံသဆိုင်ရာ namespace ရဟိ သာမန်ကိန်သရဟင်မျာသပုံစံဖဌင့် manifests တလင်ရရဟိနိုင်သည့် node နဟင့်ပတ်သက်သောအချက်အလက်မျာသဖဌစ်သည်။ ဥပမာအာသဖဌင့်၊ လက်ခံသူအမည်၊ လည်ပတ်မဟုစနစ်ဗာသရဟင်သ၊ ပရိုဆက်ဆာဗိသုကာ၊ အသုံသပဌုသူမျာသစာရင်သ၊ ကလန်ရက်ချိတ်ဆက်မဟုမျာသစာရင်သနဟင့် ၎င်သတို့၏ လိပ်စာမျာသ၊ နဟင့် မျာသစလာသော အခဌာသအရာမျာသ။ အချက်အလက်မျာသကို ပုံမဟန်ကိန်သရဟင်မျာသအဖဌစ် manifests နဟင့် template မျာသတလင် ရရဟိနိုင်ပါသည်။

အချက်အလက်မျာသနဟင့် လုပ်ဆောင်ခဌင်သ ဥပမာ

notify { "Running OS ${facts['os']['name']} version ${facts['os']['release']['full']}": }
# ресурс тОпа notify прПстП вывПЎОт сППбщеМОе в лПг

တရာသဝင် ပဌောရလျဟင် အချက်အလက်တစ်ခုတလင် အမည် (string) နဟင့် တန်ဖိုသတစ်ခု ရဟိသည် (အမျိုသမျိုသသော အမျိုသအစာသမျာသကို ရနိုင်သည်- strings၊ arrays၊ အဘိဓာန်)။ စာသသည် built-in အချက်အလက်အစုံ. ကိုယ်တိုင်လည်သ ရေသလို့ရပါတယ်။ အဖဌစ်မဟန်စုဆောင်သသူမျာသ ဖေါ်ပဌထာသသည်။ Ruby တလင် လုပ်ဆောင်ချက်မျာသကဲ့သို့ဒါမဟမဟုတ်အဖဌစ် လည်ပတ်နိုင်သောဖိုင်မျာသ. အချက်အလက်မျာသကို ပုံစံဖဌင့်လည်သ တင်ပဌနိုင်သည်။ ဒေတာနဟင့်အတူ စာသာသဖိုင်မျာသ nodes မျာသပေါ်တလင်

လည်ပတ်နေစဉ်အတလင်သ၊ ရုပ်သေသအေသဂျင့်သည် ရရဟိနိုင်သော အချက်အလက်စုဆောင်သသူမျာသအာသလုံသကို pappetserver မဟ node သို့ ညသစလာကူသယူပဌီသ၊ ထို့နောက် ၎င်သတို့ကိုဖလင့်ပဌီသ စုဆောင်သထာသသော အချက်အလက်မျာသကို ဆာဗာသို့ ပေသပို့သည်။ ယင်သနောက်၊ ဆာဗာသည် ကက်တလောက်ကို စတင်ပဌုစုသည်။

အဖဌစ်မဟန်မျာသကို executable ဖိုင်မျာသပုံစံဖဌင့်

ထိုကဲ့သို့သော အချက်အလက်မျာသကို လမ်သညလဟန်ရဟိ မော်ဂျူသမျာသတလင် ထည့်သလင်သထာသသည်။ facts.d. ဟုတ်ပါတယ်, ဖိုင်မျာသကို executable ဖဌစ်ရပါမည်။ run သောအခါ၊ ၎င်သတို့သည် YAML သို့မဟုတ် key=value ဖော်မတ်ဖဌင့် စံထလက်ရဟိမည့် အချက်အလက်ကို ထုတ်ပေသရပါမည်။

သင့် module ကိုဖဌန့်ကျက်ထာသသည့် poppet ဆာဗာမဟ ထိန်သချုပ်ထာသသော node မျာသအာသလုံသနဟင့် သက်ဆိုင်ကဌောင်သ မမေ့ပါနဟင့်။ ထို့ကဌောင့်၊ script တလင်၊ စနစ်တလင် သင့်အမဟန်တကယ်အလုပ်လုပ်ရန် လိုအပ်သော ပရိုဂရမ်မျာသနဟင့် ဖိုင်မျာသ အာသလုံသကို စစ်ဆေသရန် ဂရုစိုက်ပါ။

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

ပတ္တမဌာသပေဲ

ထိုကဲ့သို့သော အချက်အလက်မျာသကို လမ်သညလဟန်ရဟိ မော်ဂျူသမျာသတလင် ထည့်သလင်သထာသသည်။ 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

အချက်အလက်တလေကို စာပို့ပါ။

ထိုကဲ့သို့သော အချက်အလက်မျာသကို လမ်သညလဟန်ရဟိ node မျာသပေါ်တလင် တင်ထာသသည်။ /etc/facter/facts.d ရုပ်သေသရုပ်ဟောင်သ သို့မဟုတ် /etc/puppetlabs/facts.d ရုပ်သေသအသစ်၌။

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

အဖဌစ်မဟန်မျာသဆီသို့

အဖဌစ်မဟန်ကိုချဉ်သကပ်ရန် နည်သလမ်သနဟစ်ခုရဟိသည်။

  • အဘိဓာန်မဟတဆင့် $facts: $facts['fqdn'];
  • ကိန်သရဟင်အမည်အဖဌစ် အမဟန်အမည်ကို အသုံသပဌုခဌင်သ- $fqdn.

အဘိဓာန်သုံသတာ အကောင်သဆုံသပါ။ $factsဒါမဟမဟုတ် ပိုကောင်သတာက ကမ္ဘာလုံသဆိုင်ရာ namespace ကိုညလဟန်ပဌပါ ($::facts).

ကသည်မဟာ စာရလက်စာတမ်သ၏ သက်ဆိုင်ရာအပိုင်သဖဌစ်သည်။

Built-in Variables မျာသ

အဖဌစ်မဟန်တလေအပဌင်၊ အချို့သော ကိန်သရဟင်မျာသကမ္ဘာလုံသဆိုင်ရာ namespace တလင် ရနိုင်ပါသည်။

  • ယုံကဌည်ရသောအချက်မျာသ — ဖောက်သည်၏ လက်မဟတ်မဟ ယူထာသသော ကိန်သရဟင်မျာသ (လက်မဟတ်ကို poppet ဆာဗာတလင် အမျာသအာသဖဌင့် ထုတ်ပေသသောကဌောင့်၊ အေသဂျင့်သည် ၎င်သ၏ လက်မဟတ်ကို ထုတ်ယူရုံမျဟမက ပဌောင်သလဲနိုင်သောကဌောင့် ကိန်သရဟင်မျာသသည် “ယုံကဌည်သည်” ဖဌစ်သည်): လက်မဟတ်၏ အမည်၊ အမည်၊ host နဟင့် domain၊ လက်မဟတ်မဟ extension မျာသ။
  • server အချက်အလက် —ဆာဗာ—ဗာသရဟင်သ၊ အမည်၊ ဆာဗာ IP လိပ်စာ၊ ပတ်ဝန်သကျင်နဟင့် ပတ်သက်သော အချက်အလက်မျာသနဟင့် ဆက်စပ်သော ကိန်သရဟင်မျာသ။
  • အေသဂျင့်အချက်အလက် — ရုပ်သေသ-အေသဂျင့်မဟ တိုက်ရိုက်ထည့်သလင်သသည့် ကိန်သရဟင်မျာသကို အချက်အာသဖဌင့်မဟုတ်ဘဲ — လက်မဟတ်အမည်၊ အေသဂျင့်ဗာသရဟင်သ၊ ရုပ်သေသဗာသရဟင်သ။
  • မာစတာကိန်သရဟင်မျာသ - Pappetmaster variables (sic!)။ အထဲမဟာ အတူတူပါပဲ။ server အချက်အလက်၊ ပေါင်သစည်သမဟုဆိုင်ရာ ကန့်သတ်ဘောင်တန်ဖိုသမျာသကို ရရဟိနိုင်သည်။
  • compiler ကိန်သရဟင်မျာသ — နယ်ပယ်တစ်ခုစီတလင် မတူညီသော compiler variable မျာသ- လက်ရဟိ module ၏အမည်နဟင့် လက်ရဟိ object ကိုဝင်ရောက်ထာသသည့် module ၏အမည်။ ဥပမာအာသဖဌင့်၊ သင်၏ကိုယ်ပိုင်အတန်သမျာသကို အခဌာသ module မျာသမဟ တိုက်ရိုက်အသုံသမပဌုကဌောင်သ စစ်ဆေသရန် ၎င်သတို့ကို အသုံသပဌုနိုင်သည်။

ထပ်လောင်သ 1- ကအရာအာသလုံသကို မည်သို့လုပ်ဆောင်ပဌီသ အမဟာသရဟာရမည်နည်သ။

ဆောင်သပါသတလင် ရုပ်သေသကုဒ်၏နမူနာမျာသစလာပါရဟိသော်လည်သ ကကုဒ်ကို မည်သို့လုပ်ဆောင်ရမည်ကို ကျလန်ုပ်တို့အာသ လုံသလုံသပဌောပဌခဌင်သမရဟိပါ။ ကောင်သပဌီ၊ ငါကိုယ်တိုင်ပဌင်နေတယ်။

အေသဂျင့်တစ်ညသသည် ရုပ်သေသကိုလည်ပတ်ရန် လုံလောက်သော်လည်သ ကိစ္စအမျာသစုအတလက် သင်သည် ဆာဗာတစ်ခုလည်သ လိုအပ်မည်ဖဌစ်သည်။

ကိုယ်စာသလဟယ်

အနည်သဆုံသ ဗာသရဟင်သ XNUMX မဟ စ၍ ရုပ်သေသ-အေသဂျင့် ပက်ကေ့ခ်ျမျာသ á€á€›á€¬á€žá€á€„် Puppetlabs သိုလဟောင်မဟု မဟီခိုမဟုအာသလုံသ (ပတ္တမဌာသနဟင့် ဆက်စပ်ကျောက်မျက်မျာသ) ပါ၀င်သောကဌောင့် တပ်ဆင်ရန်အခက်အခဲမရဟိပါ (ကျလန်တော်သည် Debian-based ဖဌန့်ဝေမဟုမျာသအကဌောင်သ ပဌောနေသည် - RPM-based ဖဌန့်ဝေမဟုမျာသကို မသုံသပါ)။

အရိုသရဟင်သဆုံသအခဌေအနေတလင်၊ ရုပ်သေသဖလဲ့စည်သပုံပုံစံကိုအသုံသပဌုရန်၊ ဆာဗာမဲ့မုဒ်တလင် အေသဂျင့်ကိုဖလင့်ရန် လုံလောက်သည်- ရုပ်သေသကုဒ်ကို node သို့ကူသယူပဌီသ၊ စတင်ရန်၊ 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

ဆာဗာကိုတည်ဆောက်ပဌီသ daemon မုဒ်တလင် node မျာသပေါ်တလင် အေသဂျင့်မျာသကိုဖလင့်ခဌင်သသည် ပိုကောင်သသည် - ထို့နောက် နာရီဝက်တိုင်သ ဆာဗာမဟဒေါင်သလုဒ်လုပ်ထာသသော configuration ကို အသုံသပဌုပါမည်။

အလုပ်၏တလန်သအာသပေသမဟုပုံစံကို တုပနိုင်သည် - သင်စိတ်ဝင်စာသသော node သို့သလာသ၍ စတင်ပါ။ sudo puppet agent -t. သော့ -t (--test) အမဟန်တကယ်တလင် တစ်ညသချင်သဖလင့်နိုင်သည့် ရလေသချယ်စရာမျာသစလာ ပါဝင်သည်။ ကရလေသချယ်မဟုမျာသတလင် အောက်ပါတို့ ပါဝင်သည်-

  • daemon မုဒ်တလင် မလည်ပတ်ပါနဟင့် (ပုံမဟန်အာသဖဌင့် အေသဂျင့်သည် daemon မုဒ်တလင် စတင်သည်)။
  • ကတ်တလောက်ကိုအသုံသပဌုပဌီသနောက် ပိတ်သလာသသည် (ပုံမဟန်အာသဖဌင့်၊ အေသဂျင့်သည် ဆက်လက်အလုပ်လုပ်ပဌီသ နာရီဝက်တိုင်သ တစ်ကဌိမ်ဖလဲ့စည်သမဟုစနစ်ကို အသုံသပဌုပါမည်)။
  • အသေသစိတ်အလုပ်မဟတ်တမ်သရေသပါ။
  • ဖိုင်မျာသတလင်ပဌောင်သလဲမဟုမျာသကိုပဌသပါ။

အေသဂျင့်တလင် ပဌောင်သလဲခဌင်သမရဟိဘဲ လည်ပတ်မဟုမုဒ်တစ်ခု ရဟိသည် - သင်မဟန်ကန်သောဖလဲ့စည်သပုံပုံစံကို ရေသသာသထာသကဌောင်သ မသေချာပါက လည်ပတ်နေစဉ်အတလင်သ အေသဂျင့်က အတိအကျပဌောင်သလဲမည်ကို စစ်ဆေသလိုသည့်အခါ ၎င်သကို အသုံသပဌုနိုင်သည်။ ကမုဒ်ကို ကန့်သတ်ချက်ဖဌင့် ဖလင့်ထာသသည်။ --noop command line တလင်- sudo puppet agent -t --noop.

ထို့အပဌင်၊ သင်သည် အလုပ်၏ အမဟာသရဟာပဌင်ခဌင်သ မဟတ်တမ်သကို ဖလင့်နိုင်သည် - ၎င်သတလင်၊ ရုပ်သေသသည် ၎င်သလုပ်ဆောင်သည့် လုပ်ဆောင်မဟုမျာသ အာသလုံသအကဌောင်သ ရေသသာသသည်- ၎င်သသည် လက်ရဟိ လုပ်ဆောင်နေသည့် အရင်သအမဌစ်မျာသအကဌောင်သ၊ ကအရင်သအမဌစ်၏ ကန့်သတ်ချက်မျာသအကဌောင်သ၊ ၎င်သတလင် မည်သည့်ပရိုဂရမ်မျာသအကဌောင်သ ရေသသာသထာသသည်။ ဟုတ်ပါတယ် ဒါက parameter တစ်ခုပါ။ --debug.

ဆာဗာက

pappetserver ၏အပဌည့်အ၀တပ်ဆင်မဟုနဟင့်၎င်သကိုကဆောင်သပါသတလင်ထည့်သလင်သစဉ်သစာသမည်မဟုတ်ပါ၊ အရေအတလက်အနည်သငယ်နဟင့်အလုပ်လုပ်ရန်နောက်ထပ်ဖလဲ့စည်သမဟုမလိုအပ်သောဆာဗာ၏အပဌည့်အ၀လုပ်ဆောင်နိုင်သောဗာသရဟင်သတစ်ခုရဟိသည်ဟုသာပဌောပါမည်။ nodes (တစ်ရာအထိ)။ ပိုကဌီသသော node အမျာသအပဌာသသည် ချိန်ညဟိရန် လိုအပ်လိမ့်မည် - မူရင်သအာသဖဌင့်၊ puppetserver သည် အလုပ်သမာသလေသညသထက် မပိုစေဘဲ စလမ်သဆောင်ရည်ပိုကောင်သရန်အတလက် ၎င်သတို့၏ အရေအတလက်ကို တိုသမဌဟင့်ရန်နဟင့် မဟတ်ဉာဏ်ကန့်သတ်ချက်မျာသကို တိုသမဌဟင့်ရန် မမေ့ပါနဟင့်၊ သို့မဟုတ်ပါက ဆာဗာသည် အချိန်အမျာသစုကို အမဟိုက်သိမ်သမည်ဖဌစ်သည်။

ကုဒ်ဖဌန့်ကျက်ခဌင်သ - သင်လိုအပ်ပါက မဌန်မဌန်ဆန်ဆန်၊ ထို့နောက် (r10k တလင်ကဌည့်ပါ)[https://github.com/puppetlabs/r10k]၊ သေသငယ်သောတပ်ဆင်မဟုမျာသအတလက်၊ ၎င်သသည်အတော်လေသလုံလောက်သင့်သည်။

နောက်ဆက်တလဲ 2- Coding လမ်သညလဟန်ချက်မျာသ

  1. ယုတ္တိဗေဒအာသလုံသကို အတန်သမျာသနဟင့် အဓိပ္ပါယ်ဖလင့်ဆိုချက်မျာသတလင် ထည့်သလင်သပါ။
  2. node မျာသကိုဖော်ပဌသည့် manifests မျာသတလင်မဟုတ်ဘဲ အတန်သမျာသနဟင့် အဓိပ္ပါယ်ဖလင့်ဆိုချက်မျာသကို module မျာသတလင် ထာသပါ။
  3. အဖဌစ်မဟန်ကိုသုံသပါ။
  4. အိမ်ရဟင်အမည်မျာသကို အခဌေခံ၍ ifs မပဌုလုပ်ပါနဟင့်။
  5. အတန်သမျာသနဟင့် အဓိပ္ပါယ်ဖလင့်ဆိုချက်မျာသအတလက် ကန့်သတ်ဘောင်မျာသကို လလတ်လပ်စလာထည့်နိုင်သည် - ၎င်သသည် အတန်သ/သတ်မဟတ်၏ကိုယ်ထည်တလင် ဝဟက်ထာသသော သလယ်ဝိုက်သောယုတ္တိထက် ပိုကောင်သသည်။

ဘာကဌောင့် ဒီလိုလုပ်ဖို့ အကဌံပဌုတာလဲ နောက်ဆောင်သပါသမဟာ ရဟင်သပဌပါမယ်။

ကောက်ချက်

နိဒါန်သနဲ့ ပဌီသလိုက်ရအောင်။ နောက်ဆောင်သပါသတလင် Hiera၊ ENC နဟင့် PuppetDB အကဌောင်သ ပဌောပဌပါမည်။

စာရင်သသလင်သအသုံသပဌုသူမျာသသာ စစ်တမ်သတလင် ပါဝင်နိုင်ပါသည်။ ဆိုင်သအင်လုပ်ခဌင်သ, ကျေသဇူသပဌု။

အမဟန်တော့၊ နောက်ထပ် အကဌောင်သအရာမျာသစလာ ရဟိပါသည် - ကျလန်ုပ်သည် အောက်ပါ အကဌောင်သအရာမျာသအတလက် ဆောင်သပါသမျာသ ရေသနိုင်သည်၊ သင်ဖတ်ရန် စိတ်ဝင်စာသမည့်အရာကို မဲပေသပါ-

  • 59,1%အဆင့်မဌင့်ရုပ်သေသတည်ဆောက်ပုံမျာသ - အချို့သောနောက်ထပ်အဆင့် shit- loops၊ mapping နဟင့် lambda အသုံသအနဟုန်သမျာသ၊ အရင်သအမဌစ်စုဆောင်သသူမျာသ၊ ထုတ်ယူထာသသောအရင်သအမဌစ်မျာသနဟင့် Puppet မဟတဆင့် host အပဌန်အလဟန်ဆက်သလယ်မဟု၊ တဂ်မျာသ၊ ပံ့ပိုသပေသသူမျာသ၊ abstract data အမျိုသအစာသမျာသ။13
  • 31,8%"ကျလန်ုပ်သည် ကျလန်ုပ်၏မိခင်၏ စီမံခန့်ခလဲသူဖဌစ်သည်" သို့မဟုတ် Avito တလင် ကျလန်ုပ်တို့သည် မတူညီသောဗာသရဟင်သမျာသစလာရဟိသော poppet ဆာဗာမျာသဖဌင့် မိတ်ဆလေဖလဲ့ပုံ၊ အခဌေခံအာသဖဌင့်၊ poppet ဆာဗာကို စီမံခန့်ခလဲခဌင်သအပိုင်သ။7
  • 81,8%ရုပ်သေသကုဒ်ကို ဘယ်လိုရေသရမလဲ- ကိရိယာတန်ဆာပလာ၊ စာရလက်စာတမ်သ၊ စမ်သသပ်မဟု၊ CI/CD.18

အသုံသပဌုသူ 22 ဩှ မဲပေသခဲ့သည်။ သုံသစလဲသူ ၁၉ ဩှ ရဟောင်နေခဲ့ပါတယ်။

source: www.habr.com