Andro tsara
Manana cluster rahona maromaro misy milina virtoaly marobe ao amin'ny tsirairay. Mampiantrano an'ity orinasa rehetra ity ao amin'ny Hetzner izahay. Ao amin'ny cluster tsirairay dia manana milina master iray isika, maka sary avy ao ary zaraina ho azy amin'ny milina virtoaly rehetra ao anatin'ilay cluster.
Ity tetika ity dia tsy mamela antsika hampiasa gitlab-runners amin'ny fomba mahazatra, satria be dia be ny olana mipoitra rehefa misy mpihazakazaka misoratra anarana mitovy, izay nanosika anay hitady vahaolana ary hanoratra ity lahatsoratra / boky ity.
Mety tsy fanao tsara indrindra izany, saingy toa mety sy tsotra araka izay azo atao io vahaolana io.
Ho an'ny lesona dia jereo ny saka.
Fonosana ilaina amin'ny milina master:
- Python
- Mandehana
- rakitra miaraka amin'ny fanalahidy ssh
Ny fitsipika ankapobeny amin'ny fampiharana ny fisintonana tsinay mandeha ho azy amin'ny milina virtoaly rehetra dia ny mila milina iray hametrahana an'i Ansible. Avy amin'ity milina ity, ny ansible dia handefa baiko git pull ary hamerina ny serivisy izay nohavaozina. Ho an'ireo tanjona ireo dia namorona milina virtoaly misaraka ivelan'ny cluster izahay ary napetraka teo aminy:
- Python
- azo atao
- gitlab-runner
Avy amin'ny olana momba ny fandaminana - mila misoratra anarana gitlab-runner ianao, manaova ssh-keygen, ampidiro ny lakile ssh ho an'ny daholobe amin'ity milina ity. .ssh/authorized_keys
eo amin'ny milina master, sokafy ny port 22 ho ansible amin'ny milina master.
Andeha hojerentsika ny ansible
Satria ny tanjonay dia ny hanao automatique izay rehetra azo atao. Ao anaty rakitra /etc/ansible/ansible.cfg
hofoanana ny tsipika izahay host_key_checking = False
mba tsy hangatahan'i ansible ny fanamafisana ny milina vaovao.
Manaraka izany dia mila mamorona fisie inventory ho an'ny ansible ianao, avy eo dia haka ny ip amin'ireo milina izay ilainao hanaovana git pull.
Mamorona ity rakitra ity izahay amin'ny alΓ lan'ny Hetzner's API, azonao atao ny maka ny lisitry ny mpampiantrano avy amin'ny AWS, Asure, database (manana API ianao any amin'ny toerana iray hanehoana ny milina mandeha, sa tsy izany?).
Tena zava-dehibe ho an'ny Ansible ny firafitry ny antontan-drakitra; tokony ho toy izao izy io:
[Π³ΡΡΠΏΠΏΠ°]
ip-Π°Π΄ΡΠ΅Ρ
ip-Π°Π΄ΡΠ΅Ρ
[Π³ΡΡΠΏΠΏΠ°2]
ip-Π°Π΄ΡΠ΅Ρ
ip-Π°Π΄ΡΠ΅Ρ
Mba hamoronana rakitra toy izany dia hanao script tsotra izahay (aleo antsoina hoe 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
Fotoana izao hanamarinana fa miasa ny Ansible ary sariaka amin'ny fandraisana adiresy IP:
/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'hostname' group
Ny vokatra dia tokony ahitana ny anaran'ny mpampiantrano ny milina nanaovana ny baiko.
Teny vitsivitsy momba ny syntax:
- /etc/ansible/./vm_list - mamorona lisitry ny milina
- -i - lalana tanteraka mankany amin'ny rakitra firaketana
- -m - lazao ansible ny fampiasana ny module shell
- -a ny argument. Ny baiko rehetra dia azo ampidirina eto
- vondrona - ny anaran'ny cluster anao. Raha mila manao izany amin'ny cluster rehetra ianao dia ovay ny vondrona ho an'ny rehetra
Andao handeha lavitra - andeha isika hanao git pull amin'ny milina virtoaly:
/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'cd /path/to/project && git pull' group
Raha ao amin'ny famoahana dia hitantsika fa efa nohavaozina na misintona avy amin'ny tahiry, dia mandeha ny zava-drehetra.
Ankehitriny dia izany no nanaovana izany rehetra izany
Andao ampianaro ny scripty mandeha ho azy rehefa manolo-tena amin'ny sampana master ao amin'ny gitlab
Voalohany, andao hatao tsara tarehy kokoa ny scripty ary apetraho ao anaty rakitra azo tanterahana (aleo atao hoe exec_pull) -
#!/bin/bash
/etc/ansible/./get_vms && ansible -i /etc/ansible/cloud_ip -m shell -a "$@"
Andeha ho any amin'ny gitlab ary hamorona rakitra ao amin'ny tetikasa .gitlab-ci.yml
Mametraka ireto manaraka ireto izahay ao anatiny:
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
Efa vonona ny rehetra. Ankehitriny -
- manaova fanoloran-tena
- Faly aho fa mandeha ny zava-drehetra
Rehefa mamindra .yml amin'ny tetikasa hafa ianao dia mila manova ny anaran'ny serivisy hanombohana sy ny anaran'ny cluster izay hanatanterahana ny baiko azo ampiasaina.
Source: www.habr.com