ሊቻል የሚችል + auto git በደመና ውስጥ ያሉ የቨርቹዋል ማሽኖችን ስብስብ ውስጥ ይጎትታል።

ሊቻል የሚችል + auto git በደመና ውስጥ ያሉ የቨርቹዋል ማሽኖችን ስብስብ ውስጥ ይጎትታል።

እንደምን ዋልክ

በእያንዳንዳቸው ውስጥ ብዙ ቁጥር ያላቸው ምናባዊ ማሽኖች ያሉባቸው በርካታ የደመና ስብስቦች አሉን። ይህንን አጠቃላይ ንግድ በሄትዝነር እናስተናግዳለን። በእያንዳንዱ ክላስተር ውስጥ አንድ ዋና ማሽን አለን ፣ ቅጽበታዊ ገጽ እይታ ከእሱ ተወስዶ በራስ-ሰር በክላስተር ውስጥ ላሉ ሁሉም ምናባዊ ማሽኖች ይሰራጫል።

ይህ እቅድ በመደበኛነት gitlab-ሯጮችን እንድንጠቀም አይፈቅድልንም ፣ ምክንያቱም ብዙ ተመሳሳይ የተመዘገቡ ሯጮች በሚታዩበት ጊዜ ብዙ ችግሮች ስለሚከሰቱ መፍትሄ ለማግኘት እና ይህንን ጽሑፍ/መመሪያ ለመጻፍ ያነሳሳን።

ይህ ምናልባት ምርጥ ልምምድ አይደለም, ነገር ግን ይህ መፍትሄ በተቻለ መጠን ምቹ እና ቀላል ይመስላል.

ለትምህርቱ፣ እባክዎን ድመትን ይመልከቱ።

በዋናው ማሽን ላይ የሚያስፈልጉ ጥቅሎች፡-

  • ጭረት
  • ሂድ
  • በ ssh ቁልፎች ፋይል ያድርጉ

በሁሉም ቨርቹዋል ማሽኖች ላይ አውቶማቲክ ጉት ፑልትን የመተግበር አጠቃላይ መርህ Ansible የሚጫንበት ማሽን ያስፈልግዎታል. ከዚህ ማሽን፣ ansible git pull ትዕዛዞችን ይልካል እና የዘመነውን አገልግሎት እንደገና ያስጀምራል። ለእነዚህ ዓላማዎች፣ ከስብስብ ውጭ የተለየ ምናባዊ ማሽን ፈጠርን እና በላዩ ላይ ጫንን።

  • ጭረት
  • ያረጀ
  • gitlab-ሯጭ

ከድርጅታዊ ጉዳዮች - gitlab-runner መመዝገብ፣ ssh-keygenን መስራት፣ የዚህን ማሽን የህዝብ ssh ቁልፍ ለመስቀል ያስፈልግዎታል .ssh/authorized_keys በማስተር ማሽኑ ላይ፣ ክፍት ወደብ 22 በማስተር ማሽኑ ላይ ለ ansible.

አሁን ሊቻል የሚችልን እናዋቅር

ግባችን የሚቻለውን ሁሉ በራስ ሰር ማድረግ ስለሆነ። በፋይል ውስጥ /etc/ansible/ansible.cfg መስመሩን እንከፍላለን host_key_checking = Falseስለዚህ asible አዲስ ማሽኖች ማረጋገጫ አይጠይቅም.

በመቀጠል git pull ማድረግ ያለብዎትን የማሽኖቹን ip የሚወስድበትን የኢንቬንቴሪ ፋይል በራስ ሰር ማመንጨት ያስፈልግዎታል።

ይህን ፋይል የሄትዝነር ኤፒአይን በመጠቀም እናመነጫለን፣ የአስተናጋጆችን ዝርዝር ከእርስዎ AWS፣ Asure፣ የውሂብ ጎታ መውሰድ ይችላሉ (አሂድ ማሽኖችዎን ለማሳየት የሆነ ቦታ ኤፒአይ አለዎት፣ አይደል?)።

የክምችት ፋይሉ አወቃቀር ለአንሲቪል በጣም አስፈላጊ ነው፣ ይህን መምሰል አለበት፡-

[группа]
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

የአይ ፒ አድራሻዎችን ከመቀበል ጋር ተግባብቶ የሚሰራ እና ተስማሚ መሆኑን ለማረጋገጥ ጊዜው አሁን ነው።

/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 

በውጤቱ ውስጥ ቀድሞውኑ የተዘመነ ወይም ከማጠራቀሚያው ስናወርድ ካየን ሁሉም ነገር እየሰራ ነው።

አሁን ይህ ሁሉ የታሰበበት ነው።

በgitlab ውስጥ ላለው ዋና ቅርንጫፍ ስንገባ ስክሪፕታችንን በራስ ሰር እንዲሰራ እናስተምረው

መጀመሪያ ስክሪፕታችንን የበለጠ ቆንጆ አድርገን ወደ executable ፋይል እናስቀምጠው (exec_pull እንበለው) -

#!/bin/bash

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

ወደ gitlab እንሂድ እና በፕሮጀክቱ ውስጥ ፋይል እንፍጠር .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 ወደ ሌሎች ፕሮጄክቶች ሲያስተላልፍ ፣ እንደገና ለመጀመር የአገልግሎቱን ስም እና የችሎታ ትዕዛዞች የሚፈጸሙበትን የክላስተር ስም መለወጥ ያስፈልግዎታል።

ምንጭ: hab.com

አስተያየት ያክሉ