እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

ግልባጩ ይህ ነው። ትርዒቶች ላይ DevOps-40 2020-03-18:

ከሁለተኛው ቁርጠኝነት ጀምሮ, ማንኛውም ኮድ ቅርስ ይሆናል, ምክንያቱም የመነሻ ሀሳቦች ከአስከፊው እውነታ መለየት ይጀምራሉ. ይህ ጥሩም መጥፎም አይደለም፣ ለመከራከር አስቸጋሪ የሆነ እና አብሮ መኖር ያለበት የተሰጠ ነው። የዚህ ሂደት አካል እንደገና ማደስ ነው። መሠረተ ልማትን እንደ ኮድ ማደስ. በዓመት ውስጥ Ansible እንዴት ማበድ እንደማይችል ታሪኩ ይጀምር።

የቅርስ ልደት

ቀን #1፡ የታካሚ ዜሮ

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

በአንድ ወቅት ሁኔታዊ ፕሮጀክት ነበር። የዴቭ ልማት ቡድን እና የኦፕስ መሐንዲሶች ነበሩት። እነሱ ተመሳሳይ ችግር እየፈቱ ነበር: አገልጋዮችን እንዴት ማሰማራት እና መተግበሪያን ማሄድ እንደሚቻል. ችግሩ እያንዳንዱ ቡድን ይህንን ችግር በራሱ መንገድ የፈታው ነበር። በፕሮጀክቱ ላይ በዴቭ እና ኦፕስ ቡድኖች መካከል እውቀትን ለማመሳሰል Ansible ን ለመጠቀም ተወስኗል።

ቀን # 89: የቅርስ ልደት

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

እራሳቸውን ሳያውቁ በተቻለ መጠን በተቻለ መጠን ሊያደርጉት ፈልገው ነበር, ነገር ግን ቅርስ ሆኖ ተገኘ. ይህ እንዴት ይሆናል?

  • እዚህ አስቸኳይ ተግባር አለን ፣ ቆሻሻ ጠለፋ እናድርግ እና ከዚያ እናስተካክለው።
  • ሰነዶችን መጻፍ አያስፈልግዎትም እና ሁሉም ነገር እዚህ ምን እየተደረገ እንዳለ ግልጽ ነው.
  • እኔ Asible/Python/Bash/Teraform አውቃለሁ! እንዴት መራቅ እንደምችል ተመልከት!
  • እኔ Full Stack Overflow ገንቢ ነኝ እና ይህንን ከተደራራቢ ፍሰት ገልብጣለሁ፣ እንዴት እንደሚሰራ አላውቅም፣ ግን አሪፍ ይመስላል እና ችግሩን ይፈታል።

በውጤቱም, ምንም አይነት ሰነድ የሌለበትን ለመረዳት የማይቻል የኮድ አይነት ማግኘት ይችላሉ, ምን እንደሚሰራ ግልጽ አይደለም, አስፈላጊ እንደሆነ ግልጽ አይደለም, ነገር ግን ችግሩ እሱን ማዳበር, ማስተካከል, ክራንች እና ድጋፎችን መጨመር ያስፈልግዎታል. , ሁኔታውን የበለጠ ያባብሰዋል.

- hosts: localhost
  tasks:
    - shell: echo -n Z >> a.txt && cat a.txt
      register: output
      delay: 1
      retries: 5
      until: not output.stdout.find("ZZZ")

ቀን #109: የችግሩን ግንዛቤ

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

መጀመሪያ ላይ የተፀነሰው እና የተተገበረው የIaC ሞዴል የተጠቃሚዎችን/ንግድ/የሌሎች ቡድኖችን መስፈርቶች አያሟላም፣ እና በመሠረተ ልማት ላይ ለውጦችን ለማድረግ ጊዜው አሁን ተቀባይነት የለውም። በዚህ ጊዜ, ግንዛቤ የሚመጣው እርምጃ ለመውሰድ ጊዜው ነው.

IaC refactoring

ቀን #139: በእርግጥ ማደስ ያስፈልግዎታል?

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

ወደ ተሃድሶ ከመቸኮልዎ በፊት፣ በርካታ አስፈላጊ ጥያቄዎችን መመለስ አለቦት፡-

  1. ይህ ሁሉ ለምን ያስፈልግዎታል?
  2. ጊዜ አለህ?
  3. እውቀት በቂ ነው?

ለጥያቄዎቹ እንዴት መልስ መስጠት እንዳለቦት ካላወቁ፣ ተሃድሶው ገና ከመጀመሩ በፊት ያበቃል፣ ወይም ደግሞ እየባሰ ሊሄድ ይችላል። ምክንያቱም ልምድ ነበረው ( 200 የመሰረተ ልማት ኮድ መስመሮችን በመሞከር የተማርኩት), ከዚያም ፕሮጀክቱ ሚናዎችን ለመጠገን እና በፈተናዎች ለመሸፈን የእርዳታ ጥያቄ ደረሰ.

ቀን # 149: ማደስን በማዘጋጀት ላይ

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

የመጀመሪያው ነገር ማዘጋጀት ነው. ምን እንደምናደርግ ይወስኑ. ይህንን ለማድረግ, እንገናኛለን, የችግር ቦታዎችን እናገኛለን እና እነሱን ለመፍታት መንገዶችን እንወስዳለን. የውጤቱን ፅንሰ-ሀሳቦች በሆነ መንገድ እንመዘግባለን, ለምሳሌ አንድ መጣጥፍ በመግባባት, ስለዚህ ጥያቄ በሚነሳበት ጊዜ "ምርጥ ምንድነው?" ወይም "ትክክለኛው የትኛው ነው?" መንገዳችን አልጠፋንም። በእኛ ሁኔታ, በሃሳቡ ላይ ተጣብቀን ከፋፍለህ ግዛ: መሠረተ ልማትን ወደ ትናንሽ ቁርጥራጮች / ጡቦች እንከፋፍለን. ይህ አቀራረብ ገለልተኛ የሆነ መሠረተ ልማት እንዲወስዱ ፣ ምን እንደሚሰራ እንዲረዱ ፣ በፈተናዎች እንዲሸፍኑት እና ማንኛውንም ነገር ለመስበር ሳይፈሩ እንዲቀይሩ ያስችልዎታል።

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

የመሠረተ ልማት ሙከራ የማዕዘን ድንጋይ ሆኖ ተገኘ እና እዚህ የመሰረተ ልማት ሙከራ ፒራሚድ መጥቀስ ተገቢ ነው። በትክክል በልማት ላይ ያለው፣ ለመሠረተ ልማት ግን ተመሳሳይ ሀሳብ፡- ቀላል ነገሮችን ከሚፈትሹ እንደ ኢንደንቴሽን ካሉ ርካሽ ፈጣን ፈተናዎች ወደ ውድ ሙሉ መሰረተ ልማቶች ወደሚያሰማሩ ፈተናዎች እየተሸጋገርን ነው።

ሊሆኑ የሚችሉ የሙከራ ሙከራዎች

በፕሮጀክቱ ላይ ሊደረጉ የሚችሉ ፈተናዎችን እንዴት እንደሸፈንን ለመግለፅ ከመሄዳችን በፊት፣ የውሳኔዎቹን አውድ ለመረዳት ቀደም ሲል ለመጠቀም እድሉን ያገኘሁባቸውን ሙከራዎች እና አቀራረቦች እገልጻለሁ።

ቀን ቁጥር -997: SDS አቅርቦት

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

ለመጀመሪያ ጊዜ Ansibleን የሞከርኩት SDS (Software Defined Storage) ለማዘጋጀት በፕሮጄክት ላይ ነበር። በዚህ ርዕስ ላይ የተለየ ጽሑፍ አለ
ስርጭትዎን በሚሞክሩበት ጊዜ ብስክሌቶችን በክራንች ላይ እንዴት እንደሚሰብሩ, ነገር ግን ባጭሩ, እኛ የተገለበጠ የሙከራ ፒራሚድ ጋር ጨርሰናል እና በመሞከር በአንድ ሚና ላይ 60-90 ደቂቃዎች አሳልፈዋል, ይህም ረጅም ጊዜ ነው. መሰረቱ e2e ሙከራዎች ነበር, ማለትም. የተሟላ ጭነት አሰማርተናል እና ከዚያ ሞክረነዋል። ይበልጥ ያባባሰው ደግሞ የራሱ ብስክሌት መፈልሰፍ ነው። ግን መቀበል አለብኝ, ይህ መፍትሄ ሰርቷል እና የተረጋጋ መልቀቅ አስችሏል.

ቀን # -701፡ የሚቻል እና የሙከራ ወጥ ቤት

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

የ Ansible የፈተና ሃሳብ እድገት ዝግጁ የሆኑ መሳሪያዎችን ማለትም የሙከራ ኩሽና / ኩሽና-ሲ እና ኢንስፔክሽን መጠቀም ነበር። ምርጫው የሚወሰነው በሩቢ እውቀት ነው (ለበለጠ ዝርዝር ሀበሬ ላይ ያለውን መጣጥፍ ይመልከቱ፡- የYML ፕሮግራም አውጪዎች የመሞከር ህልም አላቸው?) በፍጥነት ሰርቷል፣ ለ40 ደቂቃ ያህል ለ10 ሚናዎች። የቨርቹዋል ማሽኖችን ፈጠርን እና ወደ ውስጥ ሙከራዎችን አደረግን።

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

በአጠቃላይ, መፍትሄው ሠርቷል, ነገር ግን በተለያየ ልዩነት ምክንያት አንዳንድ ደለል አለ. የተፈተኑ ሰዎች ቁጥር ወደ 13 መሰረታዊ ሚናዎች እና 2 ሜታ ሚናዎች ትናንሽ ሚናዎችን በማጣመር ሲጨምር በድንገት ፈተናዎቹ ለ 70 ደቂቃዎች መሮጥ ጀመሩ ይህም ወደ 2 ጊዜ ያህል ይረዝማል። ስለ XP (እጅግ በጣም ፕሮግራሚንግ) ልምዶች ማውራት አስቸጋሪ ነበር ምክንያቱም... ማንም 70 ደቂቃ መጠበቅ አይፈልግም። አቀራረቡን ለመቀየር ምክንያት የሆነው ይህ ነበር።

ቀን # -601: ሊቻል የሚችል እና ሞለኪውል

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

በፅንሰ-ሀሳብ ፣ ይህ ከ testkitchen ጋር ተመሳሳይ ነው ፣ እኛ ብቻ ሚና ሙከራን ወደ ዶከር አንቀሳቅሰናል እና ቁልል ቀይረን። በውጤቱም, ጊዜው ለ 20 ሚናዎች ወደ የተረጋጋ 25-7 ደቂቃዎች ተቀንሷል.

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

የተሞከሩትን ሚናዎች ቁጥር ወደ 17 በማሳደግ እና 45 ሚናዎችን በመዘርጋት ይህንን በ28 ደቂቃ ውስጥ በ2 የጄንኪንስ ባሪያዎች ላይ ሮጠን።

ቀን #167፡ በፕሮጀክቱ ላይ ሊሆኑ የሚችሉ ፈተናዎችን መጨመር

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

ምናልባትም, የማደስ ስራውን በችኮላ ማከናወን አይቻልም. በትናንሽ ቁርጥራጮች ቆርሰው የዝሆኑን ቁራጭ በሻይ ማንኪያ መብላት እንድትችሉ ስራው የሚለካ መሆን አለበት። በትክክለኛው አቅጣጫ እየተጓዙ እንደሆነ፣ ለምን ያህል ጊዜ መሄድ እንዳለቦት ግንዛቤ መኖር አለበት።

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

በአጠቃላይ እንዴት እንደሚደረግ ምንም ለውጥ አያመጣም, በወረቀት ላይ መጻፍ, በመደርደሪያው ላይ ተለጣፊዎችን ማስቀመጥ, በጂራ ውስጥ ስራዎችን መፍጠር ይችላሉ, ወይም ጎግል ሰነዶችን ከፍተው አሁን ያለውን ሁኔታ ይጻፉ. እዚያ። እግሮቹ የሚበቅሉት ሂደቱ ወዲያውኑ አይደለም, ረጅም እና አሰልቺ ይሆናል. በሃሳብዎ እንዲቃጠሉ፣ እንዲደክሙ እና እንዲደክሙ የሚፈልግ ማንም ሰው የማይመስል ነገር ነው።

የመልሶ ማቋቋም ሂደት ቀላል ነው-

  • ይመገቡ.
  • እንቅልፍ.
  • ኮድ
  • የ IaC ሙከራ
  • ድገም

እና የታሰበው ግብ ላይ እስክንደርስ ድረስ ይህንን እንደግመዋለን.

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

ሁሉንም ነገር ወዲያውኑ መሞከር ላይችል ይችላል, ስለዚህ የመጀመሪያ ስራችን በመደርደር እና አገባብ በማጣራት መጀመር ነበር.

ቀን #181: አረንጓዴ ግንባታ ማስተር

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

ሊንቲንግ ወደ አረንጓዴ ግንባታ ማስተር ትንሽ የመጀመሪያ እርምጃ ነው። ይሄ ምንም ማለት ይቻላል አይሰብርም, ነገር ግን ሂደቶችን ለማረም እና በጄንኪንስ ውስጥ አረንጓዴ ግንባታዎችን ለመሥራት ያስችልዎታል. ሀሳቡ በቡድኑ መካከል ልምዶችን ማዳበር ነው-

  • ቀይ ሙከራዎች መጥፎ ናቸው.
  • የሆነ ነገር ለመጠገን መጣሁ እና በተመሳሳይ ጊዜ ኮዱን ከእርስዎ በፊት ከነበረው ትንሽ የተሻለ ያድርጉት።

ቀን #193: ከሊንቲንግ እስከ ክፍል ሙከራዎች

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

ኮዱን ወደ ጌታው የመግባት ሂደትን ከገነቡ ፣ የደረጃ በደረጃ ማሻሻያ ሂደቱን መጀመር ይችላሉ - ሽፋኑን በአስጀማሪ ሚናዎች በመተካት ፣ ያለ አቅምም እንኳን ማድረግ ይችላሉ። ሚናዎችን እንዴት እንደሚተገበሩ እና እንዴት እንደሚሰሩ መረዳት አለብዎት.

ቀን #211፡ ከአሃድ ወደ ውህደት ሙከራዎች

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

አብዛኛዎቹ ሚናዎች በዩኒት ፈተናዎች ሲሸፈኑ እና ሁሉም ነገር በተሸፈነ ጊዜ፣ ወደ ውህደት ሙከራዎችን ማከል መቀጠል ይችላሉ። እነዚያ። በመሠረተ ልማት ውስጥ አንድ ነጠላ ጡብ መሞከር አይደለም, ነገር ግን የእነሱ ጥምረት, ለምሳሌ, ሙሉ ምሳሌ ውቅር.

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

ጄንኪንስን በመጠቀም ሚናዎችን/መጫወቻ መጽሃፎችን በትይዩ፣ ከዚያም በኮንቴይነሮች ውስጥ የዩኒት ሙከራዎችን እና በመጨረሻም የውህደት ሙከራዎችን የሚያደርጉ ብዙ ደረጃዎችን ፈጥረናል።

ጄንኪንስ + ዶከር + ሊቻል የሚችል = ሙከራዎች

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

  1. ሪፖን ይፈትሹ እና የግንባታ ደረጃዎችን ያመርቱ።
  2. የlint playbook ደረጃዎችን በትይዩ ያሂዱ።
  3. የሊንት ሚና ደረጃዎችን በትይዩ ያካሂዱ።
  4. የአገባብ ፍተሻ ሚና ደረጃዎችን በትይዩ ያሂዱ።
  5. የሙከራ ሚና ደረጃዎችን በትይዩ ያሂዱ።
    1. የሊንት ሚና.
    2. በሌሎች ሚናዎች ላይ ጥገኝነትን ያረጋግጡ።
    3. አገባብ ያረጋግጡ።
    4. ዶከር ምሳሌ ፍጠር
    5. ሞለኪውል አሂድ/ነባሪ/playbook.yml.
    6. አቅምን ያረጋግጡ።
  6. የውህደት ሙከራዎችን ያሂዱ
  7. ጪረሰ

ቀን # 271: የአውቶቡስ ምክንያት

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

መጀመሪያ ላይ የማደስ ስራ በሁለት ወይም ሶስት ሰዎች በትንሽ ቡድን ተካሂዷል. በጌታው ውስጥ ያለውን ኮድ ገምግመዋል። በጊዜ ሂደት, ቡድኑ ኮድ እና ኮድ ግምገማ እንዴት እንደሚጻፍ ዕውቀት አዳብሯል ስለ መሰረተ ልማቱ እና እንዴት እንደሚሰራ ዕውቀትን ለማሰራጨት አስተዋፅኦ አድርጓል. እዚህ ላይ ጎልቶ የሚታየው ገምጋሚዎቹ በአንድ መርሐግብር መሠረት አንድ በአንድ መመረጣቸው ነው፣ ማለትም. በተወሰነ ደረጃ ወደ አዲስ መሠረተ ልማት ትወጣላችሁ።

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

እና እዚህ ምቹ መሆን አለበት. ግምገማ ለማድረግ ምቹ ነው, በየትኛው ተግባር እንደተሰራ እና የውይይት ታሪክን ይመልከቱ. የተዋሃዱ ጄንኪንስ + ቢትቡኬት + ጂራ አሉን።

ግን እንደዛው ፣ ግምገማ ፓናሲ አይደለም ፣ በሆነ መንገድ ፣ ወደ ማስተር ኮድ ገባን ፣ ይህም ፈተናዎችን እንድንፈጥር አድርጎናል

- get_url:
    url: "{{ actk_certs }}/{{ item.1 }}"
    dest: "{{ actk_src_tmp }}/"
    username: "{{ actk_mvn_user }}"
    password: "{{ actk_mvn_pass }}"
  with_subelements:
    - "{{ actk_cert_list }}"
    - "{{ actk_certs }}"
  delegate_to: localhost

- copy:
    src: "{{ actk_src_tmp }}/{{ item.1 }}"
    dest: "{{ actk_dst_tmp }}"
  with_subelements:
    - "{{ actk_cert_list }}"
    - "{{ actk_certs }}"

ከዚያም አስተካክለው, ነገር ግን ቀሪው ቀረ.

get_url:
    url: "{{ actk_certs }}/{{ actk_item }}"
    dest: "{{ actk_src_tmp }}/{{ actk_item }}"
    username: "{{ actk_mvn_user }}"
    password: "{{ actk_mvn_pass }}"
  loop_control:
    loop_var: actk_item
  with_items: "{{ actk_cert_list }}"
  delegate_to: localhost

- copy:
    src: "{{ actk_src_tmp }}/{{ actk_item }}"
    dest: "{{ actk_dst_tmp }}"
  loop_control:
    loop_var: actk_item
  with_items: "{{ actk_cert_list }}"

ቀን # 311: ሙከራዎችን ማፋጠን

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

በጊዜ ሂደት፣ ብዙ ሙከራዎች ነበሩ፣ግንባታዎች ቀስ ብለው እየሄዱ በከፋ ሁኔታ እስከ አንድ ሰአት ድረስ ሄዱ። በአንደኛው ሬትሮ ላይ “ሙከራዎች መኖራቸው ጥሩ ነው፣ ግን ቀርፋፋ ናቸው” የሚል ሀረግ ነበረ። በውጤቱም፣ በምናባዊ ማሽኖች ላይ ያሉ የውህደት ሙከራዎችን ትተን ፈጣን ለማድረግ ለዶከር አስተካክለናል። እንዲሁም ጥቅም ላይ የሚውሉትን መሳሪያዎች ብዛት ለመቀነስ testinfraን በአስደናቂ አረጋጋጭ ተክተናል።

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

በትክክል አነጋገር፣ የእርምጃዎች ስብስብ ነበር፡-

  1. ወደ ዶከር ቀይር።
  2. በጥገኛዎች ምክንያት የተባዛውን የሚና ሙከራን ያስወግዱ።
  3. የባሪያዎችን ብዛት ይጨምሩ.
  4. የሙከራ አሂድ ቅደም ተከተል.
  5. የመለጠጥ ችሎታ ሁሉም በአካባቢው ከአንድ ትዕዛዝ ጋር.

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

በዚህ ምክንያት በጄንኪንስ ላይ ያለው የቧንቧ መስመር እንዲሁ አንድ ሆኗል

  1. የግንባታ ደረጃዎችን ይፍጠሩ.
  2. ሁሉንም በትይዩ.
  3. የሙከራ ሚና ደረጃዎችን በትይዩ ያሂዱ።
  4. ጨርስ.

የምናገኘው ትምህርት ተምሯል

ዓለም አቀፋዊ ተለዋዋጮችን ያስወግዱ

ሊታወቅ የሚችል አለምአቀፍ ተለዋዋጮችን ይጠቀማል, በቅጹ ውስጥ ከፊል መፍትሄ አለ የግል_ሚና_varsነገር ግን ይህ መድሃኒት አይደለም.

አንድ ምሳሌ ልስጥህ። ይኑረን role_a и role_b

# cat role_a/defaults/main.yml
---
msg: a

# cat role_a/tasks/main.yml
---
- debug:
    msg: role_a={{ msg }}

# cat role_b/defaults/main.yml
---
msg: b

# cat role_b/tasks/main.yml
---
- set_fact:
    msg: b
- debug:
    msg: role_b={{ msg }}

- hosts: localhost
  vars:
    msg: hello
  roles:
    - role: role_a
    - role: role_b
  tasks:
    - debug:
        msg: play={{msg}}

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

በጣም የሚያስቅው ነገር የመጫወቻ መጽሐፍት ውጤት ሁልጊዜ ግልጽ ባልሆኑ ነገሮች ላይ ይወሰናል, ለምሳሌ ሚናዎች በተዘረዘሩበት ቅደም ተከተል ላይ. እንደ አለመታደል ሆኖ ፣ ይህ የአንሲቪል ተፈጥሮ ነው እና ሊሰራ የሚችለው ጥሩው ነገር አንድ ዓይነት ስምምነትን መጠቀም ነው ፣ ለምሳሌ ፣ በአንድ ሚና ውስጥ ፣ በዚህ ሚና ውስጥ የተገለጸውን ተለዋዋጭ ብቻ ይጠቀሙ።

ከመጥፎዓለም አቀፍ ተለዋዋጭ ተጠቀም.

# cat roles/some_role/tasks/main.yml
---
debug:
  var: java_home

ጥሩ: ቪ defaults አስፈላጊዎቹን ተለዋዋጮች ይግለጹ እና በኋላ እነሱን ብቻ ይጠቀሙ።

# cat roles/some_role/defaults/main.yml
---
r__java_home:
 "{{ java_home | default('/path') }}"

# cat roles/some_role/tasks/main.yml
---
debug:
  var: r__java_home

ሚና ተለዋዋጮች ቅድመ ቅጥያ

ከመጥፎዓለም አቀፍ ተለዋዋጭ ተጠቀም.

# cat roles/some_role/defaults/main.yml
---
db_port: 5432

ጥሩበተለዋዋጭ ሚናዎች ውስጥ፣ የሚና ስም ቅድመ ቅጥያ ያላቸው ተለዋዋጮችን ይጠቀሙ፣ ይህ፣ ኢንቬንቶሪን በማየት፣ እየሆነ ያለውን ነገር ለመረዳት ቀላል ያደርገዋል።

# cat roles/some_role/defaults/main.yml
---
some_role__db_port: 5432

የ loop መቆጣጠሪያ ተለዋዋጭ ተጠቀም

ከመጥፎመደበኛ ተለዋዋጭ በ loops ይጠቀሙ itemይህ ተግባር/መጫወቻ ደብተር የሆነ ቦታ ከተካተተ ይህ ወደ ያልተጠበቀ ባህሪ ሊያመራ ይችላል።

---
- hosts: localhost
  tasks:
    - debug:
        msg: "{{ item }}"
      loop:
        - item1
        - item2

ጥሩበ loop ውስጥ ተለዋዋጭን እንደገና ይወስኑ loop_var.

---
- hosts: localhost
  tasks:
    - debug:
        msg: "{{ item_name }}"
      loop:
        - item1
        - item2
      loop_control:
        loop_var: item_name

የግቤት ተለዋዋጮችን ያረጋግጡ

ተለዋዋጭ ቅድመ-ቅጥያዎችን ለመጠቀም ተስማምተናል፤ እንደጠበቅነው መገለጻቸውን እና ለምሳሌ በባዶ እሴት እንዳልተገለሉ መመርመሩ እጅግ የላቀ አይሆንም።

ጥሩተለዋዋጮችን ያረጋግጡ።

- name: "Verify that required string variables are defined"
  assert:
    that: ahs_var is defined and ahs_var | length > 0 and ahs_var != None
    fail_msg: "{{ ahs_var }} needs to be set for the role to work "
    success_msg: "Required variables {{ ahs_var }} is defined"
  loop_control:
    loop_var: ahs_var
  with_items:
    - ahs_item1
    - ahs_item2
    - ahs_item3

የሃሽ መዝገበ ቃላትን ያስወግዱ፣ ጠፍጣፋ መዋቅር ይጠቀሙ

አንድ ሚና በአንዱ መመዘኛዎች ውስጥ ሃሽ/መዝገበ-ቃላትን የሚጠብቅ ከሆነ፣ የልጁን መመዘኛዎች አንዱን ለመለወጥ ከፈለግን ሙሉውን ሃሽ/መዝገበ-ቃላት መሻር አለብን፣ ይህም የውቅር ውስብስብነትን ይጨምራል።

ከመጥፎሃሽ/መዝገበ ቃላት ተጠቀም።

---
user:
  name: admin
  group: admin

ጥሩ: ጠፍጣፋ ተለዋዋጭ መዋቅር ይጠቀሙ.

---
user_name: admin
user_group: "{{ user_name }}"

ኃይለኛ የመጫወቻ መጽሐፍትን እና ሚናዎችን ይፍጠሩ

ሚናዎች እና የመጫወቻ ደብተሮች ኃይለኛ መሆን አለባቸው ፣ ምክንያቱም የውቅረት መንሸራተትን እና የሆነን ነገር የመሰበር ፍርሃትን ይቀንሳል። ግን ሞለኪውልን ከተጠቀሙ ይህ ነባሪ ባህሪ ነው።

የትእዛዝ ሼል ሞጁሎችን ከመጠቀም ይቆጠቡ

የሼል ሞጁል መጠቀም የአስገዳጅ ገለጻ ምሳሌን ያስገኛል፣ ከማወጃው ይልቅ፣ እሱም የአንሲብል እምብርት።

ሚናዎችዎን በሞለኪውል ይሞክሩ

ሞለኪውል በጣም ተለዋዋጭ ነገር ነው, ጥቂት ሁኔታዎችን እንመልከት.

ሞለኪውል በርካታ አጋጣሚዎች

В molecule.yml በክፍል ውስጥ platforms ማሰማራት የምትችላቸው ብዙ አስተናጋጆችን መግለጽ ትችላለህ።

---
    driver:
      name: docker
    platforms:
      - name: postgresql-instance
        hostname: postgresql-instance
        image: registry.example.com/postgres10:latest
        pre_build_image: true
        override_command: false
        network_mode: host
      - name: app-instance
        hostname: app-instance
        pre_build_image: true
        image: registry.example.com/docker_centos_ansible_tests
        network_mode: host

በዚህ መሠረት እነዚህ አስተናጋጆች ከዚያ ሊሆኑ ይችላሉ converge.yml ተጠቀም፡

---
- name: Converge all
  hosts: all
  vars:
    ansible_user: root
  roles:
    - role: some_role

- name: Converge db
  hosts: db-instance
  roles:
    - role: some_db_role

- name: Converge app
  hosts: app-instance
  roles:
    - role: some_app_role

ሊቻል የሚችል አረጋጋጭ

በሞለኪውል ውስጥ ምሳሌው በትክክል መዋቀሩን ለመፈተሽ አቅምን መጠቀም ይቻላል፣ በተጨማሪም ይህ ከተለቀቀ በኋላ 3 ነባሪ ነው። እንደ testinfra/inspec ተለዋዋጭ አይደለም፣ ነገር ግን የፋይሉ ይዘቶች ከምንጠብቀው ጋር እንደሚዛመዱ ማረጋገጥ እንችላለን፡-

---
- name: Verify
  hosts: all
  tasks:
    - name: copy config
      copy:
        src: expected_standalone.conf
        dest: /root/wildfly/bin/standalone.conf
        mode: "0644"
        owner: root
        group: root
      register: config_copy_result

    - name: Certify that standalone.conf changed
      assert:
        that: not config_copy_result.changed

ወይም አገልግሎቱን ያሰማሩ፣ እስኪገኝ ድረስ ይጠብቁ እና የጭስ ምርመራ ያድርጉ፡

---
  - name: Verify
    hosts: solr
    tasks:
      - command: /blah/solr/bin/solr start -s /solr_home -p 8983 -force
      - uri:
          url: http://127.0.0.1:8983/solr
          method: GET
          status_code: 200
        register: uri_result
        until: uri_result is not failed
        retries: 12
        delay: 10
      - name: Post documents to solr
        command: /blah/solr/bin/post -c master /exampledocs/books.csv

ውስብስብ ሎጂክን ወደ ሞጁሎች እና ተሰኪዎች ያስገቡ

ሊቻል የሚችል ገላጭ አካሄድን ይደግፋሉ፣ ስለዚህ የኮድ ቅርንጫፍ፣ የውሂብ ለውጥ፣ የሼል ሞጁሎች ሲሰሩ ኮዱ ለማንበብ አስቸጋሪ ይሆናል። ይህንን ለመዋጋት እና ለመረዳት ቀላል ለማድረግ የእራስዎን ሞጁሎች በመፍጠር ይህንን ውስብስብነት ለመዋጋት የላቀ አይሆንም።

ጠቃሚ ምክሮችን እና ዘዴዎችን ያጠቃልሉ

  1. ዓለም አቀፋዊ ተለዋዋጮችን ያስወግዱ.
  2. ሚና ተለዋዋጮች ቅድመ ቅጥያ።
  3. የ loop መቆጣጠሪያ ተለዋዋጭ ተጠቀም።
  4. የግቤት ተለዋዋጮችን ያረጋግጡ።
  5. የሃሽ መዝገበ ቃላትን ያስወግዱ፣ ጠፍጣፋ መዋቅር ይጠቀሙ።
  6. ኃይለኛ የመጫወቻ መጽሐፍትን እና ሚናዎችን ይፍጠሩ።
  7. የትእዛዝ ሼል ሞጁሎችን ከመጠቀም ይቆጠቡ።
  8. ሚናዎችዎን በሞለኪውል ይሞክሩ።
  9. ውስብስብ ሎጂክን ወደ ሞጁሎች እና ተሰኪዎች ያስገቡ።

መደምደሚያ

እንዴት መፈተሽ መጀመር እንደሚቻል, ፕሮጀክቱን በአንድ አመት ውስጥ እንደገና ማደስ እና ማበድ የለበትም

በፕሮጀክት ላይ መሠረተ ልማትን ማደስ ብቻ ሳይሆን IaC ቢኖርዎትም። ይህ ትዕግስት, ጊዜ እና እውቀት የሚጠይቅ ረጅም ሂደት ነው.

UPD1 2020.05.01 20:30 — ለዋና የመጫወቻ መጽሐፍት መገለጫ መጠቀም ትችላለህ callback_whitelist = profile_tasks በትክክል ለረጅም ጊዜ ምን እንደሚሰራ ለመረዳት. ከዚያም እናልፋለን ሊቻል የሚችል የፍጥነት ክላሲኮች. መሞከርም ትችላለህ ሚቶጅን
UPD2 2020.05.03 16:34 - እንግሊዝኛ ስሪት

ምንጭ: hab.com

አስተያየት ያክሉ