ããã¯è»¢åã§ã
XNUMX çªç®ã®ã³ããã以éãã³ãŒãã¯ãã¹ãŠã¬ã¬ã·ãŒã«ãªããŸãã æåã®ã¢ã€ãã¢ã¯å³ããçŸå®ããä¹é¢ãå§ããŸãã ããã¯è¯ãããšã§ãæªãããšã§ããããŸãããããã¯åœç¶ã®ããšã§ãããè°è«ããã®ã¯é£ãããåãå ¥ããªããã°ãªããŸããã ãã®ããã»ã¹ã®äžéšã¯ãªãã¡ã¯ã¿ãªã³ã°ã§ãã ã³ãŒããšããŠã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã®ãªãã¡ã¯ã¿ãªã³ã°ã çããã« XNUMX 幎以å ã« Ansible ããªãã¡ã¯ã¿ãªã³ã°ããæ¹æ³ã«ã€ããŠè©±ãå§ããŸãããã
ã¬ã¬ã·ãŒã®èªç
1 æ¥ç®: æ£è ãŒã
ãã€ãŠãæ¡ä»¶ä»ããããžã§ã¯ãããããŸããã ããã«ã¯éçºéçºããŒã ãšéçšãšã³ãžãã¢ãããŸããã 圌ãã¯åãåé¡ãã€ãŸããµãŒããŒããããã€ããŠã¢ããªã±ãŒã·ã§ã³ãå®è¡ããæ¹æ³ã解決ããŠããŸããã åé¡ã¯ãåããŒã ãç¬èªã®æ¹æ³ã§ãã®åé¡ã解決ããããšã§ãã ãããžã§ã¯ãã§ã¯ãéçºããŒã ãšéçšããŒã ã®éã§ç¥èãåæããããã« Ansible ã䜿çšããããšã決å®ãããŸããã
Day #89: ã¬ã¬ã·ãŒã®èªç
èªåãã¡ã§ãæ°ã¥ããã«ãã§ããéãæåãå°œããããã£ãã®ã§ããããããã¬ã¬ã·ãŒã«ãªã£ãŠããŸã£ãã®ã§ãã ããã¯ã©ãããŠèµ·ããã®ã§ãããã?
- ããã«ã¯ç·æ¥ã®ã¿ã¹ã¯ãããã®ã§ãæ±ãããã¯ãè¡ã£ãŠããä¿®æ£ããŸãããã
- ããã¥ã¡ã³ããæžãå¿ èŠã¯ãªããããã§äœãèµ·ãã£ãŠãããã¯ãã¹ãŠæããã§ãã
- Ansible/Python/Bash/Terraform ãç¥ã£ãŠããŸãã ã©ããã£ãŠåé¿ã§ãããèŠãŠãã ããïŒ
- ç§ã¯ãã«ã¹ã¿ãã¯ãªãŒããŒãããŒéçºè ã§ãããã 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")
Day #109: åé¡ã®èªè
æåã«èæ¡ããå®è£ ããã IaC ã¢ãã«ã¯ããŠãŒã¶ãŒãããžãã¹ããã®ä»ã®ããŒã ã®èŠä»¶ãæºãããªããªããã€ã³ãã©ã¹ãã©ã¯ãã£ã«å€æŽãå ããæéã蚱容ã§ããªããªããŸãã ãã®ç¬éãè¡åãèµ·ããæãæ¥ããšç解ããŸãã
IaCãªãã¡ã¯ã¿ãªã³ã°
Day #139: ãªãã¡ã¯ã¿ãªã³ã°ã¯æ¬åœã«å¿ èŠã§ãã?
æ¥ãã§ãªãã¡ã¯ã¿ãªã³ã°ãå§ããåã«ã次ã®ãããªããã€ãã®éèŠãªè³ªåã«çããå¿ èŠããããŸãã
- ãªããããã¹ãŠãå¿ èŠãªã®ã§ãããã?
- ããªãã¯æéããããŸããïŒ
- ç¥èã¯ååã§ããïŒ
質åã«ã©ãçããããããããªããšããªãã¡ã¯ã¿ãªã³ã°ãéå§ãããåã«çµäºããŠããŸããããªãã¡ã¯ã¿ãªã³ã°ãããã«æªåããå¯èœæ§ããããŸãã ãªããªãçµéšããããŸãã(
Day #149: ãªãã¡ã¯ã¿ãªã³ã°ã®æºå
ãŸãã¯æºåã§ãã äœããããã決ããŠãã ããã ãã®ããã«ãç§ãã¡ã¯ã³ãã¥ãã±ãŒã·ã§ã³ããšããåé¡é åãèŠã€ãããããã解決ããæ¹æ³ãèãåºããŸãã çµæãšããŠåŸãããã³ã³ã»ããããããšãã° confluence ã®èšäºãªã©ãäœããã®æ¹æ³ã§èšé²ããŠããäœãæåã?ããšãã質åãçãããšãã«ããã«äœ¿ããããã«ããŸãã ãŸãã¯ãã©ã¡ããæ£ããã§ãã?ã ç§ãã¡ã¯éã«è¿·ã£ãããã§ã¯ãããŸããã ç§ãã¡ã®å Žåã¯ããã®ã¢ã€ãã¢ã«ãã ãããŸãã åè£ãšã«ãŒã«: ã€ã³ãã©ã¹ãã©ã¯ãã£ãå°ããªéšå/ãããã¯ã«åå²ããŸãã ãã®ã¢ãããŒãã«ãããã€ã³ãã©ã¹ãã©ã¯ãã£ã®åé¢ãããéšåãååŸãããã®åäœãç解ãããã¹ãã§ã«ããŒããäœããå£ãããšãæããããšãªãå€æŽããããšãã§ããŸãã
ã€ã³ãã©ã¹ãã©ã¯ã㣠ãã¹ããåºç€ãšãªãããšãããããããã§ã€ã³ãã©ã¹ãã©ã¯ã㣠ãã¹ã ãã©ãããã«ã€ããŠèšåãã䟡å€ããããŸãã éçºäžã®ã¢ã€ãã¢ãšãŸã£ããåãã§ãããã€ã³ãã©ã¹ãã©ã¯ãã£ã«é¢ãããã®ã§ããã€ã³ãã³ããªã©ã®åçŽãªãã®ããã§ãã¯ããå®äŸ¡ãªç°¡åãªãã¹ããããã€ã³ãã©ã¹ãã©ã¯ãã£å šäœããããã€ããé«äŸ¡ãªæ¬æ Œçãªãã¹ãã«ç§»è¡ããŠããŸãã
Ansible ãã¹ãã®è©Šã¿
ãããžã§ã¯ã㧠Ansible ãã¹ããã©ã®ããã«ã«ããŒãããã説æããåã«ã決å®ã®ã³ã³ããã¹ããç解ããããã«ä»¥åã«äœ¿çšããæ©äŒããã£ãè©Šã¿ãšã¢ãããŒãã«ã€ããŠèª¬æããŸãã
Day No. -997: SDS ã®æäŸ
ç§ãåã㊠Ansible ããã¹ãããã®ã¯ãSDS (Software Defined Storage) ãéçºãããããžã§ã¯ãã§ããã ãã®ãããã¯ã«é¢ããå¥ã®èšäºããããŸã
Day # -701: Ansible ãšãã¹ã ãããã³
Ansible ãã¹ãã®ã¢ã€ãã¢ã®éçºã¯ãæ¢è£œã®ããŒã«ãã€ãŸã test Kitchen / Kitchen-ci ããã³ inspec ã®äœ¿çšã§ããã éžæ㯠Ruby ã®ç¥èã«ãã£ãŠæ±ºãŸããŸãã (詳现ã«ã€ããŠã¯ãHabré ã«é¢ããèšäºãåç
§ããŠãã ãã:
äžè¬ã«ããã®æº¶æ¶²ã¯æ©èœããŸããããäžåäžæ§ã«ããããããã®æ²æ®¿ç©ãçºçããŸããã ãã¹ããã人ã®æ°ã 13 人ã®åºæ¬çãªåœ¹å²ãšãããå°ããªåœ¹å²ãçµã¿åããã 2 ã€ã®ã¡ã¿çãªåœ¹å²ã«å¢ãããšãçªç¶ãã¹ããã»ãŒ 70 åã® 2 åéå®è¡ããå§ããŸããã XP (ãšã¯ã¹ããªãŒã ããã°ã©ãã³ã°) ã®å®è·µã«ã€ããŠè©±ãã®ã¯å°é£ã§ããããªããªã... 70åãåŸ ã¡ãããªã人ã¯ããªãã§ãããã ãããã¢ãããŒããå€æŽããçç±ã§ãã
Day # -601: Ansible ãšåå
æŠå¿µçã«ã¯ããã㯠testkitchen ã«äŒŒãŠããŸãããããŒã«ã®ãã¹ãã docker ã«ç§»åããã¹ã¿ãã¯ãå€æŽããã ãã§ãã ãã®çµæãæéã¯20圹ã§å®å®ãã25ïœ7åã«ççž®ãããŸããã
ãã¹ããããããŒã«ã®æ°ã 17 ã«å¢ããã45 ã®ããŒã«ããªã³ãã£ã³ã°ããããšã«ããã28 ã€ã® Jenkins ã¹ã¬ãŒãã§ããã 2 åã§å®è¡ããŸããã
Day #167: Ansible ãã¹ãããããžã§ã¯ãã«è¿œå ãã
ãããããæ¥ãã§ãªãã¡ã¯ã¿ãªã³ã°ã¿ã¹ã¯ãå®è¡ããããšã¯äžå¯èœã§ãããã ãã®äœæ¥ã¯ã象ã现ããç ããŠãã£ãŒã¹ããŒã³ã§å°ããã€é£ã¹ãããšãã§ããããã«æž¬å®å¯èœã§ãªããã°ãªããŸããã èªåãæ£ããæ¹åã«é²ãã§ããã®ãããã€ãŸã§é²ãã¹ããªã®ããç解ããå¿ èŠããããŸãã
äžè¬ã«ãã©ã®ããã«è¡ããã¯é¢ä¿ãããŸãããçŽã«æžããŠãããããã¯ããŒãŒããã«ã¹ããã«ãŒã貌ã£ãŠãããããJira ã§ã¿ã¹ã¯ãäœæããŠãããããGoogle ããã¥ã¡ã³ããéããŠçŸåšã®ã¹ããŒã¿ã¹ãæžãçããŠãããã§ããããã«ã¯ã 足ã¯ãããã»ã¹ãããã«ã§ã¯ãªããé·ããŠéå±ã«ãªããšããäºå®ããæé·ããŸãã ãªãã¡ã¯ã¿ãªã³ã°äžã«ã¢ã€ãã¢ãçãå°œããããç²ããããå§åããããããããšã誰ãæãã§ããªãã§ãããã
ãªãã¡ã¯ã¿ãªã³ã°ã¯ç°¡åã§ãã
- é£ã¹ãã
- ç¡ç ã
- ã³ãŒãã
- IaCãã¹ãã
- ç¹°ãè¿ã
æå³ããç®æšã«å°éãããŸã§ãããç¹°ãè¿ããŸãã
ããã«ãã¹ãŠã®ãã¹ããéå§ããããšã¯äžå¯èœãããããªããããæåã®ã¿ã¹ã¯ã¯ lint ã®å®è¡ãšæ§æã®ãã§ãã¯ããå§ããããšã§ããã
Day #181: ã°ãªãŒã³ãã«ããã¹ã¿ãŒ
ãªã³ãã£ã³ã°ã¯ãGreen Build Master ãžã®å°ããªç¬¬äžæ©ã§ãã ããã«ãããã»ãšãã©äœãå£ããããšã¯ãããŸããããããã»ã¹ããããã°ããJenkins ã§ã°ãªãŒã³ ãã«ããäœæã§ããããã«ãªããŸãã ã¢ã€ãã¢ã¯ãããŒã å ã§ç¿æ £ã身ã«ã€ããããšã§ãã
- èµ€ãã¹ãã¯ãã¡ã§ããã
- ç§ã¯äœããä¿®æ£ãããšåæã«ãã³ãŒãã以åãããå°ãè¯ãããããã«æ¥ãŸããã
Day #193: lint ããåäœãã¹ããŸã§
ã³ãŒãããã¹ã¿ãŒã«åã蟌ãããã»ã¹ãæ§ç¯ãããã段éçãªæ¹åã®ããã»ã¹ãéå§ã§ããŸããlint ãããŒã«ã®èµ·åã«çœ®ãæããåªçæ§ãªãã§å®è¡ããããšãã§ããŸãã ããŒã«ãé©çšããæ¹æ³ãšãã®ä»çµã¿ãç解ããå¿ èŠããããŸãã
Day #211: åäœãã¹ãããçµåãã¹ããŸã§
ã»ãšãã©ã®åœ¹å²ãåäœãã¹ãã§ã«ããŒããããã¹ãŠããªã³ããããããçµ±åãã¹ãã®è¿œå ã«é²ãããšãã§ããŸãã ãããã®ã ã€ã³ãã©ã¹ãã©ã¯ãã£å ã®åäžã®ããªãã¯ããã¹ãããã®ã§ã¯ãªãããããã®çµã¿åãã (ããšãã°ãå®å šãªã€ã³ã¹ã¿ã³ã¹æ§æ) ããã¹ãããŸãã
jenkins ã䜿çšããŠãããŒã«/ãã¬ã€ããã¯ã䞊è¡ã㊠lint ããå€ãã®ã¹ããŒãžãçæãã次ã«ã³ã³ãããŒã§ã®åäœãã¹ããæåŸã«çµ±åãã¹ããçæããŸããã
Jenkins + Docker + Ansible = ãã¹ã
- ãªããžããªããã§ãã¯ã¢ãŠããããã«ã ã¹ããŒãžãçæããŸãã
- lint ãã¬ã€ãã㯠ã¹ããŒãžã䞊è¡ããŠå®è¡ããŸãã
- lint ããŒã« ã¹ããŒãžã䞊è¡ããŠå®è¡ããŸãã
- æ§æãã§ãã¯ã®ããŒã«ã¹ããŒãžã䞊è¡ããŠå®è¡ããŸãã
- ãã¹ãããŒã«ã¹ããŒãžã䞊è¡ããŠå®è¡ããŸãã
- ãªã³ã圹ã
- ä»ã®ããŒã«ãžã®äŸåé¢ä¿ã確èªããŸãã
- æ§æã確èªããŠãã ããã
- Dockerã€ã³ã¹ã¿ã³ã¹ãäœæãã
- åå/default/playbook.yml ãå®è¡ããŸãã
- ã¹ãçæ§ããã§ãã¯ããŸãã
- çµ±åãã¹ããå®è¡ãã
- çµäº
Day #271: ãã¹ã®èŠçŽ
åœåããªãã¡ã¯ã¿ãªã³ã°ã¯ XNUMX ïœ XNUMX 人ã®å°äººæ°ã®ã°ã«ãŒãã§è¡ãããŸããã 圌ãã¯ãã¹ã¿ãŒå ã®ã³ãŒããã¬ãã¥ãŒããŸããã æéã®çµéãšãšãã«ãããŒã ã¯ã³ãŒãã®æžãæ¹ãšã³ãŒã ã¬ãã¥ãŒã«é¢ããç¥èãæ·±ããã€ã³ãã©ã¹ãã©ã¯ãã£ãšãã®ä»çµã¿ã«é¢ããç¥èã®æ®åã«è²¢ç®ããŸããã ããã§ã®ãã€ã©ã€ãã¯ãã¬ãã¥ãŒæ åœè ãã¹ã±ãžã¥ãŒã«ã«åŸã£ãŠ XNUMX 人ãã€éžã°ããããšã§ãã ããçšåºŠã®ç¢ºçã§ãæ°ããã€ã³ãã©ã¹ãã©ã¯ãã£ã«äŸµå ¥ããããšã«ãªããŸãã
ãããŠããã¯å¿«é©ãªã¯ãã ã ã¬ãã¥ãŒãè¡ã£ãããå®è¡ãããã¿ã¹ã¯ã®æ çµã¿ãè°è«ã®å±¥æŽã確èªãããããã®ã«äŸ¿å©ã§ãã 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 æ¥ç®: ãã¹ãã®é«éå
æéãçµã€ã«ã€ããŠããã¹ããå¢ãããã«ãã®å®è¡ãé ããªããææªã®å Žå㯠XNUMX æéãŸã§ããããŸããã ã¬ããã® XNUMX ã€ã«ãããã¹ããããã®ã¯è¯ãããšã§ããããã¹ããé ãã§ããããšãããããªãã¬ãŒãºããããŸããã ãã®çµæãä»®æ³ãã·ã³ã§ã®çµ±åãã¹ããæŸæ£ããããã Docker ã«é©å¿ãããŠé«éåããŸããã ãŸãã䜿çšããããŒã«ã®æ°ãæžããããã«ãtestinfra ã ansible Verifier ã«çœ®ãæããŸããã
å³å¯ã«èšãã°ã次ã®ãããªäžé£ã®å¯ŸçããããŸããã
- ããã«ãŒã«åãæ¿ããŸãã
- äŸåé¢ä¿ã«ããéè€ããŠããããŒã« ãã¹ããåé€ããŸãã
- ã¹ã¬ãŒãã®æ°ãå¢ãããŸãã
- ãã¹ãå®è¡ã®é åºã
- 糞ãããåºãèœå ALL XNUMX ã€ã®ã³ãã³ãã§ããŒã«ã«ã§å®è¡ã§ããŸãã
ããã«ãããjenkinsäžã®Pipelineãçµ±äžãããŸãã
- ãã«ãã¹ããŒãžãçæããŸãã
- ãªã³ãããã¹ãŠäžŠè¡ããŠå®è¡ããŸãã
- ãã¹ãããŒã«ã¹ããŒãžã䞊è¡ããŠå®è¡ããŸãã
- ãã£ããã·ã¥ã
æèš
ã°ããŒãã«å€æ°ãé¿ãã
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 ã®æ§è³ªã§ãããã§ããéãæåã®æ¹æ³ã¯ãããšãã°ããŒã«å ã§ããã®ããŒã«ã«èšè¿°ãããŠããå€æ°ã®ã¿ã䜿çšãããªã©ãäœããã®åæã䜿çšããããšã§ãã
BAD: ã°ããŒãã«å€æ°ã䜿çšããŸãã
# cat roles/some_role/tasks/main.yml
---
debug:
var: java_home
GOODïŒV 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
GOOD: å€æ°ã®ããŒã«ã§ã¯ãããŒã«åãå é ã«ä»ããå€æ°ã䜿çšããŸããããã«ãããã€ã³ãã³ããªã確èªããããšã§ãäœãèµ·ãã£ãŠããããç解ãããããªããŸãã
# cat roles/some_role/defaults/main.yml
---
some_role__db_port: 5432
ã«ãŒãå¶åŸ¡å€æ°ã䜿çšãã
BAD: ã«ãŒãå
ã§æšæºå€æ°ã䜿çšããŸã item
ãã®ã¿ã¹ã¯/ãã¬ã€ããã¯ãã©ããã«å«ãŸããŠããå Žåãäºæããªãåäœãçºçããå¯èœæ§ããããŸãã
---
- hosts: localhost
tasks:
- debug:
msg: "{{ item }}"
loop:
- item1
- item2
GOOD: ã«ãŒãå
ã®å€æ°ãåå®çŸ©ããŸãã loop_var
.
---
- hosts: localhost
tasks:
- debug:
msg: "{{ item_name }}"
loop:
- item1
- item2
loop_control:
loop_var: item_name
å ¥åå€æ°ããã§ãã¯ãã
ç§ãã¡ã¯å€æ°ãã¬ãã£ãã¯ã¹ã䜿çšããããšã«åæããŸãããå€æ°ãã¬ãã£ãã¯ã¹ãæåŸ ã©ããã«å®çŸ©ãããŠããããããšãã°ç©ºã®å€ã«ãã£ãŠãªãŒããŒã©ã€ããããŠããªããããã§ãã¯ããããšã¯äžå¿ èŠã§ã¯ãããŸããã
GOOD: å€æ°ã確èªããŸãã
- 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
ããã·ã¥èŸæžãé¿ãããã©ããæ§é ã䜿çšãã
ããŒã«ã®ãã©ã¡ãŒã¿ã® XNUMX ã€ã«ããã·ã¥/èŸæžãå¿ èŠãªå Žåãåãã©ã¡ãŒã¿ã® XNUMX ã€ãå€æŽãããå Žåã¯ãããã·ã¥/èŸæžå šäœããªãŒããŒã©ã€ãããå¿ èŠããããæ§æãè€éã«ãªããŸãã
BAD: ããã·ã¥/èŸæžã䜿çšããŸãã
---
user:
name: admin
group: admin
GOOD: ãã©ãããªå€æ°æ§é ã䜿çšããŸãã
---
user_name: admin
user_group: "{{ user_name }}"
åªçãªãã¬ã€ããã¯ãšããŒã«ãäœæãã
ããŒã«ãšãã¬ã€ããã¯ã¯åªçã§ããå¿ èŠããããŸãã æ§æã®ããããäœããå£ããã®ã§ã¯ãªãããšããäžå®ã軜æžãããŸãã ãã ããååã䜿çšããå Žåããããããã©ã«ãã®åäœã«ãªããŸãã
ã³ãã³ãã·ã§ã«ã¢ãžã¥ãŒã«ã®äœ¿çšãé¿ãã
ã·ã§ã« ã¢ãžã¥ãŒã«ã䜿çšãããšãAnsible ã®æ žãšãªã宣èšåã®èšè¿°ãã©ãã€ã ã§ã¯ãªããåœä»€åã®èšè¿°ãã©ãã€ã ãçæãããŸãã
ååãä»ããŠåœ¹å²ããã¹ããã
ååã¯éåžžã«æè»ãªãã®ã§ããããã€ãã®ã·ããªãªãèŠãŠã¿ãŸãããã
ååã®è€æ°ã®ã€ã³ã¹ã¿ã³ã¹
Ð 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 ããªãã¡ã€ã¢ãŒ
ååå ã§ã¯ãansible ã䜿çšããŠã€ã³ã¹ã¿ã³ã¹ãæ£ããæ§æãããŠããããšã確èªã§ããŸããããã«ãããã¯ãªãªãŒã¹ 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 ããããšããŠãããããžã§ã¯ãã®ã€ã³ãã©ã¹ãã©ã¯ãã£ããã ãªãã¡ã¯ã¿ãªã³ã°ããããšã¯ã§ããŸããã ããã¯å¿èãæéãç¥èãå¿ èŠãšããé·ãããã»ã¹ã§ãã
ãªã³ã¯
- ã¹ã©ã€ã
Ansible ããã¹ãããŠæ··ä¹±ããªãããã«ããæ¹æ³ - ãããª
Ansible ããã¹ãããŠæ··ä¹±ããªãããã«ããæ¹æ³ 200 è¡ã®ã€ã³ãã©ã¹ãã©ã¯ã㣠ã³ãŒãã®ãã¹ãããåŠãã ããš Ansible: 120 VM æ§æã Coreos ãã Centos ã« 18 ãæã§ç§»è¡ ãã£ã¹ããªãã¥ãŒã·ã§ã³ããã¹ããããšãã«æŸèæã®äžã§èªè»¢è»ãå£ãæ¹æ³ ã§ãããã©ãããã¹ãããŠãã ããããããšã YML ããã°ã©ããŒã¯ Ansible ããã¹ãããããšã倢èŠãŠããŸãã? çŽ æŽããã IaC ãã¹ãã®èšäºãè¬æŒããªã³ã¯ã®ãªã¹ã ã¯ãã¹ãã¹ã è±èªç
UPD1 2020.05.01 20:30 â ãã¬ã€ããã¯ã®äžæ¬¡ãããã¡ã€ãªã³ã°ã«äœ¿çšã§ãããã® callback_whitelist = profile_tasks
äœãé·æçã«æ©èœããã®ããæ£ç¢ºã«ç解ããããã«ã 次ã«ãééããŸã
UPD2 2020.05.03 16:34 -
åºæïŒ habr.com