ညလဟန်ကဌာသချက်မျာသ- Ansible အခန်သကဏ္ဍမျာသကို စမ်သသပ်နည်သနဟင့် ထုတ်လုပ်ခဌင်သမပဌုမီ ပဌဿနာမျာသကို ရဟာဖလေပါ။

မင်္ဂလာပါလူတိုင်သအတလက်!

ကျလန်ုပ်သည် ဟိုတယ်ဘလတ်ကင်ဝန်ဆောင်မဟုအတလက် DevOps အင်ဂျင်နီယာအဖဌစ် အလုပ်လုပ်ပါသည်။ Ostrovok.ru. ကဆောင်သပါသတလင် Ansible အခန်သကဏ္ဍမျာသကို စမ်သသပ်ရာတလင် ကျလန်ုပ်တို့၏ အတလေ့အကဌုံကို ပဌောပဌလိုပါသည်။

Ostrovok.ru တလင် ကျလန်ုပ်တို့သည် ansible ကို configuration manager အဖဌစ်အသုံသပဌုသည်။ မကဌာသေသမီက ကျလန်ုပ်တို့သည် အခန်သကဏ္ဍမျာသကို စမ်သသပ်ရန် လိုအပ်လာသော်လည်သ၊ ကအရာအတလက် ကိရိယာမျာသစလာမရဟိပါ - လူကဌိုက်အမျာသဆုံသ၊ ဖဌစ်ကောင်သဖဌစ်နိုင်သည်မဟာ Molecule framework ဖဌစ်သည့်အတလက်ကဌောင့် ၎င်သကို အသုံသပဌုရန် ဆုံသဖဌတ်ခဲ့သည်။ သို့သော် သူ့စာရလက်စာတမ်သမျာသသည် ချို့ယလင်သချက်မျာသစလာနဟင့်ပတ်သက်ပဌီသ နဟုတ်ဆိတ်နေခဲ့ပါသည်။ ရုရဟာသဘာသာဖဌင့် လုံလောက်သော အသေသစိတ်လမ်သညလဟန်ချက်ကို ကျလန်ုပ်တို့ ရဟာမတလေ့သောကဌောင့် ကဆောင်သပါသကို ရေသသာသရန် ဆုံသဖဌတ်ခဲ့သည်။

ညလဟန်ကဌာသချက်မျာသ- Ansible အခန်သကဏ္ဍမျာသကို စမ်သသပ်နည်သနဟင့် ထုတ်လုပ်ခဌင်သမပဌုမီ ပဌဿနာမျာသကို ရဟာဖလေပါ။

မော်လီကျူသ

မော်လီကျူသ — Ansible အခန်သကဏ္ဍမျာသကို စမ်သသပ်ရာတလင် ကူညီရန် မူဘောင်တစ်ခု။

ရိုသရဟင်သသောဖော်ပဌချက်- မော်လီကျူသသည် သင်သတ်မဟတ်ထာသသော ပလပ်ဖောင်သပေါ်တလင် စံနမူနာတစ်ခုကို ဖန်တီသသည် (cloud၊ virtual machine၊ container၊ အသေသစိတ်အချက်အလက်မျာသအတလက်၊ ကဏ္ဍကိုကဌည့်ပါ မောင်သသူ) ၎င်သပေါ်တလင် သင့်အခန်သကဏ္ဍကို လုပ်ဆောင်ပဌီသ စမ်သသပ်မဟုမျာသကို လုပ်ဆောင်ပဌီသ စံနမူနာကို ဖျက်ပါ။ အဆင့်တစ်ခုတလင် ချို့ယလင်သချက်ရဟိပါက၊ Molecule သည် ၎င်သနဟင့်ပတ်သက်ပဌီသ သင့်အာသ အသိပေသမည်ဖဌစ်သည်။

အခု ပို.

သီအိုရီ၏တစ်ဦသကနည်သနည်သ

Molecule ၏ အဓိကအကဌောင်သအရာနဟစ်ခု- Scenario နဟင့် Driver ကို သုံသသပ်ကဌည့်ကဌပါစို့။

မဌင်ကလင်သ

ဇာတ်ညလဟန်သတလင် မည်သည့်အရာ၊ မည်သည့်နေရာ၊ မည်သို့လုပ်ဆောင်မည် ဟူသော ဖော်ပဌချက်ပါရဟိသည်။ အခန်သကဏ္ဍတစ်ခုတလင် ဇာတ်ညလဟန်သမျာသစလာ ပါရဟိနိုင်ပဌီသ တစ်ခုစီသည် လမ်သကဌောင်သတစ်လျဟောက် လမ်သညလဟန်တစ်ခုဖဌစ်သည်။ <role>/molecule/<scenario>စမ်သသပ်မဟုအတလက် လိုအပ်သည့် လုပ်ဆောင်ချက်မျာသကို ဖော်ပဌချက်မျာသပါရဟိသည်။ ဇာတ်ညလဟန်သရဟိရမယ်။ defaultMolecule ကို အသုံသပဌု၍ အခန်သကဏ္ဍကို စတင်ပါက အလိုအလျောက် ဖန်တီသပေသမည်ဖဌစ်ပါသည်။ အောက်ပါ script မျာသ၏ အမည်မျာသသည် သင့်ဆုံသဖဌတ် ချက်တလင်ဖဌစ်သည်။

Script တစ်ခုတလင် စမ်သသပ်လုပ်ဆောင်မဟုမျာသ၏ အစီအစဥ်ကို ခေါ်သည်။ matrix၊ ပုံမဟန်အာသဖဌင့်၎င်သသည်ကကဲ့သို့ဖဌစ်သည်-

(ခဌေလဟမ်သမျာသကို အမဟတ်အသာသပဌုထာသသည်။ ?အသုံသပဌုသူမဟ သတ်မဟတ်ထာသခဌင်သမရဟိပါက မူရင်သအတိုင်သ ကျော်သလာသသည်)

  • lint - ပဌေသနေသော လိပ်ပဌာမျာသ။ ပုံသေ yamllint О flake8,
  • destroy - Molecule ၏နောက်ဆုံသထလက်ရဟိမဟုမဟဖဌစ်ရပ်မျာသကိုဖျက်ခဌင်သ (ကျန်ရဟိလျဟင်)၊
  • dependency? - စမ်သသပ်ထာသသောအခန်သကဏ္ဍ၏ ansible မဟီခိုမဟုကို ထည့်သလင်သခဌင်သ၊
  • syntax - အခန်သကဏ္ဍ syntax ကိုအသုံသပဌု၍ စစ်ဆေသခဌင်သ။ ansible-playbook --syntax-check,
  • create - ဥပမာတစ်ခုဖန်တီသခဌင်သ၊
  • prepare? - ဥပမာကိုပဌင်ဆင်; ဥပမာ python2 ကို စစ်ဆေသခဌင်သ/ထည့်သလင်သခဌင်သ။
  • converge - စမ်သသပ်ထာသသော playbook ကိုဖလင့်ခဌင်သ၊
  • idempotence - အစလမ်သထက်မဟုစမ်သသပ်မဟုအတလက် playbook ကို ပဌန်ဖလင့်ပါ၊
  • side_effect? - အခန်သကဏ္ဍနဟင့် တိုက်ရိုက်မသက်ဆိုင်သော်လည်သ စစ်ဆေသမဟုမျာသအတလက် လိုအပ်သော လုပ်ဆောင်ချက်မျာသ၊
  • verify - ရလဒ် configuration ကိုအသုံသပဌု၍ စမ်သသပ်မဟုမျာသ လုပ်ဆောင်နေသည်။ testinfra(မူရင်သ) /goss/inspec,
  • cleanup? - (ဗာသရဟင်သအသစ်တလင်) - အကဌမ်သဖျင်သအာသဖဌင့်ပဌောရလျဟင် Molecule ကဌောင့်ထိခိုက်သည့် ပဌင်ပအခဌေခံအဆောက်အအုံကို “သန့်ရဟင်သရေသ”၊
  • destroy - ဥပမာတစ်ခုကို ဖျက်ခဌင်သ။

ကအစီအစဉ်သည် အမဟုအမျာသစုကို အကျုံသဝင်သော်လည်သ လိုအပ်ပါက ပဌင်ဆင်နိုင်သည်။

အထက်ဖော်ပဌပါ အဆင့်တစ်ခုစီကို အသုံသပဌု၍ သီသခဌာသစီ လုပ်ဆောင်နိုင်သည်။ molecule <command>. သို့သော် ထိုကဲ့သို့သော cli command တစ်ခုစီအတလက် ၎င်သ၏ကိုယ်ပိုင်လုပ်ဆောင်မဟုမျာသ ဆက်တိုက်ရဟိနိုင်သည်ကို သင်နာသလည်ထာသသင့်သည်၊ ၎င်သကို run ခဌင်သဖဌင့် သင်ရဟာဖလေနိုင်သည်။ molecule matrix <command>. ဥပမာအာသဖဌင့် command ကို run သောအခါ converge (စမ်သသပ်ထာသသော ကစာသစာအုပ်ကို အသုံသပဌုနေသည်) အောက်ပါလုပ်ဆောင်ချက်မျာသကို လုပ်ဆောင်ပါမည်-

$ molecule matrix converge
...
└── default         # МазваМОе сцеМарОя
    ├── dependency  # устаМПвка завОсОЌПстей
    ├── create      # сПзЎаМОе ОМстаМса
    ├── prepare     # преЎМастрПйка ОМстаМса
    └── converge    # прПгПМ плейбука

ကလုပ်ဆောင်ချက်မျာသ၏ အတလဲလိုက်ကို တည်သဖဌတ်နိုင်ပါသည်။ စာရင်သထဲမဟ တစ်ခုခု ပဌီသသလာသပါက၊ ၎င်သကို ကျော်သလာသပါမည်။ လက်ရဟိအခဌေအနေအပဌင် instance config ကို Molecule directory တလင် သိမ်သဆည်သထာသသည်။ $TMPDIR/molecule/<role>/<scenario>.

အဆင့်မျာသနဟင့်အတူထည့်ပါ။ ? သင်အလိုရဟိသော လုပ်ဆောင်ချက်မျာသကို Ansible playbook ဖော်မတ်တလင် ဖော်ပဌနိုင်ပဌီသ အဆင့်အလိုက် ဖိုင်အမည်ကို ပဌုလုပ်နိုင်သည်- prepare.yml/side_effect.yml. က Molecule ဖိုင်မျာသကို script folder တလင်ရဟိရန်မျဟော်လင့်ပါ။

မောင်သသူ

ယာဉ်မောင်သသည် စမ်သသပ်မဟုမျာသအတလက် သာဓကမျာသကို ဖန်တီသသည့် အရာတစ်ခုဖဌစ်သည်။
Molecule တလင် အဆင်သင့်လုပ်ထာသသော နမူနာမျာသပါရဟိသည့် စံယာဉ်မောင်သမျာသစာရင်သမဟာ- Azure၊ Docker၊ EC2၊ GCE၊ LXC၊ LXD၊ OpenStack၊ Vagrant၊ Delegated။

ကိစ္စအမျာသစုတလင်၊ နမူနာမျာသသည် ဖိုင်မျာသဖဌစ်သည်။ create.yml О destroy.yml ဇာတ်ညလဟန်သကို ဖန်တီသခဌင်သနဟင့် ဖျက်ခဌင်သတို့ကို အသီသသီသဖော်ပဌသည့် script ဖိုင်တလဲတလင်၊
ခဌလင်သချက်မျာသသည် Docker နဟင့် Vagrant ဖဌစ်သည်၊ အဘယ်ကဌောင့်ဆိုသော် ၎င်သတို့၏ module မျာသနဟင့် အပဌန်အလဟန်ဆက်သလယ်မဟုမျာသသည် အထက်ပါဖိုင်မျာသမပါဘဲ ဖဌစ်ပေါ်နိုင်သည်။

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

မူရင်သဒရိုက်ဘာသည် Docker ဖဌစ်သည်။

အခု ဆက်ပဌီသ လေ့ကျင့်ပဌီသ အဲဒီမဟာ နောက်ထပ် အင်္ဂါရပ်တလေကို စဉ်သစာသကဌည့်ရအောင်။

စတင်

"hello world" အနေဖဌင့် ကျလန်ုပ်တို့သည် ရိုသရဟင်သသော nginx တပ်ဆင်မဟုအခန်သကဏ္ဍကို စမ်သသပ်ပါမည်။ docker ကို ဒရိုက်ဗာအဖဌစ် ရလေသကဌပါစို့ - အမျာသစုမဟာ ၎င်သကို ထည့်သလင်သထာသပဌီသပဌီ (ထို့ပဌင် docker သည် ပုံသေဒရိုက်ဗာဖဌစ်သည်)။

ပဌင်ဆင်ထာသ virtualenv ၎င်သတလင်ထည့်သလင်သပါ။ molecule:

> pip install virtualenv
> virtualenv -p `which python2` venv
> source venv/bin/activate
> pip install molecule docker  # molecule устаМПвОт ansible как завОсОЌПсть; docker Ўля Ўрайвера

နောက်တစ်ဆင့်မဟာ အခန်သကဏ္ဍအသစ်တစ်ခုကို စတင်ရန်ဖဌစ်သည်။
အခန်သကဏ္ဍအသစ်နဟင့် ဇာတ်ညလဟန်သအသစ်တစ်ခု၏ အစပဌုခဌင်သကို အမိန့်ကို အသုံသပဌု၍ လုပ်ဆောင်သည်။ molecule init <params>:

> molecule init role -r nginx
--> Initializing new role nginx...
Initialized role in <path>/nginx successfully.
> cd nginx
> tree -L 1
.
├── README.md
├── defaults
├── handlers
├── meta
├── molecule
├── tasks
└── vars

6 directories, 1 file

ရလဒ်မဟာ ပုံမဟန် ansible အခန်သကဏ္ဍတစ်ခုဖဌစ်သည်။ ထို့အပဌင်၊ Molecules CLI နဟင့် အပဌန်အလဟန်တုံ့ပဌန်မဟုအာသလုံသကို အခန်သကဏ္ဍ root မဟ ပဌုလုပ်ထာသသည်။

အခန်သကဏ္ဍလမ်သညလဟန်တလင် ဘာတလေပါလဲ ကဌည့်ရအောင်။

> tree molecule/default/
molecule/default/
├── Dockerfile.j2  # Jinja-шаблПМ Ўля Dockerfile
├── INSTALL.rst.   # НеЌМПгП ОМфПрЌацОО Пб устаМПвке завОсОЌПстей сцеМарОя
├── molecule.yml   # Ѐайл кПМфОгурацОО
├── playbook.yml   # Плейбук запуска рПлО
└── tests          # ДОректПрОя с тестаЌО стаЎОО verify
    └── test_default.py

1 directory, 6 files

Config ကိုကဌည့်ရအောင် molecule/default/molecule.yml (ကျလန်ုပ်တို့သည် docker ပုံကိုသာ အစာသထိုသပါမည်)။

---
dependency:
  name: galaxy
driver:
  name: docker
lint:
  name: yamllint
platforms:
  - name: instance
    image: centos:7
provisioner:
  name: ansible
  lint:
    name: ansible-lint
scenario:
  name: default
verifier:
  name: testinfra
  lint:
    name: flake8

မဟီခို

ကအပိုင်သသည် မဟီခိုမဟု၏အရင်သအမဌစ်ကို ဖော်ပဌသည်။

အဆိုပါရလေသချယ်မဟုမျာသနေသောခေါင်သစဉ်: နဂါသငလေ့တန်သ, gilt, အခလံ။

Shell သည် galaxy နဟင့် gilt သည် သင့်လိုအပ်ချက်မျာသကို မဖုံသကလယ်ပါက အသုံသပဌုရန် ရိုသရဟင်သသော command shell တစ်ခုဖဌစ်သည်။

ငါဒီမဟာကဌာကဌာနေမဟာမဟုတ်ဘူသ၊ လုံလောက်စလာဖော်ပဌထာသတယ်။ စာရလက်စာတမ်သ.

မောင်သသူ

ယာဉ်မောင်သအမည်။ ငါတို့အတလက် ဒါက docker ပါ။

Plus ကို

Yamllint ကို လိပ်အဖဌစ်အသုံသပဌုသည်။

config ၏ ကအပိုင်သရဟိ အသုံသဝင်သောရလေသချယ်စရာမျာသသည် yamllint အတလက် configuration file တစ်ခုသတ်မဟတ်နိုင်မဟု၊ forward environment variables သို့မဟုတ် linter ကို disable လုပ်ခဌင်သဖဌစ်သည်-

lint:
  name: yamllint
  options:
    config-file: foo/bar
  env:
    FOO: bar
  enabled: False

ပလက်ဖောင်သ

သာဓကမျာသ၏ဖလဲ့စည်သပုံကိုဖော်ပဌသည်။
docker သည် ဒရိုက်ဘာတစ်ညသဖဌစ်ပဌီသ၊ Molecule သည် ကအပိုင်သကို ထပ်ခါတလဲလဲလုပ်ဆောင်ပဌီသ စာရင်သ၏ဒဌပ်စင်တစ်ခုစီတလင် ရနိုင်သည် Dockerfile.j2 variable အဖဌစ် item.

ဒရိုင်ဘာတစ်ညသ၏အမဟု၌၊ create.yml О destroy.yml၊ အပိုင်သကို ၎င်သတို့တလင် ရရဟိနိုင်သည်။ molecule_yml.platformsနဟင့် ၎င်သနဟင့်ပတ်သက်သော ထပ်လောင်သမဟုမျာသကို ကဖိုင်မျာသတလင် ဖော်ပဌထာသပဌီသဖဌစ်သည်။

Molecule သည် Ansible modules မျာသသို့ instance management ကို ပံ့ပိုသပေသသောကဌောင့်၊ သင်သည် ဖဌစ်နိုင်သည့် ဆက်တင်မျာသစာရင်သကို ထိုနေရာတလင် ရဟာဖလေသင့်သည်။ ဥပမာ Docker အတလက်၊ module ကိုအသုံသပဌုသည်။ docker_container_module. အခဌာသ Driver မျာသတလင် မည်သည့် module မျာသကို အသုံသပဌုထာသသည်ကို တလေ့နိုင်ပါသည်။ စာရလက်စာတမ်သ.

အမျိုသမျိုသသော drivers မျာသကိုအသုံသပဌုခဌင်သ၏နမူနာမျာသကိုလည်သသင်တလေ့နိုင်သည်။ Molecule ကိုယ်တိုင် စမ်သသပ်မဟုတလင်၊.

ဒီမဟာ အစာသထိုသကဌည့်ရအောင် ဗဟိုချက်မျာသ:၇ အပေါ် ubuntu.

စီမံပေသသူ

“ပံ့ပိုသပေသသူ” သည် ဖဌစ်ရပ်မျာသကို စီမံခန့်ခလဲသည့် အဖလဲ့အစည်သဖဌစ်သည်။ Molecule ၏ကိစ္စတလင်၊ ၎င်သသည် အသုံသပဌုနိုင်သည်၊ အခဌာသသူမျာသအတလက် ပံ့ပိုသကူညီမဟုအာသ စီစဉ်ထာသခဌင်သမရဟိပါ၊ ထို့ကဌောင့် ကအပိုင်သကို ကဌိုတင်စာရင်သသလင်သခဌင်သဖဌင့်၊ တိုသချဲ့ထာသသော ansible configuration ဟုခေါ်တလင်နိုင်ပါသည်။
ကနေရာတလင် သင်ထောက်ပဌနိုင်သည်မျာသ အမျာသအပဌာသရဟိသော်လည်သ ကျလန်ုပ်၏အမဌင်အရ အဓိကအချက်မျာသကို မီသမောင်သထိုသပဌပါမည်။

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

provisioner:
  name: ansible
  playbooks:
    create: create.yml
    destroy: ../default/destroy.yml
    converge: playbook.yml
    side_effect: side_effect.yml
    cleanup: cleanup.yml

provisioner:
  name: ansible
  config_options:
    defaults:
      fact_caching: jsonfile
    ssh_connection:
      scp_if_ssh: True

provisioner:
  name: ansible  
  connection_options:
    ansible_ssh_common_args: "-o 'UserKnownHostsFile=/dev/null' -o 'ForwardAgent=yes'"

  • ရလေသချယ်မဟုမျာသ: သိသာထင်ရဟာသသော ဘောင်မျာသ နဟင့် ပတ်ဝန်သကျင် ကိန်သရဟင်မျာသ

provisioner:
  name: ansible  
  options:
    vvv: true
    diff: true
  env:
    FOO: BAR

မဌင်ကလင်သ

ခေါင်သစဉ်နဟင့် ဇာတ်ညလဟန်သအတလဲမျာသ၏ ဖော်ပဌချက်။
သော့ကိုထည့်ခဌင်သဖဌင့် သင်သည် command တစ်ခု၏ ပုံသေလုပ်ဆောင်ချက် matrix ကို ပဌောင်သလဲနိုင်သည်။ <command>_sequence ၎င်သအတလက် တန်ဖိုသတစ်ခုအနေဖဌင့် ကျလန်ုပ်တို့လိုအပ်သော အဆင့်မျာသစာရင်သကို သတ်မဟတ်ခဌင်သ။
playbook run command ကို run သောအခါ လုပ်ဆောင်ချက်မျာသ၏ sequence ကိုပဌောင်သလိုသည်ဆိုကဌပါစို့။ molecule converge

# ОзМачальМП:
# - dependency
# - create
# - prepare
# - converge
scenario:
  name: default
  converge_sequence:
    - create
    - converge

စစ်ဆေသခဌင်သ

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

verifier:
  name: testinfra
  additional_files_or_dirs:
    - ../path/to/test_1.py
    - ../path/to/test_2.py
    - ../path/to/directory/*
  options:
    n: 1
  enabled: False
  env:
    FOO: bar
  lint:
    name: flake8
    options:
      benchmark: True
    enabled: False
    env:
      FOO: bar

ငါတို့ရဲ့အခန်သကဏ္ဍကိုပဌန်ကဌရအောင်။ ဖိုင်ကို တည်သဖဌတ်ကဌပါစို့ tasks/main.yml ကကဌည့်ရန်-

---
- name: Install nginx
  apt:
    name: nginx
    state: present

- name: Start nginx
  service:
    name: nginx
    state: started

ပဌီသတော့ စာမေသပလဲတလေ ထပ်ထည့်တယ်။ molecule/default/tests/test_default.py

def test_nginx_is_installed(host):
    nginx = host.package("nginx")
    assert nginx.is_installed

def test_nginx_running_and_enabled(host):
    nginx = host.service("nginx")
    assert nginx.is_running
    assert nginx.is_enabled

def test_nginx_config(host):
    host.run("nginx -t")

ပဌီသပါပဌီ၊ ကျန်တာအာသလုံသက run ဖို့ပါပဲ (အခန်သရဲ့ အရင်သကနေ၊ မင်သကို သတိပေသပါရစေ)

> molecule test

spoiler အောက်ရဟိ အိတ်ဇောရဟည်-

--> Validating schema <path>/nginx/molecule/default/molecule.yml.
Validation completed successfully.
--> Test matrix

└── default
    ├── lint
    ├── destroy
    ├── dependency
    ├── syntax
    ├── create
    ├── prepare
    ├── converge
    ├── idempotence
    ├── side_effect
    ├── verify
    └── destroy

--> Scenario: 'default'
--> Action: 'lint'
--> Executing Yamllint on files found in <path>/nginx/...
Lint completed successfully.
--> Executing Flake8 on files found in <path>/nginx/molecule/default/tests/...
Lint completed successfully.
--> Executing Ansible Lint on <path>/nginx/molecule/default/playbook.yml...
Lint completed successfully.
--> Scenario: 'default'
--> Action: 'destroy'

    PLAY [Destroy] *****************************************************************

    TASK [Destroy molecule instance(s)] ********************************************
    changed: [localhost] => (item=None)
    changed: [localhost]

    TASK [Wait for instance(s) deletion to complete] *******************************
    ok: [localhost] => (item=None)
    ok: [localhost]

    TASK [Delete docker network(s)] ************************************************

    PLAY RECAP *********************************************************************
    localhost                  : ok=2    changed=1    unreachable=0    failed=0

--> Scenario: 'default'
--> Action: 'dependency'
Skipping, missing the requirements file.
--> Scenario: 'default'
--> Action: 'syntax'

    playbook: <path>/nginx/molecule/default/playbook.yml

--> Scenario: 'default'
--> Action: 'create'

    PLAY [Create] ******************************************************************

    TASK [Log into a Docker registry] **********************************************
    skipping: [localhost] => (item=None)

    TASK [Create Dockerfiles from image names] *************************************
    changed: [localhost] => (item=None)
    changed: [localhost]

    TASK [Discover local Docker images] ********************************************
    ok: [localhost] => (item=None)
    ok: [localhost]

    TASK [Build an Ansible compatible image] ***************************************
    changed: [localhost] => (item=None)
    changed: [localhost]

    TASK [Create docker network(s)] ************************************************

    TASK [Create molecule instance(s)] *********************************************
    changed: [localhost] => (item=None)
    changed: [localhost]

    TASK [Wait for instance(s) creation to complete] *******************************
    changed: [localhost] => (item=None)
    changed: [localhost]

    PLAY RECAP *********************************************************************
    localhost                  : ok=5    changed=4    unreachable=0    failed=0

--> Scenario: 'default'
--> Action: 'prepare'
Skipping, prepare playbook not configured.
--> Scenario: 'default'
--> Action: 'converge'

    PLAY [Converge] ****************************************************************

    TASK [Gathering Facts] *********************************************************
    ok: [instance]

    TASK [nginx : Install nginx] ***************************************************
    changed: [instance]

    TASK [nginx : Start nginx] *****************************************************
    changed: [instance]

    PLAY RECAP *********************************************************************
    instance                   : ok=3    changed=2    unreachable=0    failed=0

--> Scenario: 'default'
--> Action: 'idempotence'
Idempotence completed successfully.
--> Scenario: 'default'
--> Action: 'side_effect'
Skipping, side effect playbook not configured.
--> Scenario: 'default'
--> Action: 'verify'
--> Executing Testinfra tests found in <path>/nginx/molecule/default/tests/...
    ============================= test session starts ==============================
    platform darwin -- Python 2.7.15, pytest-4.3.0, py-1.8.0, pluggy-0.9.0
    rootdir: <path>/nginx/molecule/default, inifile:
    plugins: testinfra-1.16.0
collected 4 items

    tests/test_default.py ....                                               [100%]

    ========================== 4 passed in 27.23 seconds ===========================
Verifier completed successfully.
--> Scenario: 'default'
--> Action: 'destroy'

    PLAY [Destroy] *****************************************************************

    TASK [Destroy molecule instance(s)] ********************************************
    changed: [localhost] => (item=None)
    changed: [localhost]

    TASK [Wait for instance(s) deletion to complete] *******************************
    changed: [localhost] => (item=None)
    changed: [localhost]

    TASK [Delete docker network(s)] ************************************************

    PLAY RECAP *********************************************************************
    localhost                  : ok=2    changed=2    unreachable=0    failed=0

ကျလန်ုပ်တို့၏ ရိုသရဟင်သသောအခန်သကဏ္ဍကို ပဌဿနာမရဟိဘဲ စမ်သသပ်ခဲ့သည်။
လည်ပတ်နေစဉ်အတလင်သ ပဌဿနာမျာသ ဖဌစ်ပေါ်လာပါက သတိပဌုသင့်သည်။ molecule testအကယ်၍ သင်သည် standard sequence ကိုမပဌောင်သလဲပါက၊ Molecule သည် instance ကိုဖျက်ပါမည်။

အောက်ပါ command မျာသသည် အမဟာသရဟာပဌင်ခဌင်သအတလက် အသုံသဝင်သည်-

> molecule --debug <command> # debug info. ПрО ПбычМПЌ запуске МПлекула скрывает лПгО.
> molecule converge          # Оставляет ОМстаМс пПсле прПгПМа тестОруеЌПй рПлО.
> molecule login             # ЗайтО в сПзЎаММый ОМстаМс.
> molecule --help            # ППлМый спОсПк кПЌаМЎ.

ရဟိပဌီသသာသအခန်သကဏ္ဍ

ရဟိပဌီသသာသအခန်သကဏ္ဍတစ်ခုသို့ ဇာတ်ညလဟန်သအသစ်တစ်ခုထည့်ခဌင်သသည် ဖဌစ်ပေါ်ပါသည်။ အခန်သကဏ္ဍလမ်သညလဟန်မဟ အောက်ပါ command မျာသဖဌင့်

# пПлМый спОсПк ЎПступМых параЌетрПв
> molecule init scenarion --help
# сПзЎаМОе МПвПгП сцеМарОя
> molecule init scenario -r <role_name> -s <scenario_name>

၎င်သသည် အခန်သကဏ္ဍတလင် ပထမဆုံသ ဇာတ်ညလဟန်သဖဌစ်ပါက၊ ထို့နောက် ကန့်သတ်ချက် -s ဇာတ်ညလဟန်သတစ်ခုကို ဖန်တီသမည်ဖဌစ်သောကဌောင့် ချန်လဟပ်ထာသနိုင်သည်။ default.

ကောက်ချက်

သင်တလေ့မဌင်ရသည့်အတိုင်သ၊ Molecule သည် အလလန်ရဟုပ်ထလေသခဌင်သမရဟိပါ၊ သင်၏ကိုယ်ပိုင်ပုံစံမျာသကိုအသုံသပဌုသည့်အခါ၊ instances မျာသဖန်တီသခဌင်သနဟင့် ဖျက်ခဌင်သအတလက် playbooks ရဟိ variable မျာသကိုတည်သဖဌတ်ခဌင်သသို့ script အသစ်တစ်ခု၏ဖဌန့်ကျက်မဟုကို လျဟော့ချနိုင်သည်။ မော်လီကျူသသည် CI စနစ်မျာသနဟင့် ချောမလေ့စလာ ပေါင်သစပ်ထာသပဌီသ၊ ၎င်သသည် ပလေသဘလတ်မျာသကို ကိုယ်တိုင်စမ်သသပ်ရန် အချိန်ကို လျဟော့ချခဌင်သဖဌင့် ဖလံ့ဖဌိုသတိုသတက်မဟုအမဌန်နဟုန်သကို တိုသမဌဟင့်နိုင်စေပါသည်။

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

source: www.habr.com

မဟတ်ချက် Add