ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

මේ එහි පිටපතයි කාර්ය සාධනය මත DevOps-40 2020-03-18:

දෙවන කැපවීමෙන් පටන් ගෙන ඕනෑම කේතයක් උරුමයක් බවට පත් වේ, මන්ද ආරම්භක අදහස් කටුක යථාර්ථයෙන් අපසරනය වීමට පටන් ගනී. මෙය හොඳ හෝ නරක නැත, එය තර්ක කිරීමට අපහසු වන අතර ජීවත් විය යුතු දෙයකි. මෙම ක්‍රියාවලියේ කොටසක් ප්‍රතිනිර්මාණය වේ. කේතය ලෙස යටිතල පහසුකම් නැවත සකස් කිරීම. ඇන්සිබල්ව අවුරුද්දකින් රිෆැක්ටර් කරලා පිස්සු කෙලින්නේ නැතුව කොහොමද කියලා කතාව පටන් ගන්නම්.

උරුමයේ උපත

දිනය #1: රෝගියා බිංදුව

ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

වරෙක කොන්දේසි සහිත ව්යාපෘතියක් විය. එහි Dev සංවර්ධන කණ්ඩායමක් සහ Ops ඉංජිනේරුවන් සිටියහ. ඔවුන් එකම ගැටළුව විසඳමින් සිටියහ: සේවාදායකයන් යොදවා යෙදුමක් ධාවනය කරන්නේ කෙසේද. ගැටලුව වූයේ සෑම කණ්ඩායමක්ම මෙම ගැටලුව තමන්ගේම ආකාරයෙන් විසඳා ගැනීමයි. ව්‍යාපෘතියේදී, Dev සහ Ops කණ්ඩායම් අතර දැනුම සමමුහුර්ත කිරීමට Ansible භාවිතා කිරීමට තීරණය විය.

දිනය #89: උරුමයේ උපත

ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

එය තමන්ම නොදැක, ඔවුන්ට එය හැකිතාක් දුරට කිරීමට අවශ්‍ය වූ නමුත් එය උරුමයක් බවට පත් විය. මෙය සිදු වන්නේ කෙසේද?

  • අපිට මෙතන හදිසි වැඩක් තියෙනවා, අපි කුණු හක්කක් කරලා ඒක හදාගමු.
  • ඔබ ලියකියවිලි ලිවීමට අවශ්ය නොවන අතර මෙහි සිදුවන්නේ කුමක්ද යන්න සියල්ල පැහැදිලිය.
  • මම Ansible/Python/Bash/Terraform දන්නවා! බලන්න මට මග හැරිය හැකි ආකාරය!
  • මම Full Stack Overflow Developer කෙනෙක් වන අතර මෙය stackoverflow වෙතින් පිටපත් කර ඇත, එය ක්‍රියා කරන්නේ කෙසේදැයි මම නොදනිමි, නමුත් එය සිසිල් පෙනුමක් ඇති අතර ගැටළුව විසඳයි.

එහි ප්‍රතිඵලයක් වශයෙන්, ඔබට තේරුම්ගත නොහැකි ආකාරයේ ලේඛනගත කේතයක් ලබා ගත හැකිය, එය කරන්නේ කුමක්ද, එය අවශ්‍යද යන්න පැහැදිලි නැත, නමුත් ගැටළුව වන්නේ ඔබ එය සංවර්ධනය කිරීමට, එය වෙනස් කිරීමට, අත්වාරු සහ ආධාරක එකතු කිරීමට අවශ්‍ය වීමයි. , තත්වය තවත් නරක අතට හැරවීම.

- 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: ප්‍රතිනිර්මාණය කිරීම සූදානම් කිරීම

ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

පළමු දෙය වන්නේ සූදානම් වීමයි. අපි මොකද කරන්නේ කියලා තීරණය කරන්න. මෙය සිදු කිරීම සඳහා, අපි සන්නිවේදනය, ගැටළු සහිත ප්රදේශ සොයා ඒවා විසඳීමට ක්රම සොයා ගනිමු. ප්‍රතිඵලය වන සංකල්ප අපි කෙසේ හෝ සටහන් කරමු, උදාහරණයක් ලෙස සංගමයේ ලිපියක්, එවිට ප්‍රශ්නය පැනනගින විට “හොඳම දේ කුමක්ද?” හෝ "කුමක්ද නිවැරදිද?" අපි අපේ පාර නැතිවෙලා නැහැ. අපගේ නඩුවේදී, අපි අදහසට ඇලී සිටියෙමු බෙදා පාලනය කරන්න: අපි යටිතල පහසුකම් කුඩා කැබලි/ගඩොල් වලට කඩා දමමු. මෙම ප්‍රවේශය ඔබට හුදකලා යටිතල පහසුකම් කැබැල්ලක් ගැනීමට, එය කරන්නේ කුමක්ද යන්න තේරුම් ගැනීමට, පරීක්ෂණවලින් ආවරණය කිරීමට සහ කිසිවක් කැඩීමට බියෙන් තොරව එය වෙනස් කිරීමට ඉඩ සලසයි.

ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

යටිතල පහසුකම් පරීක්ෂාව මූලික ගල බවට පත්වන අතර මෙහි යටිතල පහසුකම් පරීක්ෂණ පිරමීඩය සඳහන් කිරීම වටී. හරියටම සංවර්ධනය වෙමින් පවතින අදහසම, නමුත් යටිතල පහසුකම් සඳහා: අපි ඉන්ඩෙන්ටේෂන් වැනි සරල දේවල් පරීක්ෂා කරන ලාභ ඉක්මන් පරීක්ෂණවල සිට සමස්ත යටිතල ව්‍යූහයම යොදවන මිල අධික පූර්ණ පරීක්ෂණ වෙත මාරු වෙමු.

ඇසිබල් පරීක්ෂණ උත්සාහයන්

අපි ව්‍යාපෘතියේ Ansible පරීක්ෂණ ආවරණය කළ ආකාරය විස්තර කිරීමට පෙර, ගත් තීරණවල සන්දර්භය අවබෝධ කර ගැනීම සඳහා මට කලින් භාවිතා කිරීමට අවස්ථාව ලැබුණු උත්සාහයන් සහ ප්‍රවේශයන් මම විස්තර කරමි.

දින අංකය -997: SDS ප්‍රතිපාදන

ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

මම පළමු වරට ඇන්සිබල් පරීක්‍ෂා කළේ SDS (මෘදුකාංග අර්ථ දක්වා ඇති ගබඩාව) සංවර්ධනය කිරීමේ ව්‍යාපෘතියක ය. මෙම මාතෘකාව පිළිබඳ වෙනම ලිපියක් ඇත
ඔබේ බෙදා හැරීම පරීක්ෂා කිරීමේදී කිහිලිකරු මත බයිසිකල් කඩන ආකාරය, නමුත් කෙටියෙන් කිවහොත්, අපි ප්‍රතිලෝම පරීක්ෂණ පිරමීඩයක් සමඟ අවසන් වූ අතර අපි එක් භූමිකාවක් සඳහා මිනිත්තු 60-90 ක් ගත කළෙමු, එය දිගු කාලයක්. පදනම වූයේ e2e පරීක්ෂණ, i.e. අපි සම්පූර්ණ ස්ථාපනයක් යොදවා පසුව එය පරීක්ෂා කළා. ඊටත් වඩා දරුණු වූයේ ඔහුගේම බයිසිකලයක් සොයා ගැනීමයි. නමුත් මම පිළිගත යුතුයි, මෙම විසඳුම ක්‍රියාත්මක වූ අතර ස්ථාවර නිකුතුවකට ඉඩ ලබා දුන්නේය.

දිනය # -701: ඇන්සිබල් සහ ටෙස්ට් කුස්සිය

ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

Ansible පරීක්ෂණ අදහසෙහි වර්ධනය වූයේ සූදානම් කළ මෙවලම්, එනම් test kitchen / kitchen-ci සහ inspec භාවිතයයි. තේරීම තීරණය කරනු ලැබුවේ රූබි පිළිබඳ දැනුමෙනි (වැඩිදුර විස්තර සඳහා, හබ්රේ පිළිබඳ ලිපිය බලන්න: YML ක්‍රමලේඛකයින් ඇන්සිබල් පරීක්ෂා කිරීමට සිහින දකිනවාද?) භූමිකාවන් 40 ක් සඳහා විනාඩි 10 ක් පමණ වේගයෙන් වැඩ කළා. අපි අතථ්‍ය යන්ත්‍ර ඇසුරුමක් නිර්මාණය කර ඇතුළත පරීක්ෂණ ක්‍රියාත්මක කළෙමු.

ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

පොදුවේ ගත් කල, විසඳුම ක්‍රියාත්මක වූ නමුත් විෂමජාතීත්වය හේතුවෙන් යම් අවසාදිතයක් තිබුණි. පරීක්ෂණයට ලක් වූ පුද්ගලයින් සංඛ්‍යාව කුඩා භූමිකාවන් ඒකාබද්ධ කරමින් මූලික භූමිකාවන් 13 ක් සහ මෙටා භූමිකාවන් 2 ක් දක්වා වැඩි කළ විට, හදිසියේම පරීක්ෂණ මිනිත්තු 70 ක් ක්‍රියාත්මක වීමට පටන් ගත් අතර එය 2 ගුණයක් පමණ දිගු වේ. XP (අතිශයින්ම ක්‍රමලේඛන) පුරුදු ගැන කතා කිරීම අපහසු වූ නිසා... කිසිවෙකු විනාඩි 70 ක් බලා සිටීමට කැමති නැත. ප්රවේශය වෙනස් කිරීමට හේතුව මෙයයි

දිනය # -601: අණු සහ අණු

ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

සංකල්පමය වශයෙන්, මෙය testkitchen හා සමාන වේ, අපි පමණක් භූමිකාව පරීක්ෂා කිරීම docker වෙත ගෙන ගොස් තොගය වෙනස් කළෙමු. එහි ප්රතිඵලයක් වශයෙන්, භූමිකාවන් 20 ක් සඳහා කාලය ස්ථාවර 25-7 විනාඩි දක්වා අඩු විය.

ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

පරීක්‍ෂා කළ භූමිකා ගණන 17 දක්වා වැඩි කිරීමෙන් සහ භූමිකා 45ක් ඇතුළත් කිරීමෙන්, අපි මෙය ජෙන්කින්ස් වහලුන් 28ක් මත මිනිත්තු 2කින් ධාවනය කළෙමු.

දිනය #167: ව්‍යාපෘතියට Ansible පරීක්ෂණ එකතු කිරීම

ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

බොහෝ දුරට ඉඩ, එය කඩිමුඩියේ ප්රතිනිර්මාණය කිරීමේ කාර්යය කිරීමට නොහැකි වනු ඇත. කුඩා කැබලිවලට කඩා තේ හැන්දකින් අලි කෑල්ල කන්න හැකි වන පරිදි කාර්යය මැනිය යුතුය. ඔබ නිවැරදි දිශාවට ගමන් කරනවාද, කොපමණ කාලයක් යා යුතුද යන්න පිළිබඳ අවබෝධයක් තිබිය යුතුය.

ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

පොදුවේ ගත් කල, එය සිදු කරන්නේ කෙසේද යන්න ගැටළුවක් නොවේ, ඔබට කඩදාසි කැබැල්ලක ලිවිය හැකිය, ඔබට අල්මාරිය මත ස්ටිකර් දැමිය හැකිය, ඔබට ජිරා හි කාර්යයන් නිර්මාණය කළ හැකිය, නැතහොත් ඔබට ගූගල් ඩොක්ස් විවෘත කර වත්මන් තත්ත්වය ලියා ගත හැකිය. එතන. මෙම ක්රියාවලිය ක්ෂණිකව නොපවතින කාරනයෙන් කකුල් වර්ධනය වේ, එය දිගු හා වෙහෙසකාරී වනු ඇත. ප්‍රතිනිර්මාණය කිරීමේදී ඔබ අදහස්වලින් දැවී යාමට, වෙහෙසට පත් වීමට සහ යටපත් වීමට කිසිවෙකුට අවශ්‍ය යැයි සිතිය නොහැක.

නැවත සකස් කිරීම සරලයි:

  • කන්න.
  • නින්ද.
  • කේතය.
  • IaC පරීක්ෂණය.
  • නැවත නැවත කරන්න

අපි අපේක්ෂිත ඉලක්කය කරා ළඟා වන තුරු අපි මෙය නැවත කරන්නෙමු.

ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

සෑම දෙයක්ම වහාම පරීක්ෂා කිරීම ආරම්භ කිරීමට නොහැකි විය හැකිය, එබැවින් අපගේ පළමු කාර්යය වූයේ ලින්ටින් කිරීම සහ වාක්‍ය ඛණ්ඩය පරීක්ෂා කිරීමෙනි.

දිනය #181: Green Build Master

ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

Linting යනු Green Build Master වෙත වන කුඩා පළමු පියවරකි. මෙය කිසිවක් පාහේ බිඳ නොදමනු ඇත, නමුත් එය ඔබට ක්‍රියාවලි නිදොස් කිරීමට සහ ජෙන්කින්ස් හි හරිත ගොඩනැගීමට ඉඩ සලසයි. අදහස වන්නේ කණ්ඩායම අතර පුරුදු වර්ධනය කිරීමයි:

  • රතු පරීක්ෂණ නරකයි.
  • මම ආවෙ මොකක් හරි දෙයක් හදන්න සහ ඒ එක්කම ඔයාට කලින් තිබුනට වඩා කෝඩ් එක ටිකක් හොඳ කරන්න.

දිනය #193: ලින්ටින් සිට ඒකක පරීක්ෂණ දක්වා

ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

කේතය මාස්ටර් වෙත ලබා ගැනීමේ ක්‍රියාවලිය ගොඩනඟා ගැනීමෙන් පසු, ඔබට පියවරෙන් පියවර වැඩිදියුණු කිරීමේ ක්‍රියාවලිය ආරම්භ කළ හැකිය - දියත් කිරීමේ භූමිකාවන් සමඟ ලින්ටින් ප්‍රතිස්ථාපනය කිරීම, ඔබට එය දුර්වලතාවයකින් තොරව පවා කළ හැකිය. භූමිකාවන් යෙදිය යුතු ආකාරය සහ ඒවා ක්‍රියා කරන ආකාරය ඔබ තේරුම් ගත යුතුය.

දිනය #211: ඒකකයේ සිට ඒකාබද්ධතා පරීක්ෂණ දක්වා

ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

බොහෝ භූමිකාවන් ඒකක පරීක්ෂණවලින් ආවරණය වී ඇති අතර සෑම දෙයක්ම ලින්ක් කර ඇති විට, ඔබට ඒකාබද්ධතා පරීක්ෂණ එකතු කිරීමට ඉදිරියට යා හැක. එම. යටිතල ව්‍යුහය තුළ එක ගඩොල් එකක්වත් පරීක්ෂා කිරීම නොව, ඒවායේ සංයෝජනයක්, උදාහරණයක් ලෙස, සම්පූර්ණ උදාහරණ වින්‍යාසය.

ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

ජෙන්කින්ස් භාවිතා කරමින්, අපි සමාන්තරව භූමිකාවන්/ක්‍රීඩා පොත්, පසුව බහාලුම්වල ඒකක පරීක්ෂණ සහ අවසාන වශයෙන් ඒකාබද්ධතා පරීක්ෂණ බොහෝ අදියරයන් උත්පාදනය කළෙමු.

Jenkins + Docker + Ansible = පරීක්ෂණ

ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

  1. Repo පරීක්ෂා කර ගොඩනැගීමේ අදියර උත්පාදනය කරන්න.
  2. lint playbook අදියර සමාන්තරව ධාවනය කරන්න.
  3. ලින්ට් භූමිකාවේ අදියර සමාන්තරව ධාවනය කරන්න.
  4. සින්ටැක්ස් චෙක් රෝල් අදියර සමාන්තරව ක්‍රියාත්මක කරන්න.
  5. පරීක්ෂණ භූමිකාවේ අදියර සමාන්තරව ධාවනය කරන්න.
    1. ලින්ට් භූමිකාව.
    2. වෙනත් භූමිකාවන් මත යැපීම පරීක්ෂා කරන්න.
    3. සින්ටැක්ස් පරීක්ෂා කරන්න.
    4. ඩොකර් උදාහරණය සාදන්න
    5. Molecule/default/playbook.yml ධාවනය කරන්න.
    6. දුර්වලතාවය පරීක්ෂා කරන්න.
  6. ඒකාබද්ධතා පරීක්ෂණ ධාවනය කරන්න
  7. අවසානයි

දිනය #271: බස් සාධකය

ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

මුලදී, ප්‍රතිනිර්මාණය කිරීම සිදු කළේ පුද්ගලයන් දෙදෙනෙකු හෝ තිදෙනෙකුගෙන් යුත් කුඩා කණ්ඩායමක් විසිනි. ඔවුන් මාස්ටර් තුළ කේතය සමාලෝචනය කළා. කාලයාගේ ඇවෑමෙන්, කණ්ඩායම කේතය ලියන ආකාරය පිළිබඳ දැනුම වර්ධනය කර ගත් අතර කේත සමාලෝචනය යටිතල පහසුකම් සහ එය ක්‍රියා කරන ආකාරය පිළිබඳ දැනුම ව්‍යාප්ත කිරීමට දායක විය. මෙහි විශේෂත්වය වූයේ කාලසටහනකට අනුව විචාරකයින් එකින් එක තෝරා ගැනීමයි, i.e. යම් තරමක සම්භාවිතාවක් සමඟ ඔබ නව යටිතල පහසුකම් කොටසකට නැඟී යනු ඇත.

ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

තවද එය මෙහි සුවපහසු විය යුතුය. සමාලෝචනයක් කිරීම පහසුය, එය කළ කාර්යයේ රාමුව තුළ සහ සාකච්ඡා ඉතිහාසය බලන්න. අපි jenkins + bitbucket + jira ඒකාබද්ධ කර ඇත.

නමුත් ඒ අනුව, සමාලෝචනයක් කෝකටත් තෛලයක් නොවේ; කෙසේ හෝ, අපි ප්‍රධාන කේතයට ඇතුළු වූ අතර, එමඟින් අපට පරීක්ෂණ අසාර්ථක විය:

- 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: පරීක්ෂණ වේගවත් කිරීම

ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

කාලයාගේ ඇවෑමෙන්, තවත් පරීක්ෂණ සිදු විය, ගොඩ නැගීම මන්දගාමී විය, නරකම අවස්ථාවක පැයක් දක්වා. එක් රෙට්රෝ එකක "පරීක්ෂණ තිබීම හොඳයි, නමුත් ඒවා මන්දගාමීයි" වැනි වාක්‍ය ඛණ්ඩයක් විය. එහි ප්‍රතිඵලයක් වශයෙන්, අපි අතථ්‍ය යන්ත්‍රවල ඒකාබද්ධතා පරීක්ෂණ අත්හැර දමා එය වේගවත් කිරීම සඳහා Docker සඳහා අනුවර්තනය කළෙමු. භාවිතා කරන මෙවලම් සංඛ්‍යාව අඩු කිරීම සඳහා අපි testinfra වෙනුවට ansible verifier ද ආදේශ කළෙමු.

ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

හරියටම කිවහොත්, පියවර මාලාවක් තිබුණි:

  1. ඩොකර් වෙත මාරු වන්න.
  2. පරායත්තතා හේතුවෙන් අනුපිටපත් වන භූමිකාව පරීක්ෂාව ඉවත් කරන්න.
  3. වහලුන් සංඛ්යාව වැඩි කරන්න.
  4. ටෙස්ට් ධාවන අනුපිළිවෙල.
  5. ලින්ට් කිරීමේ හැකියාව සෑම එක් විධානයක් සමඟ දේශීයව.

ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

එහි ප්රතිඵලයක් වශයෙන් ජෙන්කින්ස් මත නල මාර්ගය ද ඒකාබද්ධ විය

  1. ගොඩනැගීමේ අදියර සාදන්න.
  2. සියල්ල සමාන්තරව ලින්ට් කරන්න.
  3. පරීක්ෂණ භූමිකාවේ අදියර සමාන්තරව ධාවනය කරන්න.
  4. අවසන් කරන්න.

උගත් පාඩම්

ගෝලීය විචල්‍යයන්ගෙන් වළකින්න

Ansible ගෝලීය විචල්‍යයන් භාවිතා කරයි, පෝරමයේ අර්ධ විසඳුමක් ඇත පුද්ගලික_භූමිකාව_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}}

ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

හාස්‍යජනක දෙය නම්, ක්‍රීඩා පොත්වල ප්‍රතිඵලය රඳා පවතින්නේ භූමිකාවන් ලැයිස්තුගත කර ඇති අනුපිළිවෙල වැනි සෑම විටම නොපැහැදිලි දේවල් මත වීමයි. අවාසනාවකට මෙන්, මෙය Ansible හි ස්වභාවය වන අතර කළ හැකි හොඳම දෙය නම් යම් ආකාරයක එකඟතාවයක් භාවිතා කිරීමයි, උදාහරණයක් ලෙස, භූමිකාවක් තුළ, මෙම භූමිකාවේ විස්තර කර ඇති විචල්‍යය පමණක් භාවිතා කරන්න.

නරක: ගෝලීය විචල්‍ය භාවිතා කරන්න.

# 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

ලූප් පාලන විචල්‍යය භාවිතා කරන්න

නරක: ලූප වල සම්මත විචල්‍ය භාවිතා කරන්න 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

හෑෂ් ශබ්ද කෝෂවලින් වළකින්න, පැතලි ව්‍යුහය භාවිතා කරන්න

භූමිකාවක් එහි එක් පරාමිතියක හැෂ්/ශබ්දකෝෂයක් අපේක්ෂා කරන්නේ නම්, අපට ළමා පරාමිති වලින් එකක් වෙනස් කිරීමට අවශ්‍ය නම්, අපට සම්පූර්ණ හැෂ්/ශබ්දකෝෂය ප්‍රතික්ෂේප කිරීමට අවශ්‍ය වනු ඇත, එය වින්‍යාස සංකීර්ණතාව වැඩි කරයි.

නරක: හෑෂ්/ශබ්දකෝෂය භාවිතා කරන්න.

---
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

Ansible verifier

අණුවේදී, නිදසුන නිවැරදිව වින්‍යාස කර ඇත්දැයි පරීක්ෂා කිරීමට ඇසිබල් භාවිතා කළ හැකිය, එපමනක් නොව, 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

සංකීර්ණ තර්කනය මොඩියුල සහ ප්ලගින වලට දමන්න

Ansible ප්‍රකාශන ප්‍රවේශයක් වෙනුවෙන් පෙනී සිටී, එබැවින් ඔබ කේත ශාඛා කිරීම, දත්ත පරිවර්තනය, කවච මොඩියුල කරන විට, කේතය කියවීමට අපහසු වේ. මෙයට එරෙහිව සටන් කිරීමට සහ තේරුම් ගැනීමට සරලව තබා ගැනීමට, ඔබේම මොඩියුල නිර්මාණය කිරීමෙන් මෙම සංකීර්ණතාවයට එරෙහිව සටන් කිරීම අතිරික්ත නොවේ.

ඉඟි සහ උපක්‍රම සාරාංශ කරන්න

  1. ගෝලීය විචල්‍යයන්ගෙන් වළකින්න.
  2. උපසර්ග භූමිකාව විචල්‍යයන්.
  3. ලූප් පාලන විචල්‍යය භාවිතා කරන්න.
  4. ආදාන විචල්‍යයන් පරීක්ෂා කරන්න.
  5. හෑෂ් ශබ්ද කෝෂවලින් වළකින්න, පැතලි ව්‍යුහය භාවිතා කරන්න.
  6. දුර්වල ක්‍රීඩා පොත් සහ භූමිකාවන් සාදන්න.
  7. විධාන කවච මොඩියුල භාවිතා කිරීමෙන් වළකින්න.
  8. අණු හරහා ඔබේ භූමිකාවන් පරීක්ෂා කරන්න.
  9. සංකීර්ණ තර්කනය මොඩියුල සහ ප්ලගින වලට දමන්න.

නිගමනය

ඇන්සිබල් පරීක්ෂා කිරීම ආරම්භ කරන්නේ කෙසේද, ව්‍යාපෘතිය වසරකින් නැවත සකස් කර පිස්සු වට්ටන්න එපා

ඔබට IaC තිබුණත්, ඔබට ගොස් ව්‍යාපෘතියක යටිතල පහසුකම් ප්‍රතිනිර්මාණය කළ නොහැක. මෙය ඉවසීම, කාලය සහ දැනුම අවශ්‍ය වන දිගු ක්‍රියාවලියකි.

UPD1 2020.05.01 20:30 — ඔබට භාවිතා කළ හැකි ක්‍රීඩා පොත් වල ප්‍රාථමික පැතිකඩ සඳහා callback_whitelist = profile_tasks දිගු කලක් වැඩ කරන දේ හරියටම තේරුම් ගැනීමට. ඊට පස්සේ අපි හරහා යනවා Ansible ත්වරණය සම්භාව්ය. ඔබටත් උත්සාහ කළ හැකිය මයිටොජන්
UPD2 2020.05.03 16:34 - ඉංග්රීසි අනුවාදය

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න