ç§ã¯ä»ã®äººã® Ansible ã³ãŒããããããã¬ãã¥ãŒããèªåã§ãããããæžããŸãã ééã (ä»äººãšç§èªèº«ã®äž¡æ¹) ãåæãããŸãå€ãã®ã€ã³ã¿ãã¥ãŒãè¡ã£ãŠãããã¡ã«ãAnsible ãŠãŒã¶ãŒãç¯ãäž»ãªééããã€ãŸãåºæ¬çãªãã®ãç¿åŸããã«è€éãªäœæ¥ã«æãæããŠããŸãããšã«æ°ã¥ããŸããã
ãã®æ®éçãªäžå ¬å¹³ãæ£ãããã«ãAnsible ããã§ã«ç¥ã£ãŠãã人åãã« Ansible ã®å ¥éæžãæžãããšã«ããŸããã èŠåããŠãããŸãããããã¯äººéã®å話ã§ã¯ãããŸãããæåãå€ããåçã¯äžåå«ãŸããŠããªãé·æã§ãã
èªè ãæåŸ ããã¬ãã«ã¯ããã§ã«æ°åè¡ã® yamla ãæžãããŠãããäœãããã§ã«å¶äœãããŠãããã®ã®ããã©ãããããããã¹ãŠãæªãã§ããããšããããšã§ãã
ã¿ã€ãã«
Ansible ãŠãŒã¶ãŒãç¯ãäž»ãªééãã¯ãäœããäœãšåŒã°ããŠããããç¥ããªãããšã§ãã ååãåãããªããšãããã¥ã¡ã³ãã«äœãæžãããŠããããç解ã§ããŸããã çããäŸ: ã€ã³ã¿ãã¥ãŒäžãAnsible ã§ããããã®ããšãæžããŠãããšèšã£ãŠããããã«èŠãã人ã¯ãããã¬ã€ããã¯ã¯ã©ã®ãããªèŠçŽ ã§æ§æãããŠããŸãã?ããšãã質åã«çããããšãã§ããŸããã§ããã ãããŠç§ãããã®ãã¬ã€ããã¯ã¯éã³ã§æ§æãããŠãããšããçããäºæ³ãããããšç€ºåãããšããããç§ãã¡ã¯ãããªãã®ã¯äœ¿ããŸããããšããã²ã©ãã³ã¡ã³ããç¶ããŸããã 人ã ã¯ãéã®ããã« Ansible ãäœæããŠãããPlay ã¯äœ¿çšããŸããã 圌ãã¯å®éã«ããã䜿ã£ãŠããŸããããããäœã§ãããç¥ããŸããã
ããã§ã¯ãç°¡åãªããšããå§ããŸããããããã¯äœãšåŒã°ãããã®ã§ããã ãã®ããšãç¥ã£ãŠãããããããŸããããããã¥ã¡ã³ããèªãã ãšãã«æ³šæãæããªãã£ãããã«ç¥ããªããããããŸããã
ansible-playbook ã¯ãã¬ã€ããã¯ãå®è¡ããŸãã Playbook 㯠yml/yaml æ¡åŒµåãæã€ãã¡ã€ã«ã§ããã®äžã«ã¯æ¬¡ã®ãããªãã®ãå«ãŸããŸãã
---
- hosts: group1
roles:
- role1
- hosts: group2,group3
tasks:
- debug:
ãã®ãã¡ã€ã«å šäœããã¬ã€ããã¯ã§ããããšã¯ãã§ã«èªèããŠããŸãã 圹å²ãã©ãã«ããã®ããã¿ã¹ã¯ãã©ãã«ããã®ãã瀺ãããšãã§ããŸãã ããããéã³ã¯ã©ãã«ããã®ã§ããããïŒ ãããŠãéã³ãšåœ¹å²ãŸãã¯ãã¬ã€ããã¯ã®éãã¯äœã§ãã?
ãã¹ãŠããã¥ã¡ã³ãã«èšèŒãããŠããŸãã ãããŠåœŒãã¯ãããèŠéããŸãã åå¿è - å 容ãå€ãããŠãäžåºŠã«ãã¹ãŠãèŠããããªãããã§ãã çµéšè±å¯ - ãªããªããäºçŽ°ãªããšãã ããã çµéšãããå Žåã¯ããããã®ããŒãžãå°ãªããšã XNUMX ãæã« XNUMX åèªã¿çŽããŠãã ãããããããã°ãã³ãŒãã¯ã¯ã©ã¹ããªãŒããããã®ã«ãªããŸãã
ãããã£ãŠãèŠããŠãããŠãã ãã: ãã¬ã€ããã¯ã¯ããã¬ã€ãš import_playbook
.
ãã㯠XNUMX ã€ã®éã³ã§ã:
- hosts: group1
roles:
- role1
ããããŸãå¥ã®éã³ã§ãã
- hosts: group2,group3
tasks:
- debug:
éã³ãšã¯äœã§ããïŒ ãªã圌女ãïŒ
Play ããã³ Only Play ã¯ãããŒã«ããã³/ãŸãã¯ã¿ã¹ã¯ã®ãªã¹ãããããããå®è¡ããå¿
èŠããããã¹ãã®ãªã¹ãã«é¢é£ä»ãããããPlay 㯠Playbook ã®éèŠãªèŠçŽ ã§ãã ããã¥ã¡ã³ãã®å¥¥æ·±ãã«æ¬¡ã®èšè¿°ããããŸãã delegate_to
ãããŒã«ã« ã«ãã¯ã¢ãã ãã©ã°ã€ã³ããããã¯ãŒã¯ CLI åºæã®èšå®ããžã£ã³ã ãã¹ããªã©ã ãããã䜿çšãããšãã¿ã¹ã¯ãå®è¡ãããå Žæããããã«å€æŽã§ããŸãã ã§ããããã¯å¿ããŠãã ããã ãããã®è³¢ããªãã·ã§ã³ã«ã¯ããããéåžžã«ç¹æ®ãªçšéãããã決ããŠäžèœã§ã¯ãããŸããã ãããŠãç§ãã¡ã¯èª°ããç¥ã£ãŠäœ¿çšãã¹ãåºæ¬çãªããšã«ã€ããŠè©±ããŠããŸãã
ãã©ãããã§ãäœãããæŒå¥ãããå Žåã¯ãplayãšæžããŸãã 圹å²ã§ã¯ãããŸããã ã¢ãžã¥ãŒã«ãšããªã²ãŒãã䜿çšããããŒã«ã§ã¯ãããŸããã ããªãã¯ãããåãåã£ãŠéã³ãæžããŸãã ãã®äžã§ããã¹ããã£ãŒã«ãã«ã¯å®è¡ããå Žæããªã¹ãããããŒã«/ã¿ã¹ã¯ã«ã¯äœãå®è¡ãããããªã¹ãããŸãã
ã·ã³ãã«ã§ãããïŒ ããã§ãªããã°ã©ãããŠããåŸãŸããïŒ
éã³ä»¥å€ã§ãããããããããšãã欲æ±ãçãŸããç¹åŸŽçãªç¬éã®äžã€ããããã¹ãŠãæŽãã圹å²ãã§ãã æåã®ã¿ã€ãã®ãµãŒããŒãš XNUMX çªç®ã®ã¿ã€ãã®ãµãŒããŒã®äž¡æ¹ãæ§æãã圹å²ãå¿ èŠã§ãã
å
žåçãªäŸã¯ã¢ãã¿ãªã³ã°ã§ãã ç£èŠãæ§æããç£èŠããŒã«ãå¿
èŠã§ãã ç£èŠã®åœ¹å²ã¯ã(ãã¬ã€ã«å¿ããŠ) ç£èŠãã¹ãã«å²ãåœãŠãããŸãã ããããç£èŠããã«ã¯ãç£èŠå¯Ÿè±¡ã®ãã¹ãã«ããã±ãŒãžãé
ä¿¡ããå¿
èŠãããããšãããããŸããã ãªãããªã²ãŒãã䜿çšããªãã®ã§ãããã? iptables ãèšå®ããå¿
èŠããããŸãã ä»£è¡šïŒ ç£èŠãæå¹ã«ããã«ã¯ãDBMS ã®æ§æãäœæ/ä¿®æ£ããå¿
èŠããããŸãã ä»£è¡šïŒ åµé æ§ãæ¬ ããŠããå Žåã¯ã代衚å£ãäœãããšãã§ããŸã include_role
ã°ã«ãŒãã®ãªã¹ãã«å¯ŸããŠããªãããŒãªãã£ã«ã¿ãŒã䜿çšãããã¹ããããã«ãŒãå
ãããã³å
éš include_role
ãã£ãšã§ããããšããã delegate_to
ãŸãã ãããŠåºçºããŸã...
ããã¹ãŠãå®è¡ãããåäžã®ç£èŠããŒã«ãæã¡ãããšããè¯ãé¡ãã¯ãç§ãã¡ãå®å šãªå°çã«å°ããŸããã»ãšãã©ã®å Žåãããããæãåºãæ¹æ³ã¯ XNUMX ã€ã ãã§ããããã¯ããã¹ãŠãæåããæžãçŽãããšã§ãã
ããã§ã©ãã§ééããèµ·ãã£ãã®ã§ããããïŒ ãã¹ã X ã§ã¿ã¹ã¯ "x" ãå®è¡ããã«ã¯ããã¹ã Y ã«ç§»åããŠãã㧠"y" ãå®è¡ããå¿ èŠãããããšãããã£ãç¬éãåçŽãªæŒç¿ãå®è¡ããå¿ èŠããããŸããã移åã㊠play ãæžã蟌ã¿ãããããã¹ã Y ã§å®è¡ããŸãã ãxãã«äœããå ããã®ã§ã¯ãªããæåããæžããŸãã ããŒãã³ãŒããããå€æ°ã䜿çšããå Žåã§ãã
äžèšã®æ®µèœã®ãã¹ãŠãæ£ããè¿°ã¹ãããŠããããã§ãã ããããããã¯ããªãã®å Žåã§ã¯ãããŸãã! DRY ã§ã©ã€ãã©ãªã«äŒŒãåå©çšå¯èœãªã³ãŒããæžããããšèããŠããããããè¡ãæ¹æ³ãæ¢ãå¿ èŠãããããã§ãã
ããã«å¥ã®é倧ãªééããæœãã§ããŸãã ãã®ãšã©ãŒã«ãããå€ãã®ãããžã§ã¯ãã蚱容ç¯å²ã§æžããããã® (ãã£ãšè¯ããªãå¯èœæ§ã¯ãããŸããããã¹ãŠãæ©èœããç°¡åã«å®äºã§ããŸã) ãããäœæè ã§ããç解ã§ããªãå®å šãªææã«å€ãããŸããã ããã¯æ©èœããŸãããäœãå€æŽããããšã¯ç¥ããçŠããããŠããŸãã
ãšã©ãŒ: ããŒã«ã¯ã©ã€ãã©ãªé¢æ°ã§ãã ãã®äŸãã«ãã£ãŠãå€ãã®è¯ãå§ãŸããå°ç¡ãã«ãªã£ãŠããŸã£ãã®ã§ãèŠãŠããã®ããã ãã æ²ãããªããŸãã ãã®ããŒã«ã¯ã©ã€ãã©ãªé¢æ°ã§ã¯ãããŸããã 圌女ã¯èšç®ãã§ããããã¬ãŒã¬ãã«ã®æ±ºå®ãäžãããšãã§ããŸããã éã³ãã©ã®ãããªæ±ºæãäžãããæãåºãããŠãã ããã
ããããšãããã®éãã§ãã Play ã¯ãã©ã®ãã¹ãã§ã©ã®ã¿ã¹ã¯ãšããŒã«ãå®è¡ãããã決å®ããŸã (ããæ£ç¢ºã«ã¯ãPlay ã«ã¯æ å ±ãå«ãŸããŠããŸã)ã
ãã®æ±ºå®ã圹å²ã«å§ä»»ããèšç®ã䌎ãå Žåã§ããããªãèªèº« (ãããŠããªãã®ã³ãŒãã解æããããšãã人) ãæ²æšãªéåœã«é¥ãããšã«ãªããŸãã 圹å²ã¯ãããã©ãã§å®è¡ããããã決å®ããŸããã ãã®æ±ºå®ã¯éã³ã«ãã£ãŠè¡ãããŸãã 圹å²ã¯ãèšãããå Žæã§ãèšãããããšãå®è¡ããŸãã
Ansible ã§ããã°ã©ãã³ã°ããããšããªãå±éºãªã®ãããããŠãªã COBOL ã Ansible ãããåªããŠããã®ãã«ã€ããŠã¯ãå€æ°ãš jinja ã«ã€ããŠã®ç« ã§èª¬æããŸãã ãšãããããäžã€ã ãèšã£ãŠãããŸããåèšç®ã¯ã°ããŒãã«å€æ°ã®å€æŽã®æ¶ããªãçè·¡ãæ®ããããã«ã€ããŠã¯äœãã§ããŸããã äºã€ã®ãçè·¡ãã亀ãã£ãç¬éããã¹ãŠã¯æ¶ãå»ã£ãã
æ°é£ãã人åãã®æ³šæ: ãã®åœ¹å²ã¯ç¢ºãã«å¶åŸ¡ãããŒã«åœ±é¿ãäžããå¯èœæ§ããããŸãã é£ã¹ã delegate_to
ãããŠããã¯åççãªçšéããããŸãã é£ã¹ã meta: end host/play
ã ãããïŒ åºæ¬ãæããããšãèŠããŠããŸãã? å¿ããŸãã delegate_to
ã ç§ãã¡ã¯æãã·ã³ãã«ã§æãçŸãã Ansible ã³ãŒãã«ã€ããŠè©±ããŠããŸãã ããã¯ãèªã¿ããããæžããããããããã°ããããããã¹ããããããå®äºããã®ãç°¡åã§ãã ããã§ãããäžåºŠ:
play ãš play ã®ã¿ããã©ã®ãã¹ãã§äœãå®è¡ãããã決å®ããŸãã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãéã³ãšåœ¹å²ã®å¯Ÿç«ã«ã€ããŠåãäžããŸããã 次ã«ãã¿ã¹ã¯ãšåœ¹å²ã®é¢ä¿ã«ã€ããŠèª¬æããŸãã
ã¿ã¹ã¯ãšåœ¹å²
éã³ãèããŠã¿ãŸããã:
- hosts: somegroup
pre_tasks:
- some_tasks1:
roles:
- role1
- role2
post_tasks:
- some_task2:
- some_task3:
foo ãå®è¡ããå¿
èŠããããšããŸãããã ãããŠããã¯æ¬¡ã®ããã«ãªããŸã foo: name=foobar state=present
ã ããã¯ã©ãã«æžãã°ããã®ã§ããããïŒ ãã¬ã§ïŒ 圹è·ïŒ 圹å²ãäœæããŸãã?
...ããã§ãã¿ã¹ã¯ã¯ã©ããžè¡ã£ãã®ã§ãããã?
ããäžåºŠåºæ¬ã§ããåçããã€ã¹ããå§ããŸãã ãã®åé¡ã«æµ®ããŠãããšããã¬ãŒãä»ã®ãã¹ãŠã®åºç€ãšããŠäœ¿çšã§ããªããªããçµæã¯ãäžå®å®ãã«ãªããŸãã
åçããã€ã¹: hosts ãã£ã¬ã¯ãã£ããåçèªäœã®èšå®ãããã³ pre_tasksãã¿ã¹ã¯ãããŒã«ãpost_tasks ã»ã¯ã·ã§ã³ã ãã¬ã€ã®ããã®æ®ãã®ãã©ã¡ãŒã¿ã¯ãä»ã®ãšããç§ãã¡ã«ãšã£ãŠéèŠã§ã¯ãããŸããã
ã¿ã¹ã¯ãšåœ¹å²ãå«ãã»ã¯ã·ã§ã³ã®é åº: pre_tasks
, roles
, tasks
, post_tasks
ã æå³çã«ã¯å®è¡é åºã¯æ¬¡ã®ãšããã§ãã tasks
О roles
ãæ確ã§ãªãå Žåããã¹ã ãã©ã¯ãã£ã¹ã«ããã°ãã»ã¯ã·ã§ã³ãè¿œå ããŠããŸã tasks
ãããã§ãªãå Žåã«ã®ã¿ roles
ã ããå Žå roles
ãæ·»ä»ããããã¹ãŠã®ã¿ã¹ã¯ãã»ã¯ã·ã§ã³ã«é
眮ãããŸã pre_tasks
/post_tasks
.
æ®ã£ãŠããã®ã¯ããã¹ãŠãæå³çã«æ確ã§ãããšããããšã ãã§ãã pre_tasks
ãããã roles
ãããã post_tasks
.
ããããã¢ãžã¥ãŒã«åŒã³åºãã¯ã©ãã«ããã®ã?ãšãã質åã«ã¯ãŸã çããŠããŸããã foo
æžãïŒ åã¢ãžã¥ãŒã«ã®ããŒã«å
šäœãèšè¿°ããå¿
èŠããããŸãã? ãããšãå
šãŠã«åã圹å²ãæãããæ¹ãè¯ãã®ã§ããããïŒ ãŸãã圹å²ã§ã¯ãªãå ŽåãäºåãŸãã¯äºåŸãã©ãã«æžãã°ããã®ã§ãããã?
ãããã®è³ªåã«å¯Ÿããåççãªçãããªãå Žåãããã¯çŽèŠ³åã®æ¬ åŠãã€ãŸãåããäžå®å®ãªåºç€ãã®å
åã§ãã ãããç解ããŸãããã ãŸããç§å¯ã®è³ªå: ãã¬ã€ã«åé¡ãããå Žå pre_tasks
О post_tasks
(ã¿ã¹ã¯ãããŒã«ã¯ãããŸãã)ãæåã®ã¿ã¹ã¯ãå®è¡ãããšäœããå£ããå¯èœæ§ããããŸãã post_tasks
æåŸãŸã§ç§»åãããŠããã ããŸã pre_tasks
?
ãã¡ããã質åã®æèšã¯ãããå£ããããšã瀺åããŠããŸãã ããããæ£ç¢ºã«ã¯äœã§ããããïŒ
...ãã³ãã©ãŒã åºæ¬ãèªããšããã¹ãŠã®ãã³ãã©ãŒãåã»ã¯ã·ã§ã³ã®åŸã«èªåçã«ãã©ãã·ã¥ããããšããéèŠãªäºå®ãããããŸãã ãããã®ã ããã®ãã¹ãŠã®ã¿ã¹ã¯ pre_tasks
ã次ã«éç¥ããããã¹ãŠã®ãã³ãã©ãŒã ãã®åŸããã¹ãŠã®ããŒã«ãšãããŒã«å
ã§éç¥ããããã¹ãŠã®ãã³ãã©ãŒãå®è¡ãããŸãã åŸ post_tasks
ãããŠãã®ãã³ãã©ãŒãã¡ã
ãããã£ãŠãã¿ã¹ã¯ããã©ãã°ãããšã post_tasks
в pre_tasks
å Žåããã³ãã©ãŒãå®è¡ãããåã«ãããå®è¡ããå¯èœæ§ããããŸãã ããšãã°ã次ã®å Žå pre_tasks
Web ãµãŒããŒãã€ã³ã¹ããŒã«ããã³æ§æãããŠããããšãããã³ post_tasks
äœããéä¿¡ãããå Žåããã®ã¿ã¹ã¯ãã»ã¯ã·ã§ã³ã«è»¢éããŸã pre_tasks
ãéä¿¡ãæç¹ã§ã¯ãµãŒããŒã¯ãŸã å®è¡ãããŠãããããã¹ãŠãå£ãããšããäºå®ã«ã€ãªãããŸãã
ããäžåºŠèããŠã¿ãŸãããããªãå¿
èŠãªã®ã pre_tasks
О post_tasks
? ããšãã°ã圹å²ãå®è¡ããåã«å¿
èŠãªãã® (ãã³ãã©ãŒãå«ã) ããã¹ãŠå®äºããããã§ãã ã post_tasks
ããã«ãããããŒã« (ãã³ãã©ãŒãå«ã) ã®å®è¡çµæãæäœã§ããããã«ãªããŸãã
æŽå¯åã®ãã Ansible å°é家ãããããäœã§ããããæããŠãããŸãã meta: flush_handlers
ããããããã¬ã€äžã®ã»ã¯ã·ã§ã³ã®å®è¡é åºã«äŸåã§ããã®ã«ããªããã©ãã·ã¥ãã³ãã©ãŒãå¿
èŠãªã®ã§ãããã? ããã«ãmeta:flush_handlers ã䜿çšãããšãéè€ãããã³ãã©ãŒã§äºæãã¬äºæ
ãçºçãã䜿çšæã«å¥åŠãªèŠåã衚瀺ãããå¯èœæ§ããããŸãã when
Ñ block
çAnsible ã«ã€ããŠã®ç¥èãæ·±ãŸãã»ã©ããé£ããããœãªã¥ãŒã·ã§ã³ã«å¯ŸããŠããå€ãã®ãã¥ã¢ã³ã¹ãæå®ã§ããããã«ãªããŸãã ãããŠãäºå/圹å²/äºåŸéã®èªç¶ãªåå²ã䜿çšãããšããåçŽãªè§£æ±ºçã§ã¯ããã¥ã¢ã³ã¹ãçããããšã¯ãããŸããã
ãããŠããããŒãã®è©±ã«æ»ããŸãããã ã©ãã«çœ®ãã°ããã§ããïŒ åãåŸããããšã圹å²ã§ãã? æããã«ããã㯠foo ã®ãã³ãã©ãŒã®çµæãå¿ èŠãã©ããã«ãã£ãŠæ±ºãŸããŸãã ããããååšããªãå Žåã¯ãfoo ã pre ãŸã㯠post ã«é 眮ããå¿ èŠã¯ãããŸããããããã®ã»ã¯ã·ã§ã³ã«ã¯ç¹å¥ãªæå³ããããã³ãŒãæ¬äœã®ååŸã§ã¿ã¹ã¯ãå®è¡ããŸãã
ããã§ãã圹å²ãŸãã¯ã¿ã¹ã¯ããšãã質åã«å¯Ÿããçãã¯ããã§ã«å®è¡ãããŠãããã®ã«åž°çããŸããããã«ã¿ã¹ã¯ãããå Žåã¯ãããããã¿ã¹ã¯ã«è¿œå ããå¿ èŠããããŸãã ããŒã«ãããå Žåã¯ã(XNUMX ã€ã®ã¿ã¹ã¯ããã§ã) ããŒã«ãäœæããå¿ èŠããããŸãã ã¿ã¹ã¯ãšããŒã«ã¯åæã«äœ¿çšãããªãããšã«æ³šæããŠãã ããã
Ansible ã®åºæ¬ãç解ãããšãäžèŠå¥œã¿ã®åé¡ã«é©åãªçããåŸãããŸãã
ã¿ã¹ã¯ãšåœ¹å² (ããŒã XNUMX)
ããã§ããã¬ã€ããã¯ãæžãå§ããã°ããã®ç¶æ³ã«ã€ããŠèª¬æããŸãã fooãbarãbaz ãäœæããå¿ èŠããããŸãã ããã XNUMX ã€ã®ã¿ã¹ã¯ã¯ XNUMX ã€ã®åœ¹å²ã§ããããããšã XNUMX ã€ã®åœ¹å²ã§ãã? 質åãèŠçŽãããšãã©ã®æç¹ã§åœ¹å²ãæžãå§ããå¿ èŠããããŸãã? ã¿ã¹ã¯ãæžãããšãã§ããã®ã«ãããŒã«ãæžãããšã«äœã®æå³ãããã®ã§ãããã?... ããŒã«ãšã¯äœã§ãã?
æ倧ã®ééãã® XNUMX ã€ã¯ (ããã«ã€ããŠã¯ãã§ã«è©±ããŸãã)ãããŒã«ãããã°ã©ã ã®ã©ã€ãã©ãªå ã®é¢æ°ã®ãããªãã®ãšèããããšã§ãã äžè¬çãªé¢æ°ã®èª¬æã¯ã©ã®ãããªãã®ã§ãã? å ¥ååŒæ°ãåãå ¥ããå¯æ¬¡çãªåå ãšå¯Ÿè©±ããå¯æ¬¡çãªåœ±é¿ãåãŒããå€ãè¿ããŸãã
ããŠã泚æããŠãã ããã ãã®åœ¹å²ã«ãããŠãããããäœãã§ããã§ããããïŒ ãã€ã§ãå¯äœçšãåŒã³åºãããšãã§ããŸããããã¯ãå¯äœçšãäœæãããšãã Ansible å
šäœã®æ¬è³ªã§ãã å¯æ¬¡çãªåå ããããŸãã? åçŽã ãããããå€ãæž¡ããŠè¿ããã®ã§ã¯ããããæ©èœããŸããã ãŸããããŒã«ã«å€ãæž¡ãããšã¯ã§ããŸããã ããŒã«ã® vars ã»ã¯ã·ã§ã³ã§ããã¬ã€ã®åç¶æéãµã€ãºãå«ãã°ããŒãã«å€æ°ãèšå®ã§ããŸãã ããŒã«å
ã§æå¹æéãæå®ããã°ããŒãã«å€æ°ãèšå®ã§ããŸãã ãããã¯ãPlaybook ã®åç¶æéããã£ãŠã (set_fact
/register
ïŒã ãã ãããããŒã«ã«å€æ°ãã䜿çšããããšã¯ã§ããŸããã ãå€ãååŸãããŠãå€ãè¿ããããšã¯ã§ããŸããã
ããããéèŠãªããšãããããŸããå¯äœçšãåŒãèµ·ãããã« Ansible ã§äœããæžãããšã¯ã§ããªããšããããšã§ãã ã°ããŒãã«å€æ°ã®å€æŽã¯åžžã«é¢æ°ã®å¯äœçšãšãªããŸãã ããšãã°ãRust ã§ã¯ãã°ããŒãã«å€æ°ãå€æŽããããšã¯æ¬¡ã®ããã«ãªããŸãã unsafe
ã Ansible ã§ã¯ããããããŒã«ã®å€ã«åœ±é¿ãäžããå¯äžã®æ¹æ³ã§ãã 䜿çšãããŠããèšèã«æ³šæããŠãã ããããããŒã«ã«å€ãæž¡ããã§ã¯ãªãããããŒã«ã䜿çšããå€ãå€æŽããããšããããšã§ãã 圹å²éã«åé¢ã¯ãããŸããã ã¿ã¹ã¯ãšåœ¹å²ã®éã«åé¢ã¯ãããŸããã
åèšïŒ 圹å²ã¯æ©èœã§ã¯ãããŸãã.
圹æã®è¯ããšããã¯äœã§ããïŒ ãŸããããŒã«ã«ã¯ããã©ã«ãå€ããããŸã(/default/main.yaml
)ã第 XNUMX ã«ããã®ããŒã«ã«ã¯ãã¡ã€ã«ãä¿åããããã®è¿œå ã®ãã£ã¬ã¯ããªããããŸãã
ããã©ã«ãå€ã®å©ç¹ã¯äœã§ãã? ããºããŒã®ãã©ããã (Ansible ã®ããªãæªãã å€æ°ã®åªå
é äœã®è¡š) ã§ã¯ãããŒã«ã®ããã©ã«ãã®åªå
é äœãæãäœããªããŸã (Ansible ã³ãã³ãã©ã€ã³ ãã©ã¡ãŒã¿ãŒãé€ã)ã ããã¯ãããã©ã«ãå€ãæå®ããå¿
èŠããããã€ã³ãã³ããªå€æ°ãã°ã«ãŒãå€æ°ã®å€ããªãŒããŒã©ã€ããããããšãå¿é
ããªãå Žåã¯ãããŒã«ã®ããã©ã«ããå¯äžã®é©åãªå Žæã§ããããšãæå³ããŸãã (å°ãåãã€ããŠããŸãããä»ã«ããããããããŸã) |d(your_default_here)
ããã ããéæ¢ããå Žæã«ã€ããŠè©±ãå Žåã¯ãããŒã«ã®ã¿ãããã©ã«ãã«ãªããŸãïŒã
圹æã«ã€ããŠä»ã«çŽ æŽãããç¹ã¯äœã§ãã? å°çšã®ã«ã¿ãã°ãããããã§ãã ãããã¯å€æ°ã®ãã£ã¬ã¯ããªã§ãããå®æ° (ã€ãŸããããŒã«ã«å¯ŸããŠèšç®ããã) ãšåç (ãã¿ãŒã³ãŸãã¯ã¢ã³ããã¿ãŒã³ã®ãããããååšããŸã) ã®äž¡æ¹ã§ãã include_vars
äžç·ã« {{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml
ãïŒã ãããã¯æ¬¡ã®ãã£ã¬ã¯ããªã§ã files/
, templates/
ã ãŸããç¬èªã®ã¢ãžã¥ãŒã«ãšãã©ã°ã€ã³ãæã€ããšãã§ããŸã (library/
ïŒã ãã ãããã¬ã€ããã¯å
ã®ã¿ã¹ã¯ (ããããã¹ãŠãå«ããããšãã§ããŸã) ãšæ¯èŒããå Žåãããã§ã®å¯äžã®å©ç¹ã¯ããã¡ã€ã«ã XNUMX ã€ã®å±±ã§ã¯ãªããè€æ°ã®å¥ã
ã®å±±ã«ãã³ããããããšã§ãã
ãã XNUMX ã€ã®è©³çŽ°: (Galaxy çµç±ã§) åå©çšã§ããããŒã«ã®äœæãè©Šã¿ãããšãã§ããŸãã ã³ã¬ã¯ã·ã§ã³ã®åºçŸã«ããã圹å²ã®åæ£ã¯ã»ãšãã©å¿ãå»ããããšèããããŸãã
ãããã£ãŠãããŒã«ã«ã¯ XNUMX ã€ã®éèŠãªæ©èœããããŸããXNUMX ã€ã¯ããã©ã«ã (ç¬èªã®æ©èœ) ãããããã XNUMX ã€ã¯ã³ãŒããæ§é åã§ããããšã§ãã
å ã®è³ªåã«æ»ããŸãããã€ã¿ã¹ã¯ãå®è¡ãããã€åœ¹å²ãå®è¡ãããã§ãã ãã¬ã€ããã¯å ã®ã¿ã¹ã¯ã¯ãã»ãšãã©ã®å ŽåãããŒã«ã®ååŸã®ãæ¥çå€ããšããŠããŸãã¯ç¬ç«ããæ§ç¯èŠçŽ ãšããŠäœ¿çšãããŸã (ãã®å Žåãã³ãŒãå ã«ããŒã«ã¯ååšããªãã¯ãã§ã)ã 圹å²ãæ··åšããéåžžã®ã¿ã¹ã¯ã®å±±ã¯ãæããã«ããå æžã§ãã ã¿ã¹ã¯ãŸãã¯åœ¹å²ãªã©ãç¹å®ã®ã¹ã¿ã€ã«ã«åŸãå¿ èŠããããŸãã ããŒã«ã«ãããšã³ãã£ãã£ãšããã©ã«ããåé¢ãããã¿ã¹ã¯ã«ããã³ãŒããããéãèªã¿åãããšãã§ããŸãã éåžžããããåºå®çãªã(éèŠãã€è€éãª) ã³ãŒããããŒã«ã«é 眮ãããè£å©ã¹ã¯ãªãããã¿ã¹ã¯ ã¹ã¿ã€ã«ã§èšè¿°ãããŸãã
import_role ãã¿ã¹ã¯ãšããŠå®è¡ããããšãå¯èœã§ããããããèšè¿°ããå Žåã¯ããªããããå®è¡ããã®ããèªåã®çŸæèã«åºã¥ããŠèª¬æã§ããããã«æºåããŠãã ããã
æŽå¯åã®ããèªè
ã¯ãããŒã«ã¯ããŒã«ãã€ã³ããŒãã§ããããŒã«ã¯ galaxy.yml çµç±ã§äŸåé¢ä¿ãæã€ããšãã§ããããã«ã²ã©ãã²ã©ãåé¡ãååšããããšèšããããããŸããã include_role
â ç§ãã¡ã¯ãã£ã®ã¥ã¢äœæã®ã¹ãã«ã§ã¯ãªããåºæ¬ç㪠Ansible ã®ã¹ãã«ãåäžãããŠããããšãæãåºããŠãã ããã
ãã³ãã©ãŒãšã¿ã¹ã¯
ãã XNUMX ã€ã®æãããªäºæããã³ãã©ãŒã«ã€ããŠèª¬æããŸãããã ããããæ£ãã䜿çšããæ¹æ³ãç¥ãããšã¯ãã»ãšãã©èžè¡ã§ãã ãã³ãã©ãŒãšãã©ãã°ã®éãã¯äœã§ãã?
åºæ¬ãèŠããŠããã®ã§ãäŸã瀺ããŸãã
- hosts: group1
tasks:
- foo:
notify: handler1
handlers:
- name: handler1
bar:
ããŒã«ã®ãã³ãã©ãŒã¯ãrolename/handlers/main.yaml ã«ãããŸãã ãã³ãã©ãŒã¯ãã¹ãŠã®ãã¬ã€åå è éãæ¢çŽ¢ããŸããpre/post_tasks ã¯ããŒã« ãã³ãã©ãŒããã«ã§ããããŒã«ã¯ãã¬ã€ãããã³ãã©ãŒããã«ã§ããŸãã ãã ãããã³ãã©ãŒãžã®ãã¯ãã¹ããŒã«ãåŒã³åºãã¯ãåçŽãªãã³ãã©ãŒãç¹°ãè¿ããããã¯ããã«åä»ãªåé¡ãåŒãèµ·ãããŸãã (ãã¹ã ãã©ã¯ãã£ã¹ã®ãã XNUMX ã€ã®èŠçŽ ã¯ããã³ãã©ãŒåãç¹°ãè¿ããªãããã«ããããšã§ã)ã
äž»ãªéãã¯ãã¿ã¹ã¯ãåžžã« (ã¹ãçã«) å®è¡ãããããšã§ã (ãã©ã¹/ãã€ãã¹ ã¿ã°ãš when
)ãããã³ãã³ãã©ãŒ - ç¶æ
å€æŽã«ãã (éç¥ã¯ãå€æŽãããå Žåã«ã®ã¿èµ·åãããŸã)ã ããã¯ã©ãããæå³ã§ããïŒ ããšãã°ãåèµ·åãããšãã«å€æŽããªãã£ãå Žåããã³ãã©ãŒã¯ååšããŸããã çæã¿ã¹ã¯ã«å€æŽããªãã®ã«ãã³ãã©ãŒãå®è¡ããå¿
èŠãããã®ã¯ãªãã§ãããã? ããšãã°ãäœããå£ããŠå€æŽãããããå®è¡ããã³ãã©ãŒã«å°éããªãã£ãå Žåãªã©ã§ãã ããšãã°ããããã¯ãŒã¯ãäžæçã«ããŠã³ããããã§ãã æ§æãå€æŽãããŸãããããµãŒãã¹ã¯åèµ·åãããŠããŸããã 次åèµ·åãããšãæ§æã¯å€æŽãããªããªãããµãŒãã¹ã¯å€ãããŒãžã§ã³ã®æ§æã®ãŸãŸã«ãªããŸãã
æ§æã«é¢ããç¶æ³ã¯è§£æ±ºã§ããŸãã (ããæ£ç¢ºã«ã¯ããã¡ã€ã«ãã©ã°ãªã©ã䜿çšããŠç¹å¥ãªåèµ·åãããã³ã«ãèªåã§çºæã§ããŸãããããã¯ã©ã®åœ¢åŒã§ããåºæ¬ç㪠Ansibleãã§ã¯ãªããªããŸã)ã ãããããã XNUMX ã€ã®ãããã話ããããŸããã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ãããããèšé²ãããšããããšã§ãã .service
-fileããããŠä»ãããå¿
èŠã§ã daemon_reload
О state=started
ã ãããŠããããèªç¶ã«è¡ãããã®ã¯ãã³ãã©ãŒã§ãããšæãããŸãã ãã ãããã³ãã©ãŒã§ã¯ãªããã¿ã¹ã¯ãªã¹ããŸãã¯ããŒã«ã®æåŸã«ããã¿ã¹ã¯ã«ãããšãæ¯ååªçã«å®è¡ãããŸãã ããšããã¬ã€ããã¯ãéäžã§å£ãããšããŠãã ããã¯åèµ·åã®åé¡ããŸã£ãã解決ããŸãã (åªçæ§ã倱ããããããåèµ·åå±æ§ã䜿çšããŠã¿ã¹ã¯ãå®è¡ããããšã¯ã§ããŸãã) ããstate=started ãå®è¡ãã䟡å€ã¯ééããªãããããã¬ã€ããã¯ã®å
šäœçãªå®å®æ§ãåäžããŸãã æ¥ç¶æ°ãšåçç¶æ
ãæžå°ããŸãã
ãã³ãã©ãŒã®ãã XNUMX ã€ã®å©ç¹ã¯ãåºåãè©°ãŸãããªãããšã§ãã å€æŽã¯ãããŸããã§ãããåºåã«äœåãªã¹ãããã OK ã¯ãªããèªã¿ããããªããŸããã ããã¯ãã€ãã¹ã®ç¹æ§ã§ããããŸããæåã®å®è¡æã«ç·åœ¢ã«å®è¡ãããã¿ã¹ã¯ã§ã¿ã€ããã¹ãèŠã€ããå Žåããã³ãã©ãŒã¯å€æŽããããšãã®ã¿å®è¡ãããŸãã ç¶æ³ã«ãã£ãŠã¯ - éåžžã«ãŸãã§ãã ããšãã°ãXNUMX幎åŸã®äººçã§åããŠã ãããŠãã¡ãããååã«ã¿ã€ããã¹ãããã°ããã¹ãŠãå£ããŠããŸããŸãã XNUMX åç®ã«å®è¡ããªãå Žåã¯ãäœãå€ãããŸããã
ãããšã¯å¥ã«ãå€æ°ã®å¯çšæ§ã«ã€ããŠè©±ãå¿ èŠããããŸãã äŸãã°ã«ãŒãã§ã¿ã¹ã¯ãéç¥ããå Žåãå€æ°ã«ã¯äœãå ¥ãã§ããããïŒ åæçã«æšæž¬ããããšã¯ã§ããŸãããç¹ã«å€æ°ãç°ãªãå Žæããæ¥ãå Žåã«ã¯ãå¿ ãããèªæã§ã¯ãããŸããã
... ã€ãŸãããã³ãã©ãŒã¯èŠãç®ãããã¯ããã«åœ¹ã«ç«ãããã¯ããã«åé¡ãå€ãã®ã§ãã ãã³ãã©ãŒãªã㧠(äœåãªè£ 食ãªãã§) äœããçŸããæžãããšãã§ããã®ã§ããã°ããã³ãã©ãŒãªãã§ãããè¡ãæ¹ãè¯ãã§ãããã ãããããŸããããªããŠãã圌ããšäžç·ã«ãã£ãã»ããè¯ãã®ã§ãã
æªæã®ããèªè
ã¯ãç§ãã¡ãè°è«ããŠããªãããšãæ£ããææããŠããŸã listen
ãã³ãã©ãŒã¯å¥ã®ãã³ãã©ãŒã®éç¥ãåŒã³åºãããšãã§ããããšããã³ãã©ãŒã«ã¯ import_tasks (with_items 㧠include_role ãå®è¡ã§ãã) ãå«ããããšãã§ããããšãAnsible ã®ãã³ãã©ãŒ ã·ã¹ãã ã¯ãã¥ãŒãªã³ã°å®å
šã§ããããšãinclude_role ã®ãã³ãã©ãŒããã¬ã€ã®ãã³ãã©ãŒãšèå³æ·±ãæ¹æ³ã§äº€å·®ããããšããªã©ãdã - ããããã¹ãŠã¯æããã«ãåºæ¬ãã§ã¯ãããŸããïŒã
ãã ããå®éã«ã¯èŠããŠããå¿
èŠãããç¹å¥ãªæ©èœã XNUMX ã€ãããŸãã ã¿ã¹ã¯ã次ã®ããã«å®è¡ãããå Žå delegate_to
éç¥ãããå Žåã察å¿ãããã³ãã©ãŒã¯äœãããã«å®è¡ãããŸãã delegate_to
ãã€ãŸããã¬ã€ãå²ãåœãŠãããŠãããã¹ãäžã§ã (ãã¡ããããã³ãã©ãŒã¯ delegate_to
åãïŒã
ãããšã¯å¥ã«ãåå©çšå¯èœãªããŒã«ã«ã€ããŠå°ãã話ããããšæããŸãã ã³ã¬ã¯ã·ã§ã³ãç»å Žããåã¯ãæ®éçãªåœ¹å²ãäœãããšãã§ãããšããã¢ã€ãã¢ããããŸããã ansible-galaxy install
ãããŠãè¡ã£ãŠããŸããã ããããç¶æ³ã®ããããããªã¢ã³ãã®ãã¹ãŠã® OS ã§åäœããŸãã ãããã£ãŠãç§ã®æèŠã¯ãããã¯æ©èœããŸããã 質éã®ããããããåœ¹å² include_vars
100500 件ã®ã±ãŒã¹ããµããŒãããŠããããäŸå€çãªãã°ãå€çºããéåœã«ãããŸãã ãããã¯å€§èŠæš¡ãªãã¹ãã§ã«ããŒã§ããŸãããä»ã®ãã¹ããšåæ§ã«ãå
¥åå€ã®ãã«ã«ãç©ãšé¢æ°å
šäœãçšæãããããåå¥ã®ã·ããªãªãã«ããŒããããã®ã©ã¡ããã§ãã ç§ã®æèŠã¯ã圹å²ãç·åœ¢ (埪ç°çè€éã 1) ã§ããæ¹ãã¯ããã«åªããŠãããšããããšã§ãã
if ãå°ãªããªãã»ã© (æ瀺çãŸãã¯å®£èšç - 圢åŒã§) when
ãŸãã¯ãã©ãŒã include_vars
å€æ°ã®ã»ããã«ãã£ãŠïŒã圹å²ãããè¯ããªããŸãã å Žåã«ãã£ãŠã¯åå²ãäœæããå¿
èŠããããŸãããç¹°ãè¿ããŸãããåå²ã®æ°ã¯å°ãªãã»ã©è¯ãã®ã§ãã ãããã£ãŠãã®ã£ã©ã¯ã·ãŒã§ã¯è¯ã圹å²ã®ããã«æããŸãïŒããŸããããŸãïŒïŒã when
XNUMX ã€ã®ã¿ã¹ã¯ãããªããèªåèªèº«ã®ã圹å²ããã奜ãŸãããªãå¯èœæ§ããããŸãã galaxy ã®åœ¹å²ãããåªããŠããã®ã¯ãäœããæžãå§ãããšãã§ãã ç¶æ³ãããã«æªåããã®ã¯ãäœããå£ããããããéæ²³ãšã®åœ¹å²ãã®ããã§ã¯ãªãããšçããããšãã§ãã ãããéããšãXNUMX ã€ã®ã€ã³ã¯ã«ãŒãžã§ã³ãXNUMX ã€ã®ã¿ã¹ã¯ ã·ãŒããããã³ã¹ã¿ãã¯ãååšããŸãã when
'ov... ãããŠããããç解ããå¿
èŠããããŸãã 5 ã€ã®ã¿ã¹ã¯ã®ä»£ããã«ãç Žããã®ãäœããªãçŽç·çãªãªã¹ãã§ãã
以äžã®éšåã§ã¯
- ã€ã³ãã³ããªãŒãã°ã«ãŒãå€æ°ãhost_group_vars ãã©ã°ã€ã³ãhostvars ã«ã€ããŠå°ã説æããŸãã ã¹ãã²ããã£ã䜿ã£ããŽã«ãã£ã¢ã³ãããã®çµã³æ¹ã ã¹ã³ãŒããšåªå é äœå€æ°ãAnsible ã¡ã¢ãª ã¢ãã«ã ãã§ã¯ãããŒã¿ããŒã¹ã®ãŠãŒã¶ãŒåã¯ã©ãã«ä¿åããã°ããã®ã§ãããã?ã
jinja: {{ jinja }}
â nosql notype nosense ãœããç²åã ããã¯ã©ãã«ã§ããããäºæ³å€ã®å Žæã«ããããŸãã ã«ã€ããŠå°ã!!unsafe
ãããŠçŸå³ããã€ã ã€ã ã
åºæïŒ habr.com