He lā maikaʻi
Loaʻa iā mākou kekahi mau pūʻulu ao me ka nui o nā mīkini virtual i kēlā me kēia. Hoʻokipa mākou i kēia ʻoihana holoʻokoʻa ma Hetzner. I loko o kēlā me kēia pūʻulu, loaʻa iā mākou hoʻokahi mīkini haku, lawe ʻia kahi kiʻi mai ia mea a hāʻawi ʻia i nā mīkini virtual āpau i loko o ka pūʻulu.
ʻAʻole ʻae kēia kumumanaʻo iā mākou e hoʻohana maʻamau i ka gitlab-runners, no ka mea, nui nā pilikia e kū mai i ka wā e ʻike ʻia ai nā mea holo i hoʻopaʻa inoa ʻia, kahi i koi ai iā mākou e ʻimi i kahi workaround a kākau i kēia ʻatikala/manual.
ʻAʻole paha kēia ka hoʻomaʻamaʻa maikaʻi loa, akā ua ʻike ʻia kēia hopena maʻalahi a maʻalahi hoʻi.
No ke kumu aʻo, e ʻoluʻolu e ʻike i ka pōpoki.
Pono nā pūʻolo ma ka mīkini master:
- python
- hele
- waihona me nā kī ssh
ʻO ke kumu maʻamau o ka hoʻokō ʻana i ka huki ʻāʻī ma luna o nā mīkini virtual āpau, pono ʻoe i kahi mīkini kahi e kau ʻia ai ʻo Ansible. Mai kēia mīkini, e hoʻouna ʻo ansible i nā kauoha huki git a hoʻomaka hou i ka lawelawe i hoʻonui ʻia. No kēia mau kumu, ua hana mākou i kahi mīkini virtual kaʻawale ma waho o nā pūʻulu a kau ʻia ma luna:
- python
- Ansible
- gitlab-runner
Mai nā pilikia hoʻonohonoho - pono ʻoe e hoʻopaʻa inoa i ka gitlab-runner, hana ssh-keygen, hoʻouka i ke kī ssh lehulehu o kēia mīkini i .ssh/authorized_keys
ma ka mīkini haku, wehe i ke awa 22 no ka ansible ma ka mīkini haku.
I kēia manawa e hoʻonohonoho i ka ansible
No ka mea ʻo kā mākou pahuhopu e hoʻokaʻawale i nā mea āpau i hiki. Ma ka waihona /etc/ansible/ansible.cfg
e wehe mākou i ka laina host_key_checking = False
no laila ʻaʻole noi ʻo ansible i ka hōʻoia ʻana i nā mīkini hou.
A laila, pono ʻoe e hana maʻalahi i kahi faila waihona no ka ansible, mai kahi e lawe ai i ka ip o nā mīkini āu e pono ai e hana git pull.
Hoʻokumu mākou i kēia faila me ka API o Hetzner, hiki iā ʻoe ke lawe i ka papa inoa o nā mea hoʻokipa mai kāu AWS, Asure, waihona (he API kāu i kahi e hōʻike ai i kāu mau mīkini holo, pololei?).
He mea koʻikoʻi ke ʻano o ka waihona waihona waiwai no Ansible; e like me kēia:
[группа]
ip-адрес
ip-адрес
[группа2]
ip-адрес
ip-адрес
No ka hana ʻana i kahi faila, e hana mākou i kahi palapala maʻalahi (e kāhea mākou vm_list
):
#!/bin/bash
echo [group] > /etc/ansible/cloud_ip &&
"ваш CLI запрос на получение IP запущенных машин в кластере" >> /etc/ansible/cloud_ip
echo " " >> /etc/ansible/cloud_ip
echo [group2] > /etc/ansible/cloud_ip &&
"ваш CLI запрос на получение IP запущенных машин в другом кластере" >> /etc/ansible/cloud_ip
ʻO ka manawa kēia e nānā ai e hana ana ʻo Ansible a he hoaaloha me ka loaʻa ʻana o nā leka uila IP:
/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'hostname' group
Pono e loaʻa nā inoa inoa o nā mīkini kahi i hoʻokō ʻia ai ke kauoha.
He mau huaʻōlelo e pili ana i ka syntax:
- /etc/ansible/./vm_list - hana i kahi papa inoa o nā mīkini
- -i - ala pololei i ka waihona waihona
- -m - haʻi hiki ke hoʻohana i ka module shell
- -a ka hoopaapaa. Hiki ke hookomo i kekahi kauoha maanei
- hui - ka inoa o kāu hui. Inā pono ʻoe e hana i kēia ma nā pūʻulu āpau, e hoʻololi i ka hui i nā mea āpau
E hele hou aʻe - e hoʻāʻo e hana git pull i kā mākou mīkini virtual:
/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'cd /path/to/project && git pull' group
Inā ʻike mākou i ka hopena a i ʻole ka hoʻoiho ʻana mai ka waihona, a laila e hana ana nā mea a pau.
ʻO kēia ka mea i manaʻo ʻia ai
E aʻo kāua i kā mākou palapala e holo maʻalahi i ka wā e hana ai i ka lālā kumu ma gitlab
ʻO ka mea mua, e hoʻonani i kā mākou palapala a hoʻokomo i loko o kahi faila hiki ke hoʻokō (e kapa mākou iā exec_pull) -
#!/bin/bash
/etc/ansible/./get_vms && ansible -i /etc/ansible/cloud_ip -m shell -a "$@"
E hele kāua i kā mākou gitlab a hana i kahi faila i ka papahana .gitlab-ci.yml
Hoʻokomo mākou i kēia i loko:
variables:
GIT_STRATEGY: none
VM_GROUP: group
stages:
- pull
- restart
run_exec_pull:
stage: pull
script:
- /etc/ansible/exec_pull 'cd /path/to/project/'$CI_PROJECT_NAME' && git pull' $VM_GROUP
only:
- master
run_service_restart:
stage: restart
script:
- /etc/ansible/exec_pull 'your_app_stop && your_app_start' $VM_GROUP
only:
- master
Ua mākaukau nā mea a pau. I kēia manawa -
- e hoohiki
- Hauʻoli wau i ka hana ʻana o nā mea a pau
I ka hoʻoili ʻana iā .yml i nā papahana ʻē aʻe, pono ʻoe e hoʻololi i ka inoa o ka lawelawe e hoʻomaka hou ai a me ka inoa o ka pūʻulu kahi e hoʻokō ʻia ai nā kauoha ansible.
Source: www.habr.com