ã¢ãããŒã IaC (ã³ãŒããšããŠã®ã€ã³ãã©ã¹ãã©ã¯ãã£) ã¯ããªããžããªã«ä¿åãããŠããã³ãŒãã ãã§ãªãããã®ã³ãŒããåãå·»ã人ã ãããã»ã¹ãããæ§æãããŸãããœãããŠã§ã¢éçºããã€ã³ãã©ç®¡çãèšè¿°ãŸã§ã®ã¢ãããŒããåå©çšããããšã¯å¯èœã§ãã?ãã®èãã念é ã«çœ®ããŠèšäºãèªããšè¯ãã§ãããã
ããã¯ç§ã®èšé²ã§ã
ã¹ã©ã€ããšãããª
è±èªç ãã·ã¢èªç - äºè¡æŒç¿ 2019-04-24
SpbLUG DevopsConf 2019-05-28 ã®ãããª(RU) DINS DevOps EVENING 2019-06-20 ã®ãããª(RU) ã¹ã©ã€ã
bash ã®æŽå²ãšããŠã®ã€ã³ãã©ã¹ãã©ã¯ãã£
ããªããæ°ãããããžã§ã¯ãã«æ¥ãŠã圌ããããªãã«ããèšã£ããšããŸãã ã³ãŒããšããŠã®ã€ã³ãã©ã¹ãã©ã¯ãã£ããå®éã«å€æããã®ã¯ bash ã®æŽå²ãšããŠã®ã€ã³ãã©ã¹ãã©ã¯ã㣠ãŸãã¯ããšãã° bash å±¥æŽãšããŠã®ããã¥ã¡ã³ããããã¯éåžžã«çŸå®çãªç¶æ³ã§ãããããšãã°ãåæ§ã®ã±ãŒã¹ãããã¹ã»ãªã»ã³ã³æ°ã®è¬æŒã§èª¬æãããŸããã
ããçšåºŠã®é¡æã蟌ããŠãããèšããŸãã bash ã®æŽå²ãšããŠã®ã€ã³ãã©ã¹ãã©ã¯ã㣠ããã¯ã³ãŒãã®ãããªãã®ã§ã:
- åçŸæ§: bash å±¥æŽãååŸããããããã³ãã³ããå®è¡ãããšãåºåãšããŠåäœããæ§æãååŸã§ããå ŽåããããŸãã
- ããŒãžã§ã³ç®¡ç: 誰ãå ¥ã£ãŠããŠäœããããã¯ããããŸããããããåºå£ã§æ©èœããæ§æã«ã€ãªãããã©ããã¯äºå®ã§ã¯ãããŸããã
- ОÑÑПÑОÑ: 誰ãäœããããã®ç©èªããã ãããµãŒããŒã倱ã£ãå Žåã¯äœ¿çšã§ããªããªããŸãã
äœããããïŒ
ã³ãŒããšããŠã®ã€ã³ãã©ã¹ãã©ã¯ãã£
ãããªå¥åŠãªã±ãŒã¹ã§ãã bash ã®æŽå²ãšããŠã®ã€ã³ãã©ã¹ãã©ã¯ã㣠è³ãæã£ãŠåŒã£åŒµãããšãã§ããŸã ã³ãŒããšããŠã®ã€ã³ãã©ã¹ãã©ã¯ãã£ããããå€ãè¯ã LAMP ãµãŒããŒãããè€éãªããšãå®è¡ãããå Žåã¯ããã®ã³ãŒããäœããã®æ¹æ³ã§å€æŽãå€æŽãæ¹åããå¿ èŠããããšããçµè«ã«éããŸãã次ã«ããããã®éã®é¡äŒŒç¹ãæ€èšããããšæããŸãã ã³ãŒããšããŠã®ã€ã³ãã©ã¹ãã©ã¯ã㣠ãããŠãœãããŠã§ã¢éçºã
ãã©ã€ã
ã¹ãã¬ãŒãž ã·ã¹ãã éçºãããžã§ã¯ãã«ã¯ãµãã¿ã¹ã¯ããããŸããã
- ããã«sshã§ãã°ã€ã³ããŠã³ãã³ããå®è¡ããŸãã
- ããã«ãã¡ã€ã«ãã³ããŒããŸãã
- ããã§èšå®ãä¿®æ£ããŸãã
- ããã§ãµãŒãã¹ãéå§ããŸã
- ...
- å©çïŒ
説æããããžãã¯ã«ã€ããŠã¯ãç¹ã«ãããžã§ã¯ããå§ãŸã£ãã°ããã®åæ段éã§ã¯ãbash ã§ååã§ãããã
D.R.Y. ã®ãããªç¿æ £ãããããšãå€æããŸããã ïŒåãããšãç¹°ãè¿ããªãã§ãã ããïŒãã¢ã€ãã¢ã¯ãæ¢åã®ã³ãŒããåå©çšããããšã§ããç°¡åããã«èãããŸãããç§ãã¡ã¯ããã«ããã«ãã©ãçããŸããã§ãããç§ãã¡ã®å Žåãããã¯æ§æãã¹ã¯ãªããããåé¢ãããšããå¹³å¡ãªã¢ã€ãã¢ã§ããããããã®ãã€ã³ã¹ããŒã«ãåå¥ã«å±éããåå¥ã«æ§æããæ¹æ³ã®ããžãã¹ ããžãã¯ã
åºäœã CFMçš
æéãçµã€ã«ã€ããŠãããžã§ã¯ãã¯æé·ãã
åäžè²¬ä»»ã®åå
åã¯ã©ã¹ã¯ 1 ã€ã®ã¿ã¹ã¯ã ããå®è¡ããŸãã
ã³ãŒããæ··ãåãããŠãäžæ岩ã®ç¥èãªã¹ãã²ãã㣠ã¢ã³ã¹ã¿ãŒãäœæããå¿ èŠã¯ãããŸãããã€ã³ãã©ã¹ãã©ã¯ãã£ã¯åçŽãªã¬ã³ã¬ã§æ§æãããŠããå¿ èŠããããŸãã Ansible ãã¬ã€ããã¯ãå°ããªéšåã«åå²ããAnsible ããŒã«ãèªã¿åããšãã¡ã³ããã³ã¹ã容æã«ãªãããšãããããŸããã
ãªãŒãã³ã¯ããŒãºã®åå
ãªãŒãã³/ã¯ããŒãºã®ååã
- æ¡åŒµã«ãªãŒãã³: æ°ãããšã³ãã£ã㣠ã¿ã€ããäœæããããšã§ãšã³ãã£ãã£ã®åäœãæ¡åŒµã§ããããšãæå³ããŸãã
- å€æŽã¯åãä»ããŠããŸãã: ãšã³ãã£ãã£ã®åäœãæ¡åŒµããçµæããããã®ãšã³ãã£ãã£ã䜿çšããã³ãŒãã«å€æŽãå ããå¿ èŠã¯ãããŸããã
åœåããã¹ã ã€ã³ãã©ã¹ãã©ã¯ãã£ãä»®æ³ãã·ã³ã«ãããã€ããŠããŸãããããããã€ã®ããžãã¹ ããžãã¯ãå®è£ ãšã¯åé¢ãããŠãããããåé¡ãªããã¢ã¡ã¿ã«ãžã®ããŒã«ã¢ãŠããè¿œå ããŸããã
ãªã¹ã³ã眮æåç
ããŒãã©ã»ãªã¹ã³ãã®çœ®æåçãããã°ã©ã å ã®ãªããžã§ã¯ãã¯ãããã°ã©ã ã®æ£ããå®è¡ãå€æŽããããšãªãããã®ãµãã¿ã€ãã®ã€ã³ã¹ã¿ã³ã¹ãšçœ®ãæãå¯èœã§ãªããã°ãªããŸããã
ãã£ãšåºãèŠããšãããã¯ç¹å®ã®ãããžã§ã¯ãã«é©çšã§ããæ©èœã§ã¯ãããŸããã åºäœããããã¯äžè¬ã« CFM ã«é¢ãããã®ã§ãããšãã°ãå¥ã®ãããžã§ã¯ãã§ã¯ãããŸããŸãª Javaãã¢ããªã±ãŒã·ã§ã³ ãµãŒããŒãããŒã¿ããŒã¹ãOS ãªã©ã®äžã«ããã¯ã¹åããã Java ã¢ããªã±ãŒã·ã§ã³ããããã€ããå¿ èŠããããŸãããã®äŸã䜿ã£ãŠãããã«åçãèããŠãããŸã åºäœã
ç§ãã¡ã®å Žåãimbjava ãŸã㯠oraclejava ããŒã«ãã€ã³ã¹ããŒã«ããŠããã°ãJava ãã€ããªå®è¡å¯èœãã¡ã€ã«ãååšãããšããåæãã€ã³ãã©ã¹ãã©ã¯ã㣠ããŒã å ã«ãããŸãããããå¿ èŠãªçç±ã¯ãäžæµã®åœ¹å²ã¯ãã®åäœã«äŸåããŠãããJava ãæåŸ ããŠããŸããåæã«ãããã«ãããã¢ããªã±ãŒã·ã§ã³ã®ãããã€ããžãã¯ãå€æŽããã«ããã Java å®è£ /ããŒãžã§ã³ãå¥ã®å®è£ /ããŒãžã§ã³ã«çœ®ãæããããšãã§ããŸãã
ããã§ã®åé¡ã¯ãããã Ansible ã§å®è£ ããããšãäžå¯èœã§ãããšããäºå®ã«ããããã®çµæãããŒã å ã§ããã€ãã®åæãçããããšã«ãªããŸãã
ã€ã³ã¿ãŒãã§ãŒã¹åé¢ã®åå
ã€ã³ã¿ãŒãã§ã€ã¹åé¢ã®åå: ãå€ãã®ã¯ã©ã€ã¢ã³ãåºæã®ã€ã³ã¿ãŒãã§ã€ã¹ã¯ã1 ã€ã®æ±çšã€ã³ã¿ãŒãã§ã€ã¹ãããåªããŠããŸãã
åœåãã¢ããªã±ãŒã·ã§ã³ã®ãããã€ã¡ã³ãã®ãã¹ãŠã®å¯å€æ§ã 443 ã€ã® Ansible ãã¬ã€ããã¯ã«ãŸãšããããšããŸãããããµããŒãããã®ãå°é£ã§ããããŸããå€éšã€ã³ã¿ãŒãã§ã€ã¹ãæå®ããå Žå (ã¯ã©ã€ã¢ã³ãã¯ããŒã XNUMX ãæåŸ ããŸã)ãã€ã³ãã©ã¹ãã©ã¯ãã£ãåå¥ã®ãã¬ã€ããã¯ããçµã¿ç«ãŠãããšãã§ããŸããç¹å®ã®å®è£ çšã®ããªãã¯ã
äŸåé¢ä¿é転ã®åå
äŸåé¢ä¿é転ã®åçãããé«ãã¬ãã«ã®ã¢ãžã¥ãŒã«ã¯ãããäœãã¬ãã«ã®ã¢ãžã¥ãŒã«ã«äŸåããªãã§ãã ãããã©ã¡ãã®ã¿ã€ãã®ã¢ãžã¥ãŒã«ãæœè±¡åã«äŸåããå¿ èŠããããŸããæœè±¡åã¯è©³çŽ°ã«äŸåãã¹ãã§ã¯ãããŸããã詳现ã¯æœè±¡åã«äŸåããå¿ èŠããããŸãã
ããã§ã®äŸã¯ã¢ã³ããã¿ãŒã³ã«åºã¥ããŠããŸãã
- 顧客㮠1 人ã¯ãã©ã€ããŒã ã¯ã©ãŠããæã£ãŠããŸããã
- ã¯ã©ãŠãå ã®ä»®æ³ãã·ã³ã泚æããŸããã
- ãã ããã¯ã©ãŠãã®æ§è³ªã«ãããã¢ããªã±ãŒã·ã§ã³ã®ãããã€ã¯ VM ãã©ã®ãã€ããŒãã€ã¶ãŒäžã«ãããã«é¢é£ä»ããããŠããŸããã
ãããã®ãé«ã¬ãã«ã®ã¢ããªã±ãŒã·ã§ã³å±éããžãã¯ã¯äŸåé¢ä¿ã䌎ã£ãŠãã€ããŒãã€ã¶ãŒã®äžäœã¬ãã«ã«æµããããããã®ããžãã¯ãåå©çšãããšãã«åé¡ãçºçããŸããã ãã®ããã«ããªãã§ãã ããã
çžäºäœçš
Infrastructure as Code ã¯ãã³ãŒãã ãã§ã¯ãªããã³ãŒããšäººã ã®é¢ä¿ãã€ã³ãã©ã¹ãã©ã¯ãã£éçºè éã®å¯Ÿè©±ã«ã€ããŠãæå³ããŸãã
ãã¹ä¿æ°
ãããžã§ã¯ãã« Vasya ãå«ãŸããŠãããšä»®å®ããŸãããã Vasya ã¯ã€ã³ãã©ã¹ãã©ã¯ãã£ã«ã€ããŠãã¹ãŠãç¥ã£ãŠããŸããVasya ãçªç¶æ¶ãããã©ããªããŸãã?圌ã¯ãã¹ã«èœ¢ãããå¯èœæ§ãããã®ã§ãããã¯éåžžã«çŸå®çãªç¶æ³ã§ãããã°ãã°ããã¯èµ·ãããŸãããããçºçããã³ãŒãããã®æ§é ãåäœæ¹æ³ãå€èŠ³ããã¹ã¯ãŒãã«é¢ããç¥èãããŒã éã§å ±æãããŠããªãå Žåãå€ãã®äžæå¿«ãªç¶æ³ã«ééããå¯èœæ§ããããŸãããããã®ãªã¹ã¯ãæå°éã«æããããŒã å ã«ç¥èãåæ£ããã«ã¯ãããŸããŸãªã¢ãããŒãã䜿çšã§ããŸãã
ãã¢ãããã·ã³ã°
ããã¯ããã§ã¯ãããŸãã
ãã 1 ã€ã®ç¹æ®ãªã±ãŒã¹ã¯ãã€ã³ã·ãã³ã ã³ãŒã«ã§ããåé¡ãçºçãããšãåœçŽè ãšé¢ä¿è ã®ã°ã«ãŒããéãŸãããªãŒããŒã 1 人任åœãããç»é¢ãå ±æããŠæèã®æµããçºèšããŸããä»ã®åå è ã¯ãªãŒããŒã®èãã«åŸããã³ã³ãœãŒã«ããããªãã¯ãèŠãèŠãããã°ã®äžè¡ãèŠéããŠããªãã確èªããã·ã¹ãã ã«ã€ããŠæ°ããããšãåŠã³ãŸãããã®ã¢ãããŒãã¯å€ãã®å ŽåããŸããããŸããã
ã³ãŒãã¬ãã¥ãŒ
䞻芳çã«ã¯ãã³ãŒã ã¬ãã¥ãŒã䜿çšããŠã€ã³ãã©ã¹ãã©ã¯ãã£ãšãã®ä»çµã¿ã«é¢ããç¥èãåºããæ¹ãå¹æçã§ããã
- ã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ãªããžããªå ã®ã³ãŒãã«ãã£ãŠèšè¿°ãããŸãã
- å€æŽã¯å¥ã®ãã©ã³ãã§çºçããŸãã
- ããŒãž ãªã¯ãšã¹ãäžã«ãã€ã³ãã©ã¹ãã©ã¯ãã£å ã®å€æŽã®å·®åã確èªã§ããŸãã
ããã§ã®ãã€ã©ã€ãã¯ãã¬ãã¥ãŒæ åœè ãã¹ã±ãžã¥ãŒã«ã«åŸã£ãŠ 1 人ãã€éžã°ããããšã§ããããçšåºŠã®ç¢ºçã§ãæ°ããã€ã³ãã©ã¹ãã©ã¯ãã£ã«äŸµå ¥ããããšã«ãªããŸãã
ã³ãŒãã¹ã¿ã€ã«
æéãçµã€ã«ã€ããŠãã¬ãã¥ãŒäžã«å£è«ãèµ·ããå§ããŸãããã¬ãã¥ã¢ãŒã¯ç¬èªã®ã¹ã¿ã€ã«ãæã£ãŠãããã¬ãã¥ã¢ãŒã®ããŒããŒã·ã§ã³ã«ãããã¹ããŒã¹ 2 ã€ãŸã㯠4 ã€ããã£ã¡ã«ã±ãŒã¹ãŸãã¯ã¹ããŒã¯ã±ãŒã¹ãªã©ãããŸããŸãªã¹ã¿ã€ã«ãã¹ã¿ãã¯ãããŸããããããããã«å®è£ ããããšã¯ã§ããŸããã§ããã
- æåã®ã¢ã€ãã¢ã¯ããªã³ã¿ãŒã®äœ¿çšãæšå¥šããããšã§ãããçµå±ã®ãšããã誰ãããšã³ãžãã¢ã§ããã誰ããè³¢ãã®ã§ããã§ããšãã£ã¿ãOSãéããšäžäŸ¿
- ããã¯ãåé¡ã®ããã³ãããããšã« Slack ã«æžã蟌ã¿ããªã³ã¿ãŒåºåãæ·»ä»ãããããã«é²åããŸãããããããã»ãšãã©ã®å Žåããã£ãšéèŠãªããšããããããã³ãŒãã¯æªä¿®æ£ã®ãŸãŸã§ããã
ã°ãªãŒã³ãã«ããã¹ã¿ãŒ
æéãçµã¡ãç¹å®ã®ãã¹ãã«åæ Œããªãã³ãããã¯ãã¹ã¿ãŒã«èš±å¯ãããªããšããçµè«ã«éããŸãããåºæ¥äžããïŒç§ãã¡ã¯ããœãããŠã§ã¢éçºã§é·å¹Žã«ããã£ãŠå®è·µãããŠãã Green Build Master ãçºæããŸããã
- éçºã¯å¥ã®ãã©ã³ãã§é²è¡äžã§ãã
- ãã®ã¹ã¬ããã§ã¯ãã¹ããå®è¡ãããŠããŸãã
- ãã¹ãã倱æãããšãã³ãŒãã¯ãã¹ã¿ãŒã«åã蟌ãŸããŸããã
ãã®æ±ºæãäžãã®ã¯éåžžã«èŠçã§ããããªããªã...å€ãã®è«äºãåŒãèµ·ãããŸããããããã ãã®äŸ¡å€ã¯ãããŸããããªããªã...ã¬ãã¥ãŒã§ã¯ãã¹ã¿ã€ã«ã®éããªãã«å䜵ã®ãªã¯ãšã¹ããå±ãããã«ãªããæéãçµã€ã«ã€ããŠãåé¡ã®ããé åã®æ°ã¯æžãå§ããŸããã
IaC ãã¹ã
ã¹ã¿ã€ã«ã®ãã§ãã¯ã«å ããŠãããšãã°ãã€ã³ãã©ã¹ãã©ã¯ãã£ãå®éã«ãããã€ã§ãããã©ããããã§ãã¯ããããã«ãä»ã®ããšã䜿çšããããšãã§ããŸãããŸãã¯ãã€ã³ãã©ã¹ãã©ã¯ãã£ã®å€æŽã«ãã£ãŠæ倱ãçºçããªãããšã確èªããŸãããªããããå¿ èŠãªã®ã§ãããã?ãã®è³ªåã¯è€éã§å²åŠçãªãã®ã§ããPowershell äžã«äœããã®çç±ã§å¢çæ¡ä»¶ããã§ãã¯ããªããªãŒãã¹ã±ãŒã©ãŒããã£ã => å¿ èŠä»¥äžã® VM ãäœæããã => ã¯ã©ã€ã¢ã³ããèšç»ããå€ãã®è²»çšãè²»ãããããšããã¹ããŒãªãŒã§çããæ¹ãè¯ãã§ããããããã¯ããŸã奜ãŸããããšã§ã¯ãããŸããããæ©ã段éã§ãã®ãšã©ãŒãæ€åºããå¯èœæ§ã¯ååã«ãããŸãã
ãªãè€éãªã€ã³ãã©ãããã«è€éã«ããã®ããšçåã«æã人ããããããããŸãããã€ã³ãã©ã¹ãã©ã¯ãã£ã®ãã¹ãã¯ãã³ãŒãã®å Žåãšåæ§ãåçŽåã§ã¯ãªããã€ã³ãã©ã¹ãã©ã¯ãã£ãã©ã®ããã«æ©èœããããç¥ãããšãç®çã§ãã
IaC ãã¹ã ãã©ããã
IaC ãã¹ã: éç解æ
ã€ã³ãã©ã¹ãã©ã¯ãã£å šäœãäžåºŠã«ãããã€ããŠåäœã確èªãããšãéåžžã«æéãããããæéããããããšãå€æããå ŽåããããŸãããããã£ãŠãåºæ¬ã¯ããã«æ©èœããéãå€ããåå§çãªéšåãå€ãã«ããŒãããã®ã§ãªããã°ãªããŸããã
ããã·ã¥ã¯é£ãã
ç°¡åãªäŸãèŠãŠã¿ãŸããããçŸåšã®ãã£ã¬ã¯ããªå ã®ãã¹ãŠã®ãã¡ã€ã«ãéžæããå¥ã®å Žæã«ã³ããŒããŸããæåã«æãæµ®ãã¶ã®ã¯:
for i in * ; do
cp $i /some/path/$i.bak
done
ãã¡ã€ã«åã«ã¹ããŒã¹ãå«ãŸããŠããå Žåã¯ã©ããªããŸãã?ããã§ãããç§ãã¡ã¯è³¢ãã®ã§ãåŒçšç¬Šã®äœ¿ãæ¹ãç¥ã£ãŠããŸãã
for i in * ; do cp "$i" "/some/path/$i.bak" ; done
ãããã£ãïŒãããïŒãã£ã¬ã¯ããªã«äœããªãå Žåã¯ã©ããªãã§ãããããã°ããã³ã°ã¯æ©èœããŸããã
find . -type f -exec mv -v {} dst/{}.bak ;
ããŠãããŸããããŸãããïŒããã... ãã¡ã€ã«åã«äœãå«ãŸããããå¿ããŸãã n
.
touch x
mv x "$(printf "foonbar")"
find . -type f -print0 | xargs -0 mv -t /path/to/target-dir
éç解æããŒã«
åã®ã¹ãããã®åé¡ã¯ãåŒçšç¬Šãå¿ãããšãã«èŠã€ããå¯èœæ§ããããŸããããã«ã¯èªç¶çã§å€ãã®ææžçããããŸãã
èšèªèšå®
ããŒã«
ã«ããŒ
ãã€ãœã³
ã¢ã³ã·ãã«
IaC ãã¹ã: åäœãã¹ã
åã®äŸã§èŠãããã«ããªã³ã¿ãŒã¯å
šèœã§ã¯ãªãããã¹ãŠã®åé¡é åãææããããšã¯ã§ããŸãããããã«ããœãããŠã§ã¢éçºã«ããããã¹ããšé¡äŒŒããŠãåäœãã¹ããæãåºãããšãã§ããŸããããã«æãæµ®ãã¶ã®ã¯ã
äžçªæåã«è©±ããã®ã¯ã åºäœã ãããŠç§ãã¡ã®ã€ã³ãã©ã¯å°ããªã¬ã³ã¬ã§æ§æãããã¹ãã ãšã圌ãã®æ代ãæ¥ãŸããã
- ã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ãAnsible ããŒã«ãªã©ã®å°ããªãããã¯ã«åå²ãããŸãã
- Docker ãŸã㯠VM ãªã©ãäœããã®ç°å¢ããããã€ãããŸãã
- Ansible ããŒã«ããã®ãã¹ãç°å¢ã«é©çšããŸãã
- ãã¹ãŠãæåŸ ã©ããã«æ©èœããããšã確èªããŸã (ãã¹ããå®è¡ããŸã)ã
- OKãNGãã決ããã®ã¯ç§ãã¡ã§ãã
IaC ãã¹ã: åäœãã¹ã ããŒã«
CFM ã®ãã¹ããšã¯äœã§ãã?åçŽã«ã¹ã¯ãªãããå®è¡ããããšããæ¢è£œã®ãœãªã¥ãŒã·ã§ã³ã䜿çšããããšãã§ããŸãã
CFM
ããŒã«
Ansible
ã·ã§ã
ã·ã§ã
å¡©ã®å±±
testinfra ã®äŸããŠãŒã¶ãŒã test1
, test2
ååšããã°ã«ãŒãã«å±ããŠãã sshusers
:
def test_default_users(host):
users = ['test1', 'test2' ]
for login in users:
assert host.user(login).exists
assert 'sshusers' in host.user(login).groups
äœãéžã¶ã¹ãã§ãã?質åã¯è€éãã€ææ§ã§ãã2018 幎ãã 2019 幎ã«ãããŠã® Github äžã®ãããžã§ã¯ãã®å€æŽã®äŸã次ã«ç€ºããŸãã
IaC ãã¹ã ãã¬ãŒã ã¯ãŒã¯
åé¡ã¯ãã©ã®ããã«ããŠãã¹ãŠããŸãšããŠç«ã¡äžããããšããããšã§ããã§ãã
CFM
ããŒã«
Ansible
ã·ã§ã
ãã©ãã©ãŒã
2018 幎ãã 2019 幎ã«ãããŠã® Github äžã®ãããžã§ã¯ãã®å€æŽã®äŸ:
åå vs.ãã¹ããããã³
åœåç§ãã¡ã¯
- VM ã䞊è¡ããŠäœæããŸãã
- Ansible ããŒã«ãé©çšããŸãã
- æ€æ»ãå®è¡ããŸãã
25ã35ã®åœ¹å²ã®å Žåãäœæ¥æéã¯40ã70åãšé·ãã£ãã§ãã
次ã®ã¹ãããã¯ãjenkins/docker/ansible/molecule ãžã®ç§»è¡ã§ãããææ³çã«ã¯ãã¹ãŠåãã
- ãªã³ãã®ãã¬ã€ããã¯ã
- 圹å²ã䞊ã¹ãŸãã
- ã³ã³ãããèµ·åãã
- Ansible ããŒã«ãé©çšããŸãã
- testinfra ãå®è¡ããŸãã
- ã¹ãçæ§ããã§ãã¯ããŸãã
40 ã®ããŒã«ã®ãªã³ãã£ã³ã°ãš 15 ã®ããŒã«ã®ãã¹ãã«ã¯çŽ XNUMX åãããå§ããŸããã
äœãéžæãããã¯ã䜿çšããã¹ã¿ãã¯ãããŒã ã®å°éç¥èãªã©ãå€ãã®èŠå ã«ãã£ãŠç°ãªããŸããããã§ã¯ãåäœãã¹ãã®è³ªåãã©ã®ããã«è§£æ±ºãããã誰ããèªåã§æ±ºå®ããŸãã
IaC ãã¹ã: çµ±åãã¹ã
ã€ã³ãã©ã¹ãã©ã¯ã㣠ãã¹ã ãã©ãããã®æ¬¡ã®ã¹ãããã¯ãçµ±åãã¹ãã§ãããããã¯åäœãã¹ãã«äŒŒãŠããŸãã
- ã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ãAnsible ããŒã«ãªã©ã®å°ããªãããã¯ã«åå²ãããŸãã
- Docker ãŸã㯠VM ãªã©ãäœããã®ç°å¢ããããã€ãããŸãã
- ãã®ãã¹ãç°å¢ã«ã¯é©çšãããŸã å€ãã® Ansible ã®åœ¹å²ã
- ãã¹ãŠãæåŸ ã©ããã«æ©èœããããšã確èªããŸã (ãã¹ããå®è¡ããŸã)ã
- OKãNGãã決ããã®ã¯ç§ãã¡ã§ãã
倧ãŸãã«èšãã°ãåäœãã¹ãã®ããã«ã·ã¹ãã ã®åã ã®èŠçŽ ã®ããã©ãŒãã³ã¹ããã§ãã¯ããã®ã§ã¯ãªãããµãŒããŒå šäœãã©ã®ããã«æ§æãããŠãããããã§ãã¯ããŸãã
IaC ãã¹ã: ãšã³ãããŒãšã³ãã®ãã¹ã
ãã©ãããã®é ç¹ã§ã¯ããšã³ãããŒãšã³ãã®ãã¹ããè¿ããããŸãããããã®ãåœç€Ÿã§ã¯ãã€ã³ãã©ã¹ãã©ã¯ãã£ã®å¥åã®ãµãŒããŒãå¥åã®ã¹ã¯ãªããããŸãã¯å¥åã®ããªãã¯ã®ããã©ãŒãã³ã¹ããã§ãã¯ããŸãããå€ãã®ãµãŒããŒãçžäºã«æ¥ç¶ãããŠãããã€ã³ãã©ã¹ãã©ã¯ãã£ãæåŸ ã©ããã«æ©èœããŠããããšã確èªããŸããæ®å¿µãªãããç§ã¯æ¢è£œã®ç®±å ¥ããœãªã¥ãŒã·ã§ã³ãèŠãããšããããŸããããããã次ã®çç±ãèããããŸããå€ãã®å Žåãã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ç¬ç¹ã§ããããã¹ãçšã®ãã¬ãŒã ã¯ãŒã¯ããã³ãã¬ãŒãåããŠäœæããã®ãå°é£ã§ãããã®çµæã誰ããç¬èªã®ãœãªã¥ãŒã·ã§ã³ãäœæããŸããéèŠã¯ãããŸãããçãã¯ãããŸããããããã£ãŠãä»ã®äººã«å¥å šãªèããæŒãä»ãããããã¹ãŠã®ãã®ã¯ç§ãã¡ããããã£ãšåã«çºæããããšããäºå®ã«éŒ»ãåºãããã«äœããããã説æããŸãã
è±ããªæŽå²ãæã€ãããžã§ã¯ããããã¯å€§èŠæš¡ãªçµç¹ã§äœ¿çšãããŠãããããããçãããéæ¥çã«ããã«è§Šããããšãããã§ãããããã®ã¢ããªã±ãŒã·ã§ã³ã¯ãå€ãã®ããŒã¿ããŒã¹ãçµ±åãªã©ããµããŒãããŠããŸããã€ã³ãã©ã¹ãã©ã¯ãã£ãã©ã®ãããªãã®ããç¥ãã«ã¯å€ãã® docker-compose ãã¡ã€ã«ãå¿ èŠã§ãã©ã®ç°å¢ã§ã©ã®ãã¹ããå®è¡ããããç¥ãã«ã¯ Jenkins ãå¿ èŠã§ãã
ãã®èšç»ã¯ãæ çµã¿å
ã«åãŸããŸã§ãããªãé·ãéæ©èœããŸããã
ç 究ã®ã¢ã€ãã¢ã¯ããã«é²ãã§ãopenshift 㧠APB (Ansible Playbook Bundle) ã®ãããªãã®ãçºèŠããŸãããããã«ãããã€ã³ãã©ã¹ãã©ã¯ãã£ãã³ã³ããã«ãããã€ããæ¹æ³ã«é¢ããç¥èãè©°ã蟌ãããšãã§ããŸãããããã®ãã€ã³ãã©ã¹ãã©ã¯ãã£ã®å±éæ¹æ³ã«ã€ããŠã¯ãåçŸå¯èœã§ãã¹ãå¯èœãªç¥èç¹ããããŸãã
ç°çš®ã€ã³ãã©ã¹ãã©ã¯ãã£ã«ééãããŸã§ã¯ãããã¯ãã¹ãŠè¯ãããã«æããŸããããã¹ãã«ã¯ Windows ãå¿ èŠã§ããããã®çµæãäœããã©ãã«ãã©ã®ããã«ãããã€ãããã¹ããããã«ã€ããŠã®ç¥èããžã§ã³ãã³ã¹ã«ãããŸãã
ãŸãšã
ã³ãŒããšããŠã®ã€ã³ãã©ã¹ãã©ã¯ãã£ãšã¯
- ãªããžããªå ã®ã³ãŒãã
- 人ç亀æµã
- ã€ã³ãã©ã¹ãã©ã¯ãã£ã®ãã¹ãã
ãªã³ã¯
è±èªç å人ããã°ããã®ã¯ãã¹ãã¹ã - äºè¡æŒç¿ 2019-04-24
SpbLUG DevopsConf 2019-05-28 ã®ãããª(RU) DINS DevOps EVENING 2019-06-20 ã®ãããª(RU) 300,000 è¡ãè¶ ããã€ã³ãã©ã¹ãã©ã¯ã㣠ã³ãŒãã®äœæããåŠãã æèš &ããã¹ãç ã³ãŒããšããŠã®ã€ã³ãã©ã¹ãã©ã¯ãã£ãç¶ç¶çããªããªãŒ ãã€ãã©ã€ã³ã«çµ±åãã ã€ã³ãã©ã¹ãã©ã¯ãã£ãã³ãŒããšããŠãã¹ããã Ansible ããŒã«ã®å¹æçãªéçºãšä¿å® Ansible 㯠bash ã§ã¯ãããŸãã!
åºæïŒ habr.com