Ehihie ọma
Anyị nwere ọtụtụ ụyọkọ igwe ojii nwere nnukwu igwe mebere nke ọ bụla. Anyị na-akwado ihe a niile na Hetzner. N'ụyọkọ ọ bụla anyị nwere otu igwe igwe, a na-ewepụta foto site na ya wee kesaa ya ozugbo na igwe ọ bụla mebere n'ime ụyọkọ ahụ.
Atụmatụ a anaghị ekwe ka anyị jiri ndị na-agba ọsọ gitlab na-emekarị, ebe ọ bụ na ọtụtụ nsogbu na-ebilite mgbe ọtụtụ ndị na-agba ọsọ na-edebanye aha na-apụta, nke kpaliri anyị ịchọta ihe mgbagwoju anya ma dee akụkọ a / akwụkwọ ntuziaka.
Nke a nwere ike ọ bụghị omume kachasị mma, mana ngwọta a yiri ka ọ dị mfe ma dị mfe dịka o kwere mee.
Maka nkuzi, biko hụ pusi.
Ngwunye achọrọ na igwe igwe:
- eke
- gaa
- faịlụ na igodo ssh
Ụkpụrụ izugbe nke imejuputa eriri afọ akpaka na igwe mebere ọ bụla bụ na ị chọrọ igwe nke a ga-etinye ike na ya. Site na igwe a, ike ga-eziga iwu git pull wee malitegharịa ọrụ emelitere. Maka ebumnuche ndị a, anyị mepụtara igwe mebere igwe dị iche na mpụga ụyọkọ wee tinye na ya:
- eke
- azịza
- gitlab-ọsọ
Site na okwu nhazi - ịkwesịrị ịdebanye aha gitlab-ọsọ, mee ssh-keygen, bulite igodo ssh ọha nke igwe a .ssh/authorized_keys
n'elu igwe igwe, oghe ọdụ ụgbọ mmiri 22 maka ike na igwe igwe.
Ugbu a, ka anyị hazie ike
Ebe ọ bụ na ebumnuche anyị bụ ịmegharị ihe niile nwere ike ime. Na faịlụ /etc/ansible/ansible.cfg
anyị ga-ewepụ akara ahụ host_key_checking = False
nke mere na onye nwere ike ghara ịrịọ maka nkwenye nke igwe ọhụrụ.
Na-esote, ịkwesịrị ịmepụta faịlụ ngwa ahịa na-akpaghị aka maka enwere ike, site na ebe ọ ga-ewere ip nke igwe nke ị ga-eme git pull.
Anyị na-emepụta faịlụ a site na iji Hetzner's API, ị nwere ike were ndepụta nke ndị ọbịa na AWS gị, Asure, nchekwa data (ị nwere API ebe iji gosipụta igwe na-agba ọsọ gị, nri?).
Nhazi nke faịlụ ngwa ahịa dị ezigbo mkpa maka ike ọ kwesịrị ịdị ka nke a:
[группа]
ip-адрес
ip-адрес
[группа2]
ip-адрес
ip-адрес
Iji mepụta faịlụ dị otú ahụ, anyị ga-eme edemede dị mfe (ka anyị kpọọ ya 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
Ọ bụ oge ịlele na ike na-arụ ọrụ ma nwee enyi na ịnweta adreesị IP:
/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'hostname' group
Ihe mmepụta kwesịrị ịnwe aha nnabata nke igwe ndị e ji gbuo iwu ahụ.
Okwu ole na ole gbasara syntax:
- /etc/ansible/./vm_list - mepụta ndepụta igwe
- -i - ụzọ zuru oke na faịlụ ngwa ahịa
- -m - gwa onye nwere ike iji modul shei
- -a bụ arụmụka. Enwere ike itinye iwu ọ bụla ebe a
- otu - aha ụyọkọ gị. Ọ bụrụ na ịchọrọ ime nke a na ụyọkọ niile, gbanwee otu nye mmadụ niile
Ka anyị gaa n'ihu - ka anyị nwaa ime git pull na igwe mebere anyị:
/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'cd /path/to/project && git pull' group
Ọ bụrụ na n'ime mmepụta anyị na-ahụ ugbua ma ọ bụ budata site na ebe nchekwa, mgbe ahụ ihe niile na-arụ ọrụ.
Ugbu a nke a bụ ihe e bu n'uche maka ya
Ka anyị kuziere edemede anyị ka ọ na-agba ọsọ ozugbo mgbe anyị na-etinye aka na ngalaba nna ukwu na gitlab
Mbụ, ka anyị mee ka edemede anyị mara mma ma tinye ya na faịlụ executable (ka anyị kpọọ ya exec_pull) -
#!/bin/bash
/etc/ansible/./get_vms && ansible -i /etc/ansible/cloud_ip -m shell -a "$@"
Ka anyị gaa na gitlab anyị wee mepụta faịlụ na ọrụ ahụ .gitlab-ci.yml
Anyị na-etinye ihe ndị a n'ime:
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
Ihe niile dị njikere. Ugbu a -
- mee nkwa
- Obi dị m ụtọ na ihe niile na-arụ ọrụ
Mgbe ị na-ebufe .yml na ọrụ ndị ọzọ, naanị ịkwesịrị ịgbanwe aha ọrụ ahụ ka ịmalitegharịa yana aha ụyọkọ nke a ga-eme iwu ndị nwere ike ime.
isi: www.habr.com