د ځواب وړ ازموینې پیل کولو څرنګوالی، په یو کال کې پروژه ریفیکٹر کړئ او لیونۍ مه کوئ

د ځواب وړ ازموینې پیل کولو څرنګوالی، په یو کال کې پروژه ریفیکٹر کړئ او لیونۍ مه کوئ

دا نقل دی کړنې په DevOps-40 2020-03-18:

د دویمې ژمنې څخه پیل کول، هر کوډ میراث کیږي، ځکه چې لومړني نظرونه د سخت واقعیت څخه په جلا کیدو پیل کوي. دا نه ښه دی او نه بد، دا هغه څه دي چې په اړه یې بحث کول ستونزمن دي او باید ورسره ژوند وشي. د دې پروسې یوه برخه بیا کار کول دي. د کوډ په توګه زیربنا بیاکتنه. اجازه راکړئ کیسه په دې پیل وکړو چې څنګه په یو کال کې ځواب ورکوونکی ریفکتور وکړو او لیونی نه شو.

د میراث زیږون

ورځ # 1: ناروغ صفر

د ځواب وړ ازموینې پیل کولو څرنګوالی، په یو کال کې پروژه ریفیکٹر کړئ او لیونۍ مه کوئ

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

ورځ # 89: د میراث زیږون

د ځواب وړ ازموینې پیل کولو څرنګوالی، په یو کال کې پروژه ریفیکٹر کړئ او لیونۍ مه کوئ

پرته لدې چې پخپله دې ته پام وکړي ، دوی غوښتل دا د امکان تر حده غوره ترسره کړي ، مګر دا په میراث بدل شو. دا څنګه کیږي؟

  • موږ دلته یو عاجل کار لرو، راځئ چې یو ناپاک هیک وکړو او بیا یې حل کړو.
  • تاسو اړتیا نلرئ اسناد ولیکئ او هرڅه روښانه دي چې دلته څه پیښیږي.
  • زه ځواب ورکوونکی/پیتون/بش/ټرافارم پیژنم! وګوره چې څنګه کولی شم له ځانه وژغورم!
  • زه د بشپړ سټیک اوور فلو پراختیا کونکی یم او دا د سټیک اوور فلو څخه کاپي شوی ، زه نه پوهیږم چې دا څنګه کار کوي ، مګر دا ښه ښکاري او ستونزه حل کوي.

د پایلې په توګه ، تاسو کولی شئ د نه پوهیدو وړ ډول کوډ ترلاسه کړئ د کوم لپاره چې هیڅ سند شتون نلري ، دا روښانه نده چې دا څه کوي ، ایا ورته اړتیا ده ، مګر ستونزه دا ده چې تاسو اړتیا لرئ دا رامینځته کړئ ، ترمیم یې کړئ ، کرچچونه او ملاتړ اضافه کړئ. ، وضعیت نور هم خرابوي.

- 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 ریفیکٹرینګ

ورځ # 139: ایا تاسو واقعیا ریفکتور کولو ته اړتیا لرئ؟

د ځواب وړ ازموینې پیل کولو څرنګوالی، په یو کال کې پروژه ریفیکٹر کړئ او لیونۍ مه کوئ

مخکې لدې چې تاسو ریفیکٹر ته ګړندۍ شئ ، تاسو باید یو شمیر مهم پوښتنو ته ځواب ووایاست:

  1. تاسو ولې دې ټولو ته اړتیا لرئ؟
  2. ایاتاسو وخت لرئ؟
  3. ایا پوهه کافي ده؟

که تاسو نه پوهیږئ چې څنګه پوښتنو ته ځواب ووایاست، نو بیا به بیاکتنه پای ته ورسیږي مخکې له دې چې پیل شي، یا دا ممکن یوازې خراب شي. ځکه تجربه درلوده( هغه څه چې ما د زیربنا کوډ 200 لینونو ازموینې څخه زده کړل)، بیا پروژې د مرستې لپاره غوښتنه ترلاسه کړه ترڅو رولونه تنظیم کړي او د ازموینې پوښښ وکړي.

ورځ # 149: د بیاکتنې چمتو کول

د ځواب وړ ازموینې پیل کولو څرنګوالی، په یو کال کې پروژه ریفیکٹر کړئ او لیونۍ مه کوئ

لومړی شی چمتو کول دي. پریکړه وکړئ چې موږ به څه وکړو. د دې کولو لپاره، موږ اړیکه ونیسو، د ستونزې ساحې ومومئ او د حل لپاره لارې چارې ومومئ. موږ نتیجه اخیستونکي مفکورې په یو ډول ثبت کوو، د بیلګې په توګه په کنفرنس کې یوه مقاله، نو کله چې پوښتنه راپورته کیږي "څه شی دی؟" یا "کوم سم دی؟" موږ خپله لاره نه ده ورکه کړې. زموږ په قضیه کې، موږ مفکورې ته ودرېږو تقسیم او حکومت کول: موږ زیربنا په کوچنیو ټوټو / خښتو ویشو. دا طریقه تاسو ته اجازه درکوي چې د زیربنا یوه جلا ټوټه واخلئ، پوه شئ چې دا څه کوي، د ازموینو سره پوښ ​​​​کړئ او د هیڅ شی ماتولو ویره پرته یې بدل کړئ.

د ځواب وړ ازموینې پیل کولو څرنګوالی، په یو کال کې پروژه ریفیکٹر کړئ او لیونۍ مه کوئ

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

د ځواب وړ ازموینې هڅې

مخکې له دې چې موږ تشریح کړو چې څنګه موږ په پروژه کې ځواب ورکوونکي ازموینې پوښلې، زه به هغه هڅې او طریقې بیان کړم چې ما د دې پریکړو په شرایطو د پوهیدو لپاره مخکې د کارولو فرصت درلود.

ورځ نمبر -997: د SDS چمتو کول

د ځواب وړ ازموینې پیل کولو څرنګوالی، په یو کال کې پروژه ریفیکٹر کړئ او لیونۍ مه کوئ

لومړی ځل چې ما د ځواب ورکولو ازموینه وکړه د SDS (د سافټویر تعریف شوي ذخیره) رامینځته کولو پروژه کې وه. په دې اړه جلا مقاله شتون لري
کله چې ستاسو د توزیع آزموینه کوئ څنګه بایسکلونه په کرچونو مات کړئ، مګر په لنډه توګه ، موږ د یو بدل شوي ازموینې پیرامیډ سره پای ته ورسیدو او ازموینې مو په یوه رول کې 60-90 دقیقې تیرې کړې ، کوم چې ډیر وخت دی. اساس یې د e2e ازموینې وې، i.e. موږ یو بشپړ نصب نصب کړ او بیا یې ازموینه وکړه. هغه څه چې نور هم ځورونکي وو د هغه د خپل بایسکل اختراع وه. مګر زه باید اعتراف وکړم ، دې حل کار وکړ او د باثباته خوشې کیدو اجازه یې ورکړه.

ورځ # -701: د ځواب وړ او ازموینې پخلنځي

د ځواب وړ ازموینې پیل کولو څرنګوالی، په یو کال کې پروژه ریفیکٹر کړئ او لیونۍ مه کوئ

د ځواب وړ ازموینې مفکورې پراختیا د چمتو شوي وسیلو کارول و، د بیلګې په توګه د پخلنځي / پخلنځي-ci او معاینه ازموینه. انتخاب د روبي د پوهې له مخې ټاکل شوی و (د نورو جزیاتو لپاره، د هابري مقاله وګورئ: ایا د YML پروګرام کونکي د ځواب وړ ازموینې خوب کوي؟) ګړندی کار وکړ، د 40 رولونو لپاره شاوخوا 10 دقیقې. موږ د مجازی ماشینونو یوه بسته جوړه کړه او دننه یې ازموینې ترسره کړې.

د ځواب وړ ازموینې پیل کولو څرنګوالی، په یو کال کې پروژه ریفیکٹر کړئ او لیونۍ مه کوئ

په عموم کې، حل کار وکړ، مګر د متفاوتۍ له امله یو څه تخریب شتون درلود. کله چې د ازمول شوي خلکو شمیر 13 لومړني رولونو او 2 میټا رولونو ته لوړ شو چې کوچني رولونه ترکیب کوي ، نو ناڅاپه ازموینې د 70 دقیقو لپاره پیل شوې ، کوم چې نږدې 2 ځله اوږد دی. دا ستونزمنه وه چې د XP (ډیرې برنامه کولو) تمرینونو په اړه خبرې وکړئ ځکه چې ... هیڅوک نه غواړي چې 70 دقیقې انتظار وکړي. دا د چلند د بدلون لامل و

ورځ # -601: ځواب ورکوونکی او مالیکول

د ځواب وړ ازموینې پیل کولو څرنګوالی، په یو کال کې پروژه ریفیکٹر کړئ او لیونۍ مه کوئ

په تصور کې، دا د ټیسټ کیچن سره ورته دی، یوازې موږ د رول ټیسټ ډاکر ته لیږدول او سټیک یې بدل کړ. د پایلې په توګه، وخت د 20 رولونو لپاره مستحکم 25-7 دقیقو ته راټیټ شو.

د ځواب وړ ازموینې پیل کولو څرنګوالی، په یو کال کې پروژه ریفیکٹر کړئ او لیونۍ مه کوئ

د ازمول شوي رولونو شمیر 17 ته په زیاتولو او د 45 رولونو په مینځلو سره، موږ دا په 28 دقیقو کې په 2 جینکنز غلامانو کې پرمخ یوسو.

ورځ # 167: پروژې ته د ځواب وړ ازموینې اضافه کول

د ځواب وړ ازموینې پیل کولو څرنګوالی، په یو کال کې پروژه ریفیکٹر کړئ او لیونۍ مه کوئ

ډیری احتمال، دا به امکان ونلري چې د بیا رغونې دنده په چټکۍ سره ترسره کړي. دنده باید د اندازه کولو وړ وي نو تاسو کولی شئ دا په کوچنیو ټوټو وویشئ او د هاتین ټوټه د یو چای چمچ سره وخورئ. دلته باید پوهه وي چې ایا تاسو سم لوري ته روان یاست، څومره وخت ته ځي.

د ځواب وړ ازموینې پیل کولو څرنګوالی، په یو کال کې پروژه ریفیکٹر کړئ او لیونۍ مه کوئ

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

بیاکتنه ساده ده:

  • وخورئ.
  • خوب.
  • کوډ.
  • د IaC ازموینه
  • تکرار کړئ

او موږ دا تر هغه وخته تکراروو تر څو چې ټاکل شوي هدف ته ورسیږو.

د ځواب وړ ازموینې پیل کولو څرنګوالی، په یو کال کې پروژه ریفیکٹر کړئ او لیونۍ مه کوئ

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

ورځ #181: د شنه جوړونې ماسټر

د ځواب وړ ازموینې پیل کولو څرنګوالی، په یو کال کې پروژه ریفیکٹر کړئ او لیونۍ مه کوئ

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

  • سور ټیسټونه خراب دي.
  • زه د یو څه د سمولو لپاره راغلی یم او په ورته وخت کې کوډ یو څه ښه کړئ چې ستاسو دمخه و.

ورځ # 193: له لینټینګ څخه د واحد ازموینې پورې

د ځواب وړ ازموینې پیل کولو څرنګوالی، په یو کال کې پروژه ریفیکٹر کړئ او لیونۍ مه کوئ

ماسټر ته د کوډ ترلاسه کولو پروسې رامینځته کولو سره ، تاسو کولی شئ د ګام په ګام د پرمختګ پروسه پیل کړئ - د پیل کولو رولونو سره د لینډینګ ځای په ځای کول ، تاسو حتی کولی شئ دا د بې کفایتۍ پرته ترسره کړئ. تاسو اړتیا لرئ پوه شئ چې څنګه رولونه پلي کړئ او دوی څنګه کار کوي.

ورځ #211: له واحد څخه د ادغام ازموینې پورې

د ځواب وړ ازموینې پیل کولو څرنګوالی، په یو کال کې پروژه ریفیکٹر کړئ او لیونۍ مه کوئ

کله چې ډیری رولونه د واحد ټیسټونو سره پوښل شوي وي او هرڅه لینټ شوي وي، تاسو کولی شئ د ادغام ازموینې اضافه کولو ته لاړ شئ. هغوی. په زیربنا کې د یوې خښتې ازموینه نه ده، مګر د دوی یو ترکیب، د بیلګې په توګه، د بشپړ مثال ترتیب.

د ځواب وړ ازموینې پیل کولو څرنګوالی، په یو کال کې پروژه ریفیکٹر کړئ او لیونۍ مه کوئ

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

جینکنز + ډاکر + ځواب وړ = ازموینې

د ځواب وړ ازموینې پیل کولو څرنګوالی، په یو کال کې پروژه ریفیکٹر کړئ او لیونۍ مه کوئ

  1. ریپو چیک کړئ او د جوړیدو مرحلې رامینځته کړئ.
  2. د لینټ پلی بوک مرحلې په موازي ډول پرمخ وړئ.
  3. د لینټ رول مرحلې په موازي توګه پرمخ وړئ.
  4. په موازي توګه د نحوي چک رول مرحلې پرمخ وړئ.
  5. په موازي ډول د ازموینې رول مرحلې پرمخ وړئ.
    1. د لینټ رول.
    2. په نورو رولونو تکیه چیک کړئ.
    3. ترکیب چک کړئ.
    4. د ډاکر مثال جوړ کړئ
    5. molecule/default/playbook.yml چلول.
    6. هوښیارتیا چیک کړئ.
  6. د ادغام ازموینې ترسره کړئ
  7. فنلند

ورځ #271: د بس فاکتور

د ځواب وړ ازموینې پیل کولو څرنګوالی، په یو کال کې پروژه ریفیکٹر کړئ او لیونۍ مه کوئ

په لومړي سر کې، د بیا رغونې کار د دوو یا دریو کسانو د یوې کوچنۍ ډلې لخوا ترسره شو. دوی په ماسټر کې کوډ بیاکتنه وکړه. د وخت په تیریدو سره، ټیم د کوډ لیکلو څرنګوالي پوهه رامینځته کړه او د کوډ بیاکتنې د زیربنا او دا څنګه کار کوي په اړه د پوهې خپرولو کې مرسته وکړه. دلته مهمه خبره دا وه چې بیاکتونکي د یو مهال ویش سره سم یو یو انتخاب شوي وو، i.e. د یو څه احتمال سره تاسو به د زیربنا یوې نوې برخې ته ورشئ.

د ځواب وړ ازموینې پیل کولو څرنګوالی، په یو کال کې پروژه ریفیکٹر کړئ او لیونۍ مه کوئ

او دا باید دلته آرام وي. دا مناسبه ده چې بیاکتنه ترسره کړئ، د کوم کار په چوکاټ کې وګورئ، او د خبرو اترو تاریخ. موږ جینکنز + بټ بکټ + جیرا مدغم کړی دی.

مګر د ورته په څیر، بیاکتنه یوه درملنه نه ده؛ یو څه، موږ ماسټر کوډ ته ورسیدو، کوم چې موږ ته فلاپ ازموینې وکړې:

- 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. ختمول

زده کړل شوي درسونه

د نړیوال تغیراتو څخه ډډه وکړئ

ځواب ورکوونکي نړیوال متغیرونه کاروي، په فورمه کې یو اړخیز کار شتون لري شخصي_رول_وار، مګر دا د درملنې درملنه نده.

اجازه راکړئ تاسو ته یو مثال درکړم. اجازه راکړئ 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}}

د ځواب وړ ازموینې پیل کولو څرنګوالی، په یو کال کې پروژه ریفیکٹر کړئ او لیونۍ مه کوئ

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

BAD: نړیوال متغیر وکاروئ.

# 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

مخفف رول متغیرات

BAD: نړیوال متغیر وکاروئ.

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

ښه: د متغیرونو لپاره په رول کې، د رول نوم سره مخکینۍ متغیرات وکاروئ؛ دا، د لیست په کتلو سره، دا به اسانه کړي چې پوه شي چې څه پیښیږي.

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

د لوپ کنټرول متغیر وکاروئ

BAD: په لوپس کې معیاري متغیر وکاروئ item، که چیرې دا دنده/پلے بوک په کوم ځای کې شامل شي ، نو دا ممکن د غیر متوقع چلند لامل شي

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

ښه: له لارې په لوپ کې یو متغیر بیا تعریف کړئ 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

د هش لغتونو څخه ډډه وکړئ، فلیټ جوړښت وکاروئ

که چیرې یو رول د هغې په یوه پیرامیټر کې د هش / قاموس تمه وکړي ، نو که موږ غواړو د ماشوم پیرامیټونو څخه یو یې بدل کړو ، نو موږ به اړتیا ولرو چې ټول هش / قاموس له پامه غورځوو ، کوم چې به د ترتیب پیچلتیا زیاته کړي.

BAD: هش/ لغت وکاروئ.

---
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. د لوپ کنټرول متغیر وکاروئ.
  4. د ننوتلو متغیرات چیک کړئ.
  5. د هش لغتونو څخه ډډه وکړئ، فلیټ جوړښت وکاروئ.
  6. د نامتو لوبو کتابونه او رولونه جوړ کړئ.
  7. د کمانډ شیل ماډلونو کارولو څخه ډډه وکړئ.
  8. خپل رول د مالیکول له لارې ازموئ.
  9. پیچلي منطق په ماډلونو او پلگ انونو کې واچوئ.

پایلې

د ځواب وړ ازموینې پیل کولو څرنګوالی، په یو کال کې پروژه ریفیکٹر کړئ او لیونۍ مه کوئ

تاسو نشئ کولی یوازې لاړ شئ او په یوه پروژه کې زیربنا بیا تنظیم کړئ ، حتی که تاسو IaC لرئ. دا یوه اوږده پروسه ده چې صبر، وخت او پوهې ته اړتیا لري.

UPD1 2020.05.01 20:30 - د لوبو کتابونو لومړني پروفایل کولو لپاره تاسو کارولی شئ callback_whitelist = profile_tasks ترڅو پوه شي چې دقیقا د اوږدې مودې لپاره څه کار کوي. بیا موږ له لارې ځو د ځواب وړ سرعت کلاسیک. تاسو هم هڅه کولی شئ مایتوجن
UPD2 2020.05.03 16:34 - انګلیسي نسخه

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

Add a comment