Pai rā
He maha a matou kahui kapua me te maha o nga miihini mariko kei roto ia ia. Ka manaaki matou i tenei pakihi katoa i Hetzner. I roto i ia kapoi kotahi to matou miihini matua, ka tangohia he whakaahua mai i a ia ka tohatoha aunoa ki nga miihini mariko katoa i roto i te roopu.
Kaore tenei kaupapa e whakaae ki te whakamahi i nga gitlab-runners i te nuinga o te waa, na te mea he maha nga raru ka puta mai te maha o nga kaiwhaiwhai kua rehitatia, na reira matou ki te rapu huarahi whakatika me te tuhi i tenei tuhinga / pukapuka.
Ehara pea tenei i te mahi tino pai, engari he pai te ahua me te ngawari o tenei otinga.
Mo te akoranga, tirohia koa te ngeru.
Ko nga kohinga e hiahiatia ana i runga i te miihini matua:
- nānati
- git
- kōnae me nga taviri ssh
Ko te maataapono whanui mo te whakatinana i te kume puku aunoa i runga i nga miihini mariko katoa me hiahia koe ki tetahi miihini ka whakauruhia a Ansible. Mai i tenei miihini, ka tukuna e ansible nga whakahau git pull ka whakaara ano i te ratonga kua whakahoutia. Mo enei kaupapa, i hanga e matou he miihini mariko motuhake i waho o nga tautau ka whakauruhia ki runga:
- nānati
- kitea
- gitlab-runner
Mai i nga take whakahaere - me rehita koe i te gitlab-runner, hanga ssh-keygen, tuku i te taviri ssh whanui o tenei miihini ki .ssh/authorized_keys
i runga i te miihini matua, whakatuwhera te tauranga 22 mo te ansible i runga i te miihini matua.
Inaianei me whirihora ansible
I te mea ko ta matou whainga ko te whakaaunoa i nga mea katoa ka taea. I roto i te kōnae /etc/ansible/ansible.cfg
ka whakakorehia e matou te raina host_key_checking = False
kia kore a ansible e tono mo te whakatuturutanga o nga miihini hou.
I muri mai, me whakaputa aunoa koe i tetahi konae pukapuka mo te ansible, mai i te waahi ka tangohia te ip o nga miihini e hiahia ana koe ki te mahi git pull.
Ka whakaputahia e matou tenei konae ma te whakamahi i te API a Hetzner, ka taea e koe te tango i te rarangi o nga kaihautu mai i to AWS, Asure, papaa raraunga (kei a koe he API ki tetahi waahi hei whakaatu i o mihini rere, tika?).
He mea nui te hanganga o te konae pukapuka mo Ansible; me penei te ahua:
[группа]
ip-адрес
ip-адрес
[группа2]
ip-адрес
ip-адрес
Hei whakaputa i taua konae, ka mahia e matou he tuhinga ngawari (me karangahia 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
Kua tae ki te wa ki te tirotiro kei te mahi a Ansible me te pai ki te whiwhi wahitau IP:
/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'hostname' group
Kei roto i te putanga nga ingoa kaihautu o nga miihini i mahia ai te whakahau.
He kupu torutoru mo te wetereo:
- /etc/ansible/./vm_list - hangaia he rarangi mihini
- -i - ara tino ki te konae pukapuka
- -m - korero ki ansible ki te whakamahi i te kōwae anga
- -a ko te tohenga. Ka taea te whakauru i tetahi tono ki konei
- roopu — te ingoa o to huinga. Ki te hiahia koe ki te mahi i tenei ki nga tautau katoa, huri roopu ki te katoa
Me haere whakamua - me ngana ki te mahi git pull i runga i a tatou miihini mariko:
/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'cd /path/to/project && git pull' group
Mena kei roto i te putanga ka kite tatou i nga mea kua tae mai ki te waa, te tango mai ranei i te putunga, katahi ka mahi nga mea katoa.
Inaianei koinei te tikanga o te katoa
Whakaakohia a maatau tuhinga kia rere aunoa ina uru ana ki te peka matua i gitlab
Tuatahi, me whakaahua ake ta tatou tuhinga ka maka ki roto i te konae ka taea te kawe (kia kiia ko exec_pull) -
#!/bin/bash
/etc/ansible/./get_vms && ansible -i /etc/ansible/cloud_ip -m shell -a "$@"
Me haere ki to tatou gitlab me te hanga i tetahi konae ki roto i te kaupapa .gitlab-ci.yml
Ka whakauruhia e matou nga mea e whai ake nei ki roto:
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
Kua reri katoa. Inaianei -
- hanga he kupu whakarite
- Kei te koa ahau kei te mahi nga mea katoa
I te wa e whakawhiti ana i te .yml ki etahi atu kaupapa, me huri noa te ingoa o te ratonga ki te whakaara ano me te ingoa o te roopu ka mahia nga whakahau ansible.
Source: will.com