په بادل کې د مجازی ماشینونو په کلستر کې د ځواب وړ + آٹو ګیټ پل

په بادل کې د مجازی ماشینونو په کلستر کې د ځواب وړ + آٹو ګیټ پل

ښه ورځ

موږ په هر یو کې د ډیری مجازی ماشینونو سره ډیری کلاوډ کلسترونه لرو. موږ دا ټوله سوداګرۍ په هټزنر کې کوربه کوو. په هر کلستر کې موږ یو ماسټر ماشین لرو، یو سنیپ شاټ له هغې څخه اخیستل کیږي او په اتوماتيک ډول د کلستر دننه ټولو مجازی ماشینونو ته ویشل کیږي.

دا سکیم موږ ته اجازه نه راکوي چې په نورمال ډول د ګیټلاب چلونکي وکاروو ، ځکه چې ډیری ستونزې رامینځته کیږي کله چې ډیری ورته راجسټر شوي ریسران را څرګندیږي ، کوم چې موږ ته د حل لارې موندلو او دا مقاله / لارښود لیکلو ته وهڅوو.

دا شاید غوره عمل نه وي، مګر دا حل د امکان تر حده اسانه او ساده ښکاري.

د ښوونې لپاره، مهرباني وکړئ بلی وګورئ.

په ماسټر ماشین کې اړین کڅوړې:

  • پيډون
  • لاړ شه
  • فایل د ssh کلیدونو سره

په ټولو مجازی ماشینونو کې د اتوماتیک ګټ پل پلي کولو عمومي اصول دا دي چې تاسو داسې ماشین ته اړتیا لرئ چې ځواب به یې نصب شي. د دې ماشین څخه، ځواب ورکوونکي به د ګیټ پل کمانډونه واستوي او هغه خدمت بیا پیل کړي چې تازه شوی. د دې موخو لپاره، موږ د کلسترونو څخه بهر یو جلا مجازی ماشین جوړ کړ او نصب یې کړ:

  • پيډون
  • ځواب ویونکی
  • gitlab-رنر

د سازماني مسلو څخه - تاسو اړتیا لرئ د gitlab-runner راجستر کړئ، ssh-keygen جوړ کړئ، د دې ماشین عامه ssh کیلي پورته کړئ .ssh/authorized_keys په ماسټر ماشین کې ، په ماسټر ماشین کې د ځواب ویلو لپاره پورټ 22 خلاص کړئ.

اوس راځئ چې د ځواب وړ ترتیب کړو

ځکه چې زموږ هدف د هر هغه څه اتومات کول دي چې ممکن وي. په دوتنه کې /etc/ansible/ansible.cfg موږ به دا کرښه غیر تبصره کړو host_key_checking = Falseنو ځکه ځواب ورکوونکي د نوي ماشینونو تایید غوښتنه نه کوي.

بیا ، تاسو اړتیا لرئ په اوتومات ډول د ځواب ویلو لپاره د لیست فایل رامینځته کړئ ، له هغه ځایه به دا د ماشینونو ip واخلي چې تاسو ورته اړتیا لرئ git pull ترسره کړئ.

موږ دا فایل د هیټزنر API په کارولو سره رامینځته کوو ، تاسو کولی شئ د خپل AWS ، Asure ، ډیټابیس څخه د کوربه توب لیست واخلئ (تاسو د چلولو ماشینونو ښودلو لپاره یو API لرئ ، سمه ده؟).

د انوینټری فایل جوړښت د ځواب وړ لپاره خورا مهم دی؛ دا باید داسې ښکاري:

[группа]
ip-адрес
ip-адрес

[группа2]
ip-адрес
ip-адрес

د دې ډول فایل رامینځته کولو لپاره ، موږ به یو ساده سکریپټ جوړ کړو (راځئ چې ورته ووایو 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

دا وخت دی چې وګورو چې ځواب ورکونکی کار کوي او د IP پتې ترلاسه کولو سره دوستانه دی:

/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'hostname' group

محصول باید د ماشینونو کوربه نومونه ولري په کوم کې چې کمانډ اجرا شوی و.
د نحو په اړه یو څو خبرې:

  • /etc/ansible/./vm_list - د ماشینونو لیست جوړ کړئ
  • -i - د لیست فایل ته مطلق لاره
  • -m - د شیل ماډل کارولو لپاره ځواب ورکوونکي ته ووایاست
  • - یو دلیل دی. دلته هر ډول کمانډ داخل کیدی شي
  • ګروپ - ستاسو د کلستر نوم. که تاسو اړتیا لرئ دا په ټولو کلسترونو کې وکړئ، ټول ګروپ ته بدل کړئ

راځئ نور لاړ شو - راځئ هڅه وکړو چې زموږ په مجازی ماشینونو کې git pull ترسره کړو:

/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'cd /path/to/project && git pull' group 

که په محصول کې موږ لا دمخه د ذخیره کولو څخه تازه یا پورته کول وګورو ، نو هرڅه کار کوي.

اوس دا هغه څه دي چې دا ټول د دې لپاره و

راځئ چې زموږ سکریپټ زده کړو چې په اوتومات ډول چلیږي کله چې په ګیټلاب کې ماسټر څانګې ته ژمن وي

لومړی، راځئ چې زموږ سکریپټ ډیر ښکلی کړو او د اجرا وړ فایل کې یې واچوو (راځئ چې ورته exec_pull ووایو) -

#!/bin/bash

/etc/ansible/./get_vms && ansible -i /etc/ansible/cloud_ip -m shell -a "$@"

راځئ چې زموږ ګیټلاب ته لاړ شو او په پروژه کې فایل جوړ کړو .gitlab-ci.yml
موږ لاندې دننه دننه کوو:

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 

ټول چمتو دي. اوس -

  • ژمنه وکړه
  • زه خوښ یم چې هرڅه کار کوي

کله چې نورو پروژو ته .yml لیږدئ، تاسو اړتیا لرئ د بیا پیل کولو لپاره د خدمت نوم بدل کړئ او د کلستر نوم چې په هغه کې د منلو وړ امرونه به اجرا شي.

سرچینه: www.habr.com

Add a comment