මේ එහි පිටපතයි
දෙවන කැපවීමෙන් පටන් ගෙන ඕනෑම කේතයක් උරුමයක් බවට පත් වේ, මන්ද ආරම්භක අදහස් කටුක යථාර්ථයෙන් අපසරනය වීමට පටන් ගනී. මෙය හොඳ හෝ නරක නැත, එය තර්ක කිරීමට අපහසු වන අතර ජීවත් විය යුතු දෙයකි. මෙම ක්රියාවලියේ කොටසක් ප්රතිනිර්මාණය වේ. කේතය ලෙස යටිතල පහසුකම් නැවත සකස් කිරීම. ඇන්සිබල්ව අවුරුද්දකින් රිෆැක්ටර් කරලා පිස්සු කෙලින්නේ නැතුව කොහොමද කියලා කතාව පටන් ගන්නම්.
උරුමයේ උපත
දිනය #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: ඔබට ඇත්තටම ප්රතිනිර්මාණය කිරීම අවශ්යද?
ඔබ නැවත සකස් කිරීමට ඉක්මන් වීමට පෙර, ඔබ වැදගත් ප්රශ්න කිහිපයකට පිළිතුරු දිය යුතුය:
- ඔබට මේ සියල්ල අවශ්ය වන්නේ ඇයි?
- ඔබට කාලය තිබේද?
- දැනුම ප්රමාණවත්ද?
ඔබ ප්රශ්නවලට පිළිතුරු දෙන්නේ කෙසේදැයි නොදන්නේ නම්, නැවත සකස් කිරීම ආරම්භ වීමටත් පෙර අවසන් වනු ඇත, නැතහොත් එය වඩාත් නරක අතට හැරෙනු ඇත. නිසා අත්දැකීම් තිබුනා (
දිනය #149: ප්රතිනිර්මාණය කිරීම සූදානම් කිරීම
පළමු දෙය වන්නේ සූදානම් වීමයි. අපි මොකද කරන්නේ කියලා තීරණය කරන්න. මෙය සිදු කිරීම සඳහා, අපි සන්නිවේදනය, ගැටළු සහිත ප්රදේශ සොයා ඒවා විසඳීමට ක්රම සොයා ගනිමු. ප්රතිඵලය වන සංකල්ප අපි කෙසේ හෝ සටහන් කරමු, උදාහරණයක් ලෙස සංගමයේ ලිපියක්, එවිට ප්රශ්නය පැනනගින විට “හොඳම දේ කුමක්ද?” හෝ "කුමක්ද නිවැරදිද?" අපි අපේ පාර නැතිවෙලා නැහැ. අපගේ නඩුවේදී, අපි අදහසට ඇලී සිටියෙමු බෙදා පාලනය කරන්න: අපි යටිතල පහසුකම් කුඩා කැබලි/ගඩොල් වලට කඩා දමමු. මෙම ප්රවේශය ඔබට හුදකලා යටිතල පහසුකම් කැබැල්ලක් ගැනීමට, එය කරන්නේ කුමක්ද යන්න තේරුම් ගැනීමට, පරීක්ෂණවලින් ආවරණය කිරීමට සහ කිසිවක් කැඩීමට බියෙන් තොරව එය වෙනස් කිරීමට ඉඩ සලසයි.
යටිතල පහසුකම් පරීක්ෂාව මූලික ගල බවට පත්වන අතර මෙහි යටිතල පහසුකම් පරීක්ෂණ පිරමීඩය සඳහන් කිරීම වටී. හරියටම සංවර්ධනය වෙමින් පවතින අදහසම, නමුත් යටිතල පහසුකම් සඳහා: අපි ඉන්ඩෙන්ටේෂන් වැනි සරල දේවල් පරීක්ෂා කරන ලාභ ඉක්මන් පරීක්ෂණවල සිට සමස්ත යටිතල ව්යූහයම යොදවන මිල අධික පූර්ණ පරීක්ෂණ වෙත මාරු වෙමු.
ඇසිබල් පරීක්ෂණ උත්සාහයන්
අපි ව්යාපෘතියේ Ansible පරීක්ෂණ ආවරණය කළ ආකාරය විස්තර කිරීමට පෙර, ගත් තීරණවල සන්දර්භය අවබෝධ කර ගැනීම සඳහා මට කලින් භාවිතා කිරීමට අවස්ථාව ලැබුණු උත්සාහයන් සහ ප්රවේශයන් මම විස්තර කරමි.
දින අංකය -997: SDS ප්රතිපාදන
මම පළමු වරට ඇන්සිබල් පරීක්ෂා කළේ SDS (මෘදුකාංග අර්ථ දක්වා ඇති ගබඩාව) සංවර්ධනය කිරීමේ ව්යාපෘතියක ය. මෙම මාතෘකාව පිළිබඳ වෙනම ලිපියක් ඇත
දිනය # -701: ඇන්සිබල් සහ ටෙස්ට් කුස්සිය
Ansible පරීක්ෂණ අදහසෙහි වර්ධනය වූයේ සූදානම් කළ මෙවලම්, එනම් test kitchen / kitchen-ci සහ inspec භාවිතයයි. තේරීම තීරණය කරනු ලැබුවේ රූබි පිළිබඳ දැනුමෙනි (වැඩිදුර විස්තර සඳහා, හබ්රේ පිළිබඳ ලිපිය බලන්න:
පොදුවේ ගත් කල, විසඳුම ක්රියාත්මක වූ නමුත් විෂමජාතීත්වය හේතුවෙන් යම් අවසාදිතයක් තිබුණි. පරීක්ෂණයට ලක් වූ පුද්ගලයින් සංඛ්යාව කුඩා භූමිකාවන් ඒකාබද්ධ කරමින් මූලික භූමිකාවන් 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 = පරීක්ෂණ
- Repo පරීක්ෂා කර ගොඩනැගීමේ අදියර උත්පාදනය කරන්න.
- lint playbook අදියර සමාන්තරව ධාවනය කරන්න.
- ලින්ට් භූමිකාවේ අදියර සමාන්තරව ධාවනය කරන්න.
- සින්ටැක්ස් චෙක් රෝල් අදියර සමාන්තරව ක්රියාත්මක කරන්න.
- පරීක්ෂණ භූමිකාවේ අදියර සමාන්තරව ධාවනය කරන්න.
- ලින්ට් භූමිකාව.
- වෙනත් භූමිකාවන් මත යැපීම පරීක්ෂා කරන්න.
- සින්ටැක්ස් පරීක්ෂා කරන්න.
- ඩොකර් උදාහරණය සාදන්න
- Molecule/default/playbook.yml ධාවනය කරන්න.
- දුර්වලතාවය පරීක්ෂා කරන්න.
- ඒකාබද්ධතා පරීක්ෂණ ධාවනය කරන්න
- අවසානයි
දිනය #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 ද ආදේශ කළෙමු.
හරියටම කිවහොත්, පියවර මාලාවක් තිබුණි:
- ඩොකර් වෙත මාරු වන්න.
- පරායත්තතා හේතුවෙන් අනුපිටපත් වන භූමිකාව පරීක්ෂාව ඉවත් කරන්න.
- වහලුන් සංඛ්යාව වැඩි කරන්න.
- ටෙස්ට් ධාවන අනුපිළිවෙල.
- ලින්ට් කිරීමේ හැකියාව සෑම එක් විධානයක් සමඟ දේශීයව.
එහි ප්රතිඵලයක් වශයෙන් ජෙන්කින්ස් මත නල මාර්ගය ද ඒකාබද්ධ විය
- ගොඩනැගීමේ අදියර සාදන්න.
- සියල්ල සමාන්තරව ලින්ට් කරන්න.
- පරීක්ෂණ භූමිකාවේ අදියර සමාන්තරව ධාවනය කරන්න.
- අවසන් කරන්න.
උගත් පාඩම්
ගෝලීය විචල්යයන්ගෙන් වළකින්න
Ansible ගෝලීය විචල්යයන් භාවිතා කරයි, පෝරමයේ අර්ධ විසඳුමක් ඇත
මම ඔබට උදාහරණයක් කියන්නම්. අපට ඉඩ දෙන්න 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 ප්රකාශන ප්රවේශයක් වෙනුවෙන් පෙනී සිටී, එබැවින් ඔබ කේත ශාඛා කිරීම, දත්ත පරිවර්තනය, කවච මොඩියුල කරන විට, කේතය කියවීමට අපහසු වේ. මෙයට එරෙහිව සටන් කිරීමට සහ තේරුම් ගැනීමට සරලව තබා ගැනීමට, ඔබේම මොඩියුල නිර්මාණය කිරීමෙන් මෙම සංකීර්ණතාවයට එරෙහිව සටන් කිරීම අතිරික්ත නොවේ.
ඉඟි සහ උපක්රම සාරාංශ කරන්න
- ගෝලීය විචල්යයන්ගෙන් වළකින්න.
- උපසර්ග භූමිකාව විචල්යයන්.
- ලූප් පාලන විචල්යය භාවිතා කරන්න.
- ආදාන විචල්යයන් පරීක්ෂා කරන්න.
- හෑෂ් ශබ්ද කෝෂවලින් වළකින්න, පැතලි ව්යුහය භාවිතා කරන්න.
- දුර්වල ක්රීඩා පොත් සහ භූමිකාවන් සාදන්න.
- විධාන කවච මොඩියුල භාවිතා කිරීමෙන් වළකින්න.
- අණු හරහා ඔබේ භූමිකාවන් පරීක්ෂා කරන්න.
- සංකීර්ණ තර්කනය මොඩියුල සහ ප්ලගින වලට දමන්න.
නිගමනය
ඔබට IaC තිබුණත්, ඔබට ගොස් ව්යාපෘතියක යටිතල පහසුකම් ප්රතිනිර්මාණය කළ නොහැක. මෙය ඉවසීම, කාලය සහ දැනුම අවශ්ය වන දිගු ක්රියාවලියකි.
සබැඳි
- යෑ
ඇන්සිබල් පරීක්ෂා කර කරපින්නා නොගන්නා ආකාරය - වීඩියෝ
ඇන්සිබල් පරීක්ෂා කර කරපින්නා නොගන්නා ආකාරය යටිතල පහසුකම් කේත රේඛා 200ක් පරීක්ෂා කිරීමෙන් මා ඉගෙන ගත් දේ Ansible: Coreos සිට Centos දක්වා 120 VM වින්යාසය මාස 18කින් සංක්රමණය වීම ඔබේ බෙදා හැරීම පරීක්ෂා කිරීමේදී කිහිලිකරු මත බයිසිකල් කඩන ආකාරය ඔබට හැකි නම් මාව පරීක්ෂා කරන්න හෝ YML ක්රමලේඛකයින් ඇන්සිබල් පරීක්ෂා කිරීමට සිහින දකිනවාද? නියම IaC පරීක්ෂණ ලිපි, කථා සහ සබැඳි ලැයිස්තුවක් හරස් කණුව ඉංග්රීසි අනුවාදය
UPD1 2020.05.01 20:30 — ඔබට භාවිතා කළ හැකි ක්රීඩා පොත් වල ප්රාථමික පැතිකඩ සඳහා callback_whitelist = profile_tasks
දිගු කලක් වැඩ කරන දේ හරියටම තේරුම් ගැනීමට. ඊට පස්සේ අපි හරහා යනවා
UPD2 2020.05.03 16:34 -
මූලාශ්රය: www.habr.com