Nā kuhikuhi: pehea e hoʻāʻo ai i nā kuleana kūpono a ʻike i nā pilikia ma mua o ka hana ʻana
Hello a pau!
Hana wau ma ke ʻano he ʻenekini DevOps i kahi lawelawe hoʻopaʻa hōkele. Ostrovok.ru. Ma kēia ʻatikala, makemake wau e kamaʻilio e pili ana i kā mākou ʻike i ka hoʻāʻo ʻana i nā kuleana ansible.
Ma Ostrovok.ru, hoʻohana mākou i ka ansible ma ke ʻano he mana hoʻonohonoho. I kēia mau lā, ua hele mākou i ka pono e hoʻāʻo i nā kuleana, akā e like me ka mea i ʻike ʻia, ʻaʻole nui nā mea hana no kēia - ʻo ka mea kaulana loa, ʻo ia paha ka Molecule framework, no laila ua hoʻoholo mākou e hoʻohana. Akā, ua ʻike ʻia ua hāmau kāna palapala e pili ana i nā pitfalls he nui. ʻAʻole hiki iā mākou ke ʻike i kahi manual kikoʻī ma ka ʻōlelo Lūkini, no laila ua hoʻoholo mākou e kākau i kēia ʻatikala.
Molekule
Molekula - he hoʻolālā e kōkua i ka hoʻāʻo ʻana i nā kuleana kūpono.
ʻO ka wehewehe maʻalahi: Hoʻokumu ka mole i kahi laʻana ma ke kahua āu i kuhikuhi ai (kapua, mīkini virtual, ipu; no nā kikoʻī hou aku, e ʻike i ka ʻāpana. O Keaukaha), holo i kāu kuleana ma ia mea, a laila holo i nā hoʻāʻo a holoi i ka laʻana. I ka hihia o ka hāʻule ʻana ma kekahi o nā ʻanuʻu, e haʻi aku ka Molecule iā ʻoe e pili ana iā ia.
I kēia manawa hou aku.
Keʻano o ka manaʻo
E noʻonoʻo i ʻelua mau mea nui o ka Molecule: Scenario and Driver.
ʻO ke kiʻikuhi
Aia i loko o ka palapala ka wehewehe ʻana i ka mea, kahi, pehea a me ke kaʻina e hana ʻia ai. Hiki i hoʻokahi kuleana ke loaʻa nā palapala he nui, a he papa kuhikuhi kēlā me kēia ma ke ala <role>/molecule/<scenario>, aia nā wehewehe o nā hana i koi ʻia no ka hoʻāʻo. Pono e hoʻokomo i ka palapala default, e hana ʻokoʻa ʻia inā hoʻomaka ʻoe i ka hana me kahi Molecule. Aia iā ʻoe nā inoa o kēia mau palapala.
Ua kapa ʻia ke ʻano o nā hana hoʻāʻo ma kahi palapala Ke kumu, a ʻo ia ka:
(Papa ʻia nā ʻanuʻu ?, lele ʻia ma ka paʻamau inā ʻaʻole i kuhikuhi ʻia e ka mea hoʻohana)
lint - holo linters. Hoʻohana ʻia ma ka paʻamau yamllint и flake8,
destroy - ka holoi ʻana i nā manawa mai ka hoʻomaka hope ʻana o ka Molecule (inā loaʻa),
dependency? - ka hoʻokomo ʻana i ka hilinaʻi ansible o ka hana i hoʻāʻo ʻia,
syntax - ke nānā ʻana i ka syntax o ka hana e hoʻohana ana ansible-playbook --syntax-check,
create - ka hana ʻana i kahi laʻana,
prepare? - ka hoʻomākaukau ʻana i ka laʻana; e laʻa, nānā / hoʻokomo i ka python2
converge - ka hoʻomaka ʻana o ka puke pāʻani e hoʻāʻo ʻia,
idempotence - hoʻomaka hou i ka playbook no ka hōʻike idempotency,
side_effect? - nā hana i pili ʻole i ka hana, akā pono no nā hoʻokolohua,
verify - e holo ana i nā ho'āʻo o ka hopena hoʻonohonoho hoʻohana testinfra(paʻamau) /goss/inspec,
cleanup? - (ma nā mana hou) - ma ka ʻōlelo maʻalahi, "hoʻomaʻemaʻe" i nā ʻōnaehana waho i hoʻopilikia ʻia e ka Molecule,
destroy - Ke holoi nei i kahi laʻana.
Hoʻopili kēia kaʻina i ka hapa nui o nā hihia, akā hiki ke hoʻololi inā pono.
Hiki ke hoʻokaʻawale ʻia kēlā me kēia ʻanuʻu i luna molecule <command>. Akā, pono e hoʻomaopopo ʻia no kēlā me kēia cli-kauoha aia paha kāna ʻano hana ponoʻī, hiki iā ʻoe ke ʻike ma ka hoʻokō ʻana. molecule matrix <command>. No ka laʻana, i ka wā e holo ana i ke kauoha converge (e holo ana i ka puke pāʻani ma lalo o ka hoʻāʻo ʻana), e hana ʻia kēia mau hana:
$ molecule matrix converge
...
└── default # название сценария
├── dependency # установка зависимостей
├── create # создание инстанса
├── prepare # преднастройка инстанса
└── converge # прогон плейбука
Hiki ke hoʻoponopono ʻia ke kaʻina o kēia mau hana. Inā ua hana mua ʻia kekahi mea mai ka papa inoa, e lele ʻia. ʻO ke kūlana o kēia manawa, a me ka config o nā manawa, nā hale kūʻai Molecule i ka papa kuhikuhi $TMPDIR/molecule/<role>/<scenario>.
Hoʻohui i nā ʻanuʻu me ? hiki iā ʻoe ke wehewehe i nā hana i makemake ʻia ma ka format ansible-playbook, a hana i ka inoa faila e like me ka pae: prepare.yml/side_effect.yml. Manaʻo i kēia mau faila Aia ka mole i loko o ka waihona palapala.
O Keaukaha
ʻO ka mea hoʻokele he hui kahi i hana ʻia ai nā mea hoʻāʻo.
ʻO ka papa inoa o nā mea hoʻokele maʻamau no ka Molecule i hoʻomākaukau i nā template penei: Azure, Docker, EC2, GCE, LXC, LXD, OpenStack, Vagrant, Delegated.
I ka nui o na hihia, he mau waihona create.yml и destroy.yml i loko o ka waihona palapala e wehewehe ana i ka hana ʻana a me ka holoi ʻana i kahi laʻana, kēlā me kēia.
ʻO nā mea ʻē aʻe ʻo Docker a me Vagrant, no ka mea hiki ke hoʻopili ʻia me kā lākou mau modula me ka ʻole o nā faila i ʻōlelo ʻia.
He mea kūpono ke kuhikuhi ʻana i ka mea hoʻokele Delegated, no ka mea inā hoʻohana ʻia ia i nā faila no ka hana ʻana a me ka holoi ʻana i kahi hiʻohiʻona, e hana wale me ka hoʻonohonoho ʻana o nā manawa i wehewehe ʻia, ʻo ke koena e wehewehe ʻia e ka ʻenekinia.
ʻO ka mea hoʻokele paʻamau ʻo Docker.
I kēia manawa e neʻe kākou i ka hoʻomaʻamaʻa a noʻonoʻo i nā hiʻohiʻona hou aʻe ma laila.
noho hoʻomaka 'ana
Ma ke ʻano he "hello world", e hoʻāʻo mākou i kahi hana hoʻonohonoho nginx maʻalahi. E koho mākou i ka docker ma ke ʻano he mea hoʻokele - manaʻo wau ua hoʻokomo ka hapa nui o ʻoukou (a e hoʻomanaʻo ʻo docker ka mea hoʻokele paʻamau).
E hoʻomākaukau virtualenv a hoʻokomo i loko molecule:
ʻO ka hana aʻe e hoʻomaka i ka hana hou.
Hana ʻia ka hoʻomaka ʻana o kahi hana hou, a me kahi palapala hou me ka hoʻohana ʻana i ke kauoha 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
Ua lilo i typical ansible-role. Eia hou, hana ʻia nā pilina āpau me CLI Molecules mai ke kumu o ka hana.
E ʻike kākou i ka mea i loko o ka papa kuhikuhi kuleana:
> tree molecule/default/
molecule/default/
├── Dockerfile.j2 # Jinja-шаблон для Dockerfile
├── INSTALL.rst. # Немного информации об установке зависимостей сценария
├── molecule.yml # Файл конфигурации
├── playbook.yml # Плейбук запуска роли
└── tests # Директория с тестами стадии verify
└── test_default.py
1 directory, 6 files
E nānā kākou i ka config molecule/default/molecule.yml (hoʻololi wale i ke kiʻi docker):
He pūpū kauoha wale nō ʻo Shell i hoʻohana ʻia inā ʻaʻole uhi ka galaxy a me ka gilt i kāu mau pono.
Aole au e noho loihi maanei, ua lawa ka hoakaka ana ma palapala.
O Keaukaha
Ka inoa o ke kalaiwa. ʻO kā mākou docker.
olonā
He yamllint ka linter.
ʻO nā koho hoʻohana ma kēia ʻāpana o ka config ka hiki ke kuhikuhi i kahi faila hoʻonohonoho no yamllint, nā hoʻololi kaiapuni i mua, a i ʻole e hoʻopau i ka linter:
Hōʻike i ka hoʻonohonoho ʻana o nā hihia.
I ka hihia o docker ma ke ʻano he mea hoʻokele, ua ʻike ʻia ka Molecule ma luna o kēia ʻāpana, a loaʻa kēlā me kēia mea o ka papa inoa ma Dockerfile.j2 ma ke ano he hoololi item.
I ka hihia o ke kalaiwa e pono ai create.yml и destroy.yml, aia ka pauku i loko o lākou e like me molecule_yml.platforms, a ua wehewehe mua ʻia nā ʻike ma luna o kēia mau faila.
Ma muli o ka hāʻawi ʻana o ka Molecule i ka mana o nā manawa i nā modules ansible, pono e ʻimi ʻia ka papa inoa o nā hoʻonohonoho hiki. No ka docker, no ka laʻana, hoʻohana ʻia ka module docker_container_module. Hiki ke loaʻa nā modula i hoʻohana ʻia i nā mea hoʻokele ʻē aʻe palapala.
Hiki ke loaʻa nā hiʻohiʻona o ka hoʻohana ʻana i nā mea hoʻokele like ʻole ma na hoao ana o ka Molekula ponoi.
E pani hou maanei keneta:7 maluna o ubuntu.
mea hoʻolako
"mea hoʻolako" - he hui nāna e mālama i nā manawa. I ka hihia o Molecule, hiki kēia, ʻaʻole i hoʻolālā ʻia ke kākoʻo no nā poʻe ʻē aʻe, no laila hiki ke kapa ʻia kēia ʻāpana he hoʻonohonoho hoʻonui lōʻihi me kahi caveat.
Maanei hiki iā ʻoe ke kuhikuhi i nā mea he nui, e hōʻike wau i nā mea nui, i koʻu manaʻo:
puke pāʻani: hiki iā ʻoe ke kuhikuhi i nā puke pāʻani e hoʻohana ʻia i kekahi mau pae.
Ka inoa a me ka wehewehe ʻana i nā kaʻina hana.
Hiki iā ʻoe ke hoʻololi i ka matrix hana paʻamau o kekahi kauoha ma ka hoʻohui ʻana i ke kī <command>_sequence a ma ke ʻano he waiwai no ia ma ka wehewehe ʻana i ka papa inoa o nā ʻanuʻu e pono ai mākou.
E ʻōlelo mākou makemake mākou e hoʻololi i ke ʻano o nā hana i ka wā e holo ana i ke kauoha runbook run: molecule converge
Hoʻonohonoho i kahi hoʻolālā no nā hoʻokolohua a me kahi linter iā ia. ʻO ka linter paʻamau testinfra и flake8. ʻO nā koho kūpono e like me ka mea i luna:
Ua hoʻāʻo ʻia kā mākou kuleana maʻalahi me ka pilikia ʻole.
Pono e hoʻomanaʻo inā loaʻa nā pilikia i ka wā o ka hana molecule test, a laila inā ʻaʻole ʻoe i hoʻololi i ke kaʻina paʻamau, e holoi ka Molecule i ka laʻana.
He mea pono kēia mau ʻōlelo no ka debugging:
> molecule --debug <command> # debug info. При обычном запуске Молекула скрывает логи.
> molecule converge # Оставляет инстанс после прогона тестируемой роли.
> molecule login # Зайти в созданный инстанс.
> molecule --help # Полный список команд.
Kuleana e ku nei
ʻO ka hoʻohui ʻana i kahi palapala hou i kahi kuleana e kū nei mai ka papa kuhikuhi kuleana me kēia mau kauoha:
# полный список доступных параметров
> molecule init scenarion --help
# создание нового сценария
> molecule init scenario -r <role_name> -s <scenario_name>
Inā ʻo kēia ka hiʻohiʻona mua i ka hana, a laila ka parameter -s hiki ke hoʻokuʻu ʻia no ka mea e hana ia i kahi palapala default.
hopena
E like me kāu e ʻike ai, ʻaʻole paʻakikī loa ka Molecule, a ma ka hoʻohana ʻana i kāu mau mamana ponoʻī, hiki ke hoʻemi ʻia ke kau ʻana i kahi palapala hou i ka hoʻoponopono ʻana i nā mea hoʻololi i ka hana ʻana a me ka holoi ʻana i nā puke pāʻani. Hoʻohui maikaʻi ʻia ka mole me nā ʻōnaehana CI, e hiki ai iā ʻoe ke hoʻonui i ka wikiwiki o ka hoʻomohala ʻana ma o ka hoʻemi ʻana i ka manawa no ka hoʻāʻo lima ʻana i nā puke pāʻani.
Mahalo no kou noonoo. Inā loaʻa iā ʻoe ka ʻike i ka hoʻāʻo ʻana i nā kuleana ansible, a ʻaʻole pili i ka Molecule, e haʻi mai iā mākou ma nā ʻōlelo!