èŠããã«ïŒ
- cfpuppetserver-èªåæ§æã¢ãžã¥ãŒã«Puppet Server + PuppetDB + PostgreSQL + r10k + librarian-puppet
- Puppetã®ç°¡åãªçŽ¹ä»
- æåããã®å±éãæåãã説æããŸã
ããŒããµã€ã¯ã«ïŒ
- ããŒãIïŒãããã¯ãŒã¯ããã³ãããã¯ãŒã¯ãã£ã«ã¿ãŒïŒcfnetwork + cffireholïŒ
- ããŒãIIïŒã¢ã¯ã»ã¹ãšæšæºç°å¢ïŒcfauth + cfsystemïŒ
- ããŒãIIIïŒPuppet ServerïŒcfpuppetserverïŒã®ã€ã³ã¹ããŒã«
- ããŒãIVïŒéäžç®¡çïŒcftotalcontrolïŒ
- ããŒãVïŒããŒã¿ããŒã¹ïŒcfdbïŒ
- ããŒãVIïŒçŸåšã®ãã©ãã¯ãªã¹ããšä¿è·ããããããã³ã°
å°ãæè©ã ãã®èšäºã¯ãµã€ã¯ã«å šäœãéå§ããããã«æããŸãããããã§ããªãã察象èªè ã¯ãªãŒãã³ãœãŒã¹Puppet Labs補åââã®çµéšè±å¯ãªãŠãŒã¶ãŒã§ãããPuppet Forgeã®åã ã®äœçµ±åã¢ãžã¥ãŒã«ã«æºè¶³ããŠããŸããã ãã©ã€ãã©ãªãšãã¬ãŒã ã¯ãŒã¯ãã®å Žåãšåæ§ãçµ±åãœãªã¥ãŒã·ã§ã³ã®äœæè ã®äžç芳ã«åŸãããšã§ãã
Puppetã®ä»çµã¿ã«ã€ããŠå°ã
Puppetã¯ãäœããããŸããã·ã¹ãã ã®æçµç¶æ ã宣èšçã«å®çŸ©ããããã®ç¹å®ã®èšèªã§ãã æ¯èŒã®ããã«ãGNU Makefileã¯éåžžã«é©ããŠããŸããäŸåé¢ä¿ãçŽæ¥èšè¿°ããããšã«å ããŠãæ倧éã«æŽ»çšããããšãå¯èœã§ãã
Puppetã®æœè±¡åã¯æ¬¡ã®ãããªãã®ã§ã ïŒ ãã³ãã¬ãŒãã®æ··ä¹±-ããã°ã©ãã³ã°çšèªã«ã€ããŠç¥ã£ãŠãããã¹ãŠãå¿ããŠãã ããïŒ ïŒã
- ããŒãã¯ãç¹å®ã®ã¿ãŒã²ããã·ã¹ãã ã®æ§æã®éåã§ãã å®éãããã¯ã¯ã©ã¹ã®ç¹æ®ãªã±ãŒã¹ã§ãã
- ã¯ã©ã¹ã¯ãããŒããŸãã¯ä»ã®ã¯ã©ã¹ã®æ§æã«å«ãŸãã宣èšããžãã¯ã®ã»ããã§ãã ã¯ã©ã¹ã«ã¯ã€ã³ã¹ã¿ã³ã¹ãã¡ãœããããããŸããããããžãã¯å ã§å®çŸ©ããããã©ã¡ãŒã¿ãŒãšå€æ°ããããŸãã å®éãããã¯ããããã³ãŒãã®å¹³å¡ãªãã«ãã¢ãããšå€æ°ã®å®å šã«å¹³å¡ãªã¹ã³ãŒãã«ãã£ãŠå¥ã®ããã·ãŒãžã£ãç¶æ¿ã§ããããã·ãŒãžã£ã§ãã
- ã¿ã€ã -ããããããã¯ãã§ã«å€å
žçãªã¯ã©ã¹ã®ããã«èŠããŸã-ããã¯ååãšééããªãæå®ããããã©ã¡ãŒã¿ãŒãæã€ã€ã³ã¹ã¿ã³ã¹ãæã€ããšã«ãªã£ãŠããŸããããã以äžã§ã¯ãããŸããã å
·è±¡åã®å®è£
ã¯ãä»ã®åã®ã€ã³ã¹ã¿ã³ã¹ãäœæ
define
ãä»ããŠPuppetã¹ã¯ãªãããšããŠããŸãã¯ç©ºæ³ã®é£è¡ãåããRubyã®æ¡åŒµãšããŠèšè¿°ã§ããŸãã - ãªãœãŒã¹ïŒãªãœãŒã¹ïŒ -å®éã«ã¯ãããã¯ã¿ã€ãã®ååä»ãã€ã³ã¹ã¿ã³ã¹ã§ãã åãªãœãŒã¹ã®ååã¯ãããŒãïŒãã£ã¬ã¯ããªïŒã®æ§æå ã®ç¹å®ã®ã¿ã€ãå ã§äžæã§ãã
- å€æ° -èŠããã«ããããã¯å®æ°ã§ã... Puppet 4以åã®ã¹ã³ãŒãã§ã¯ãããã«æªåããŠããŸããã ããã§ååã§ããå€éšããå®çŸ©ã®å Žæã䜿çšããã«ã¯ãã¯ã©ã¹ç¶æ¿ã®å Žåãé€ããå®å šä¿®é£Ÿèå¥åãæå®ããå¿ èŠããããŸãã
Puppetã¯ããããã¯ãŒã¯ããã³é¢é£ã€ã³ãã©ã¹ãã©ã¯ãã£ãªãã§ããŒã«ã«å±éã«äœ¿çšã§ããŸãã ããã¯ãã³ã³ããã€ã¡ãŒãžã®äœæã«äœ¿çšã§ããŸãã äžå åããããµãŒããŒãæŸæ£ããããšã䞻匵ããããšããããŸãã
ã€ããªãã®ãŒçã«æ£ããæ¹æ³ã§ã¯ãPuppetã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ãšãŒãžã§ã³ãã§æ§æãããŸããã¿ãŒã²ããã·ã¹ãã äžã®ç¹æš©ãµãŒãã¹ãšããšãŒãžã§ã³ãããã®èŠæ±ã«å¿ããŠå®£èšçãªãªãœãŒã¹ãã£ã¬ã¯ããªã®åœ¢åŒã§è²Žéãªåœä»€ãçºè¡ãããµãŒããŒã§ãã ã»ãã¥ãªãã£ã¯ããã©ã€ããŒãå ¬ééµã€ã³ãã©ã¹ãã©ã¯ãã£ïŒ X.509 ïŒã®ã¬ãã«ã§å®è£ ãããŸãã ç°¡åã«èšãã°ãHTTPSãšåãã¡ã«ããºã ã§ãããç¬èªã®CAãšã¯ã©ã€ã¢ã³ã蚌ææžã®å¿ é æ€èšŒã䜿çšããŸãã
ç°¡ç¥åããã圢åŒã§ã¯ãå±éæé ã¯æ¬¡ã®ããã«ãªããŸãã
- TLSããã³X.509åŠçïŒæ¥ç¶ã®ç¢ºç«ãCRLã®æŽæ°ã蚌ææžã®å¶éã®ç¢ºèªãªã©ïŒ
- ãšãŒãžã§ã³ãã¯ããã£ãã·ã¥ããã³ãã¹ãŠã®ã±ãŒã¹ïŒããæ£ç¢ºã«ã¯ãã¢ãžã¥ãŒã«å ã®ãã¹ãŠã®lib /ãã©ã«ããŒããã«ãããŸãïŒã䜿çšããŠãµãŒããŒãããã¡ã¯ããžã§ãã¬ãŒã¿ãŒãåãåããŸãã ç¬èªã®Rubyã¹ã¯ãªãããè¿œå ããŠãé¢å¿ã®ããæ å ±ãåéããã®ã¯ç°¡åã§ãã
- ãšãŒãžã§ã³ãã¯ãã¿ãŒã²ããã·ã¹ãã ã«é¢ããäºå®ãåéãããµãŒããŒã«éä¿¡ããŸãã
puppet facts
åŒã³åºãããšã§ããã¹ãŠã®ãã¡ã¯ããæåã§ç°¡åã«è¡šç€ºã§ããŸãã ãããã®ãã¡ã¯ãã¯ãã°ããŒãã«å€æ°ãšããŠå©çšå¯èœã§ãã - ãµãŒããŒã¯ãªãœãŒã¹ãã£ã¬ã¯ããªãã³ã³ãã€ã«ãããšãŒãžã§ã³ãã«éä¿¡ããŸãã ãã®äžã«ã¯ãããŸããŸãªæŠå¿µã®ã¬ã€ã€ãŒå šäœããããŸãã
- ãšãŒãžã§ã³ãã¯ãå¿ èŠãªãã®ããã¹ãŠãµãŒããŒãããã«ããã·ã¹ãã ãæå®ããã圢åŒã«ããŸãã åæã«ããšãŒãžã§ã³ãèªäœã¯ãªãœãŒã¹ã®åŠçæ¹æ³ãèªèãããç¹å®ã®ã¿ã€ãã®ãªãœãŒã¹ã®ãããã€ããŒïŒæå³ã®ããå€æã¯ãããã€ããŒã§ã¯ãªããå®æœåœ¢æ ãïŒã®å®è£ ã«äŸåããŸãã äžéšã®ãããã€ããŒã¯æšæºã§ãããPuppetããã±ãŒãžã«å«ãŸããŠããŸãããæ®ãã¯ã¢ãžã¥ãŒã«ããååŸãããŸãã
ãã¹ãŠã®é åã楜ããããã«ã次ã®åœ¢åŒã®è¿œå ã®ãã³ããããŸãã
- ã¢ãžã¥ãŒã«ã¯ã宣èšçãªPuppetã¹ã¯ãªãããPuppetã®Rubyæ¡åŒµæ©èœããã¡ã€ã«ããã¡ã€ã«ãã³ãã¬ãŒããHieraããŒã¿ãªã©ã®ã³ã¬ã¯ã·ã§ã³ã§ãã ããæ£ç¢ºãªçšèªã¯ãããã±ãŒãžãã§ãã
- ç°å¢ -ã¹ã¯ãªãããã¢ãžã¥ãŒã«ãããã³HieraããŒã¿ã®ã³ã¬ã¯ã·ã§ã³ã ã€ã³ãã©ã¹ãã©ã¯ãã£ã®è€éãã«ãããæšæºçãªããŒãåå²ãããããã«æ§æãåé¢ããããšãå¿ ç¶çã«å¿ èŠã«ãªããŸããã åºæ¬çã«ãããã¯ãã€ãããã®é©æ°ãšå¹³å¡ãªã¢ã¯ã»ã¹å¶åŸ¡ã«å¿ èŠã§ãïŒãã¹ãŠã®ç®¡çè ãITã€ã³ãã©ã¹ãã©ã¯ãã£ã®ãã¹ãŠã®ããŒãã«ã¢ã¯ã»ã¹ã§ããããã§ã¯ãªãå ŽåïŒã
- Hieraã¯éå±€åããŒã¿ããŒã¹ã§ãã ãã®å®åŒåã¯éåžžã«æãããšããããŸãã ããããããããåŸã®ããŒãžã§ã³ã®ããã¥ã¡ã³ãã§å€æŽãããçç±ã§ãã å®éãããã¯YAMLãŸãã¯JSONãã¡ã€ã«ããèšå®ãæœåºããããã®éåžžã«ã·ã³ãã«ã§äŸ¿å©ãªã¡ã«ããºã ã§ãã éå±€ãšã¯ãå€ãã®æ§æãã¡ã€ã«ã®èªã¿åãé åºãèšå®ããæ©èœã§ãã ãããã®ãã¡ã€ã«ã®éå±€/åªå
é äœã
- é¢æ°åŒã³åºãã§ããŒã¿ããã«ããããšã«å ããŠãPuppetã¯ããã©ã«ãã§ã¯ã©ã¹ãã©ã¡ãŒã¿ãŒããã«ããŸããããã¯äž»èŠãªãã€ã©ã€ãã§ãã
- ãã¡ãããHieraã¯ãã¡ã¯ãã®è£éãããã«ã¯ç¹å¥ãªé¢æ°ã®åŒã³åºãããµããŒãããŠããŸãã
- Puppet 4.3ã¯åã³åãæ©èœãå®è£ ããŠãã°ããŒãã«ããŒã¿ããŒã¹ã ãã§ãªããç°å¢ãšã¢ãžã¥ãŒã«ã®ããŒã«ã«ããŒã¿ããŒã¹ããµããŒãããŸããããäœæè ã¯ãã§ã«å®è£ ïŒ PUP-5983 ã PUP-5952ããã³PUP-5899 ïŒã§ããã€ãã®åé¡ãçºèŠããŸããPuppet Labsã«ãã£ãŠå³åº§ã«ä¿®æ£ãããŸããã
- éå±€å
ã®ãã¹ãŠã®ãã¡ã€ã«ããå€ãååŸããããã®ããã€ãã®æŠç¥ããµããŒããããŠããŸãã
- first-æåã®åªå 床ã®å€ãè¿ãããŸã
-
unique
-ãã¹ãŠã®å€ã1次å é åã«åéããéè€ãåé€ããŸã - hash-èŠã€ãã£ããã¹ãŠã®YAMLããã·ã¥ãçµåããŸãã éè€ããŒã¯åªå 床ã«ãã£ãŠéžæãããŸãã
-
deep
-åºæ¬çã«ããã·ã¥ã®ååž°ããŒãžã§ã³
- çŸããã¯ã
lookup()
é¢æ°ãåŒã³åºããšãã®ããã«ãµã³ããªã³ã°æŠç¥ãèšå®ã§ããããšã§ãã cfnetworkã¢ãžã¥ãŒã«ã§ã¢ã¯ãã£ãã«äœ¿çšãããç¹å¥ãªããŒlookup_optionsãä»ããéå±€ãã¡ã€ã«å ã
- PuppetDBã¯åºæ¬çã«ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ïŒPostgreSQLïŒãåãå·»ãããžãã¹ããžãã¯ã®ã¬ã€ã€ãŒã§ããããã¡ã¯ãã¬ããŒããšå®äºããå±éãä¿åããç¹å¥ãªæ©èœã䜿çšããŠä»ã®ããŒããŸãã¯éžæã®ãã£ã¬ã¯ããªã«åŸã§ã€ã³ããŒãããããã®ãªãœãŒã¹ããšã¯ã¹ããŒãã§ããŸãã Puppetããã·ã¥ããŒã圢åŒã®Webããºã«ããããŸãã
- X.509 PKIã¯æ¢ã«è¿°ã¹ã蚌ææžã€ã³ãã©ã¹ãã©ã¯ãã£ã§ãããå¥ã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã管çããå¿ èŠãªãä»ã®ãµãŒãã¹ã«äœ¿çšããã®ã«éåžžã«äŸ¿å©ã§ãã
- MCollectiveã¯ããµãŒããŒãã¡ãŒã ã§ã®ã¿ã¹ã¯ã®ã€ãã³ãããªã¬ãŒã«åœ¹ç«ã€ãã®ã®ããã§ãããäœæè ã¯ç¹å®ã®ãœãªã¥ãŒã·ã§ã³ã®ã»ãã¥ãªãã£ã«äžå®ã®äžä¿¡æãæã£ãŠããŸãã
- Puppet Forgeã¯ãã¢ãžã¥ãŒã«ãå ¬éããã³ããŠã³ããŒãããããã®ãªãŒãã³ãã©ãããã©ãŒã ã§ãã
- ã·ã¹ã³ã®æ©åšãªã©ã®å€éšããã€ã¹ã®å¶åŸ¡ããã¢ã¡ã¿ã«ãžã®å±éãšãã圢ã®ãã®ä»ã®æ©èœããããŸãããããã¯å¥ã®è©±ã§ã
ã»ãã¥ãªãã£ãšå¯çšæ§ã«é¢ãã泚æ
Puppet Serverã¯ITã€ã³ãã©ã¹ãã©ã¯ãã£å šäœã®è匱æ§ã«ãªãã€ã€ããããšãç解ããå¿ èŠããããŸãã ãã¹ãŠã®ã·ã¹ãã ã®æçµæ§æãå®çŸ©ããŸãã ç¹å¥ãªå Žåã«ã¯ãåé¢ãè¡ãã®ãçã«ããªã£ãŠããŸããã¢ã¯ã»ã¹ãšæåæŽæ°ãéåžžã«å¶éãããŠããéèŠãªã€ã³ãã©ã¹ãã©ã¯ãã£èŠçŽ çšã®å¥åã®ãµãŒããŒãšããã®ä»ãã¹ãŠã®ãµãŒããŒã§ãã
Availability Puppet Serverã¯ãã€ã³ãã©ã¹ãã©ã¯ãã£å šäœã管çããæ©èœãå®çŸ©ããŸãã ç¬èªã®æ©èœãããä¿¡é Œæ§ãé«ããè¿ éã«åŸ©å ããããµãŒãããŒãã£ã¯ã©ãŠãã®ä»®æ³ãã·ã³ã§Puppet Serverããã¹ãããããšã¯çã«ããªã£ãŠããŸãã ãŸãã¯ãè€æ°ã®ãµãŒããŒãã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã
ãããã®å Žåã§ããã¬ãžã§ãããåããPuppet Serverããããã€ãããã·ã¹ãã ã«ä»ã®ãµãŒãã¹ãã€ã³ã¹ããŒã«ããªãã§ãã ããã ä»®æ³åãšã³ã³ããåã圹ç«ã¡ãŸãã
ãã«ããã¹ã¿ãŒïŒè€æ°ã®ã¹ã¿ã³ãã¢ãã³Puppet ServerïŒ
- ãã®å ŽåãCAïŒèªèšŒå±ïŒãšããŠæ©èœãããµãŒããŒã¯1ã€ã ãã§ãããã®ãµãŒããŒãå©çšã§ããªãããšã¯ãæ°ããããŒããè¿œå ã§ããªãããšãæå³ããŸãã
- Puppetã¯ãçµã¿èŸŒã¿ãé©åã§ãªãå ŽåããµãŒãããŒãã£ã®ã€ã³ãã©ã¹ãã©ã¯ãã£X.509ã®äœ¿çšãèš±å¯ããŸãã
- æ§æå šäœïŒç°å¢ïŒãããŒãžã§ã³ç®¡çã·ã¹ãã ã«ä¿åããåãµãŒããŒã«åæã«å±éããå¿ èŠããããŸãã
- å¯äžå ±éããŠããã®ã¯PostgreSQLããŒã¿ããŒã¹ã§ããPostgreSQLããŒã¿ããŒã¹ã®é«å¯çšæ§ã¯ãã®èšäºã®ç¯å²å€ã§ãã
- cfpuppetserverã¢ãžã¥ãŒã«ã¯ããã©ã€ããªïŒCAã䜿çšïŒããã³ã»ã«ã³ããªãµãŒããŒãšããŠã®ã€ã³ã¹ããŒã«ããµããŒãããŸãã
éèŠãªç¹ã¯å€ãããŒãžã§ã³ããå€æŽãããŸãã
補é å ã«ã¯è©³çŽ°ãªèª¬æããããŸãã
- ãã¹ãŠã®ãµãŒãã¹ãJVMãJRubyãããã³Jettyã«ç§»è¡ããŸããã çµ±åã®æãããªå©ç¹ã®ããã«ãã¡ã¢ãªæ¶è²»ã®é¢ã§ãæ¬ ç¹ããããŸãã
- ã³ã¬ã¯ã·ã§ã³ãåŠçããããã®ã©ã ãé¢æ°ãè¿œå ãããŸãã-Rubyã§æŸèæãèŠãããcreate_resourcesïŒïŒã§å€æãããããå¿ èŠããªããªããŸããã
- EPPãã³ãã¬ãŒãåŠçããŒã«ãç»å ŽããŸãã-åºæ¬çã«åãERBã§ãããRubyã®ä»£ããã«Puppet DSLã䜿çšããŠã
- æ§æãã¡ã€ã«ã®ããã©ã«ãã®ãã£ã¬ã¯ããªæ§é ãå€§å¹ ã«å€æŽãããŸãã
- ç°å¢ããã³ã¢ãžã¥ãŒã«ã®ããŒã¿ãããã€ããŒã®ãµããŒããç»å ŽããŸããïŒããã¯ã¯å¿ èŠãªããªããŸããïŒã
- ã°ããŒãã«Hieraã®åœ¹å²ãæžããã é¢é£ããæ°ãã
puppet lookup
ã³ãã³ãã
èšçœ®
ãã®ããã»ã¹ã¯éåžžã«åå§çã§ãããç¹å®ã®äžé£ã®æé ãå¿ èŠã§ãã ãããæäœæ¥ã§è¡ãããšã¯æ©ç¥ãããªäœæ¥ã§ãããããèè ã¯æªãããšãã€ãŸããã€ã³ã¿ãŒãããããç解ã§ããªãã¹ã¯ãªãããããŠã³ããŒãããèªåã®ã·ã¹ãã ã§rootãšããŠå®è¡ããããšãæããŸãã
ãµãŒããŒã®3ã€ã®äž»èŠã³ã³ããŒãã³ãã¯ãPuppet ServerèªäœãPuppetDBãããã³PostgreSQLã§ãã ãããã¯ãã¹ãŠ1ã€ã®ããŒãã«è©°ã蟌ãããšãã2ã€ãŸãã¯3ã€ã®ã·ã¹ãã ã«åå²ããããšãã§ããŸãã Puppet ServerãšPuppet DBã¯äœåºŠãèµ·åã§ããŸãããPostgeSQLã¯åäžé害ç¹ã§ãã ãã©ã€ããªããã³ã»ã«ã³ããªãµãŒããŒã®å Žåã®äŸ¿å©ãªã¢ãããŒãã¯ãPuppetDBèªäœã§ãã©ã€ããªããã³èªã¿åãå°çšããŒã¿ããŒã¹ããŒããšããŠãµããŒããããŠãããã¹ã¿ãŒ+èªã¿åãå°çšã¹ã¬ãŒãã§ããããã®æ§æã®èªååã«ã¯æéããããããããŸã è¡ãããŠããŸããcfpuppetserver
ã¢ãžã¥ãŒã«ã«å«ãŸããŠcfpuppetserver
ãŸãã
æ§æèªäœã¯ãPuppet Serverãšãšãã«ãã¡ã€ã«ã·ã¹ãã ã«ç°¡åã«ä¿åã§ããŸãããæŠéWebãµãŒããŒã§ã¹ã¯ãªãããèšè¿°ãããããªãã®ã§ãã æãé©åãªãœãªã¥ãŒã·ã§ã³ã¯gitãªããžããªã§ãã r10kãŠãŒãã£ãªãã£ã¯ããªããžããªã®ãã¹ãŠã®ãã©ã³ããæœåºããããããåå¥ã®ç°å¢ãšããŠPuppet Serverã«ãããã€ã§ããŸãã r10k
äŸåé¢ä¿ããã«ããã®r10k
ããªãèŠæãªã®ã§ã librarian-puppetãäžçªäžã«äœ¿çšãããŸãã ã¡ã€ã³ã®æšæºPuppetç°å¢ããå®çšŒåãã§ããããšã¯ããã«æ³šç®ã«å€ããŸãã ãããã£ãŠãæ§æãªããžããªãŒã§ã¯ããmasterãã§ã¯ãªããproductionããšãããã©ã³ãã䜿çšããå¿
èŠããããŸãã
ã·ã¹ãã èŠä»¶
補é æ¥è
ã«ãã£ãŠèšè¿°ãããéã cfpuppetserver
ã¢ãžã¥ãŒã«ã¯cfpuppetserver
ãDebian Jessie +ããã³Ubuntu Trusty +ã®ã¿ããµããŒãããŠããŸãã
Gitã®æ§æ
r10kèªäœã«ã€ããŠã¯ããªããžããªã®é
眮ã¯éèŠã§ã¯ãããŸãã-äž»ãªãã®ã¯ãã®å¯çšæ§ã§ãã ããšãã°ããã¹ãã®ç®çã§ããªããžããªãfile://
çµç±ã®ã¢ã¯ã»ã¹ã§åãã·ã¹ãã ã§ãã¹ãã§ãfile://
ã è¯ãåºçºç¹ã¯ã codingfuture / puppet-exampleenvã®æ§æäŸã§ãã
- ãªããžããªã®
git clone https://github.com/codingfuture/puppet-exampleenv my-puppet-conf && cd my-puppet-conf
ïŒgit clone https://github.com/codingfuture/puppet-exampleenv my-puppet-conf && cd my-puppet-conf
- ã³ã¡ã³ãå
ã®ãã³ãã䜿çšããŠãäžè¬çãªç®¡çè
ã¢ã¯ã»ã¹èšå®ãèšå®ããŸãã
-
$EDITOR data/common.yaml
-
- ããŒãæ§æãäœæããŸãã
-
$MY_DOMAIN
ã«ãŒããã¡ã€ã³åïŒexample.orgãªã©ïŒ -
$HOST_NAME
ãã¡ã€ã³ã®ãªãã¯ã©ã€ã¢ã³ãããŒãã®åå -
mkdir data/$MY_DOMAIN
-
cp data/example.com/puppet.yaml data/${MY_DOMAIN}/puppet.yaml
-
$EDITOR nano -w data/${MY_DOMAIN}/puppet.yaml
ã³ã¡ã³ãã®ãã³ãã«åŸã£ãŠPuppet Serverã§ããŒããã»ããã¢ãããã -
cp data/example.com/host.yaml data/${MY_DOMAIN}/${HOST_NAME}.yaml
-
$EDITOR nano -w data/${MY_DOMAIN}/${HOST_NAME}.yaml
ã³ã¡ã³ãã®ããã³ããã«åºã¥ããã«ã¹ã¿ã ããŒãã®ã»ããã¢ãã
-
- ç¬èªã®GitãµãŒããŒã§é£ã¹ãããrsyncãŸãã¯scpãä»ããŠPuppet Serverã䜿çšããŠãã¹ãäžã§ããŒã«ã«ã«ã¢ã¯ã»ã¹ã§ããããã«ããŸãã ããŒã«ã«ãªããžããªã¯ãGitãµãŒããŒãPuppetèªäœãããããã€ããããŸã§ã®äžéã¹ããããšããŠäŸ¿å©ã§ãã ããæå³ã§ã¯ãããã€ãã®ã¹ãããã§ã³ã³ãã€ã©ãã³ã³ãã€ã«ããããšã«äŒŒãŠããŸãã
ã¯ãªãŒã³ãªã·ã¹ãã ã«ãŒãããé 眮ããŸã
cfpuppetserver
ã¢ãžã¥ãŒã«ã䜿çšcfpuppetserver
ãšãPuppetèªäœã䜿çšããŠãã¹ãŠãã€ã³ã¹ããŒã«ã§ãcfpuppetserver
ããåæã€ã³ã¹ããŒã«ã§ã¯ãåºæ¬æäœãBashã¹ã¯ãªããã«ãã£ãŠè€è£œãããŸãã
察象ã·ã¹ãã ïŒ
- ã€ã³ã¹ããŒã«ã¹ã¯ãªãããããŠã³ããŒãããŸãïŒ
wget https://raw.githubusercontent.com/codingfuture/puppet-cfpuppetserver/master/setup_puppetserver.sh
- ã¹ã¯ãªããã調ã¹ãŠçãçãã²ãããŸãïŒ
less setup_puppetserver.sh
- å®è¡ïŒ
bash setup_puppetserver.sh <repo_uri> puppet.${MY_DOMAIN}
- ãªã¢ãŒããªããžããªã®äŸïŒ
bash setup_puppetserver.sh ssh://git@git.example.com/puppet-conf
- ããŒã«ã«ã®äŸïŒ
bash setup_puppetserver.sh file:///root/puppetconf/
- ãªã¢ãŒããªããžããªã®äŸïŒ
- ã·ã¹ãã ãã©ã®ããã«èšãã¿ããã¹ãŠãéåžžã«è¿ éã«ã€ã³ã¹ããŒã«ããªããã調ã¹ãŸãã
- ãªã¢ãŒããªããžããªã®å ŽåïŒ
- ã«ãŒãSSHããŒãäœæããŸãïŒ
ssh-keygen -t rsa -b 2048
- ãªã¢ãŒãGitãµãŒããŒã«å
¬éããŒ
/root/.ssh/id_rsa.pub
ãç»é²ããŸã... - ...ãããŠã次ã®ã³ãã³ãã§Gitããã¯ãæ§æããŸã
/usr/bin/ssh -T deploypuppet@puppet.${MY_DOMAIN} ./puppetdeploy.sh
- ã«ãŒãSSHããŒãäœæããŸãïŒ
- æ§æãããã€ã¡ã³ããæåã§éå§ããŸãïŒ
/etc/puppetlabs/deploy.sh
- ãµãŒããŒèªäœã§ã©ã®ããã«æ©èœããããè©ŠããŸãïŒ
/opt/puppetlabs/bin/puppet agent --test
- ãããã¯ãŒã¯èšå®ããããã¯ãŒã¯ãã£ã«ã¿ãŒãSSHã¢ã¯ã»ã¹ã確èªãã
管ç察象ããŒããè¿œå ãã
- Puppet Serverã®ãã«ããŒã ã¯ã管ç察象ãã¹ãäžã®DNSãä»ããŠã¢ã¯ã»ã¹å¯èœã§ãããã/ etc / hostsã«ãæ¥ç¶ããããŠããå¿
èŠããããŸãã
- äŸïŒ
echo "128.1.1.1 puppet.example.com" >> /etc/hosts
- äŸïŒ
- Puppet Serverã®ããããŒãã§ã次ã®ã¹ã¯ãªãã
/opt/codingfuture/bin/cf_gen_puppet_client_init ${HOST_NAME}.${MY_DOMAIN}
ãŸãã - çµæå šäœãã³ããŒããŠãã¿ãŒã²ããã·ã¹ãã ã®ã³ãã³ãã©ã€ã³ã«è²Œãä»ããŸãã
- å®è¡ã®å®äºãåŸ
ã£ãŠã
/opt/puppetlabs/bin/puppet agent --test
ãŸãã æåã®èµ·åæã«ã蚌ææžçœ²åèŠæ±ãçæãããŸãã - Puppet Serverãµã€ãã«ã¢ã¯ã»ã¹ããŠã蚌ææžã«çœ²åããŸãã
-
puppet cert list
æãåå·çãªèšŒææžã®çœ²åãæ€èšŒããŸãã -
puppet cert sign ${HOST_NAME}.${MY_DOMAIN}
-å®éã«ã¯ã蚌ææžã«çœ²åããŸãã
-
- 管ç察象ããŒãã«æ»ãã/ opt / puppetlabs / bin / puppet agent --test`ãå床å®è¡ããŸãã ããã«ãããå±éæé ã匷å¶çã«å®è¡ãããŸãã
- Puppet Agentãä»ããŠå±éãå®äºããã®ãåŸ ã£ãŠããŸãã
- ããã§ãæå°éã®Puppetã€ã³ãã©ã¹ãã©ã¯ãã£ãæºåã§ããŸããïŒ
bash <<EOT #!/bin/bash http_proxy= if test "\$(id -un)" != 'root'; then echo 'This script must run as root' exit 1 fi if test ! -z ""; then echo -n >/etc/cflocation fi if test ! -z ""; then echo -n >/etc/cflocationpool fi if test ! -z "\$http_proxy"; then export http_proxy export https_proxy="\$http_proxy" export HTTP_PROXY="\$http_proxy" export HTTPS_PROXY="\$http_proxy" fi echo host.example.com > /etc/hostname hostname host.example.com if ! which lsb-release | read; then apt-get install lsb-release fi codename=\$(lsb_release -cs) if test -z "\$codename"; then echo "Failed to detect correct codename" exit 1 fi wget https://apt.puppetlabs.com/puppetlabs-release-pc1-\${codename}.deb dpkg -i puppetlabs-release-pc1-\${codename}.deb mkdir -p /etc/puppetlabs/puppet cat > /etc/puppetlabs/puppet/puppet.conf <<EOF [main] certname = host.example.com server = puppet.example.com ca_server = puppet.example.com environment = production EOF apt-get update && apt-get install puppet-agent while ! /opt/puppetlabs/bin/puppet agent --test --wairforcert 120; do echo "Please go to puppetserver and exec the following command when we wait for key" echo "> puppet cert sign host.example.com" echo "Use CTRL+C to stop cycle, if fails due to different reasons" sleep 5 done EOT
ã¢ãžã¥ãŒã«ã®èª¬æ
åæã€ã³ã¹ããŒã«ã¹ã¯ãªããã®bashãã©ã¡ãŒã¿ã®å®å šãªãªã¹ã
~# ./setup_puppetserver.sh Usage: ./setup_puppetserver.sh <r10k_repo_url> [<certname=hostname> [<cflocation> [<cflocationpool> [<http_proxy>] ] ] ]
-
r10k_repo_url
-GitãªããžããªURI -
certname
å®å šä¿®é£Ÿãã¡ã€ã³å -
cflocation
åæåcf_location -
cflocationpool
åæåcf_location_pool -
http_proxy
-HTTPããã³HTTPSèŠæ±ã®ãããã·ãµãŒããŒ
Puppetã¯ã©ã€ã¢ã³ãåæåã¹ã¯ãªããã®Bashãã©ã¡ãŒã¿ãŒã®å®å šãªãªã¹ã
~# /opt/codingfuture/bin/cf_gen_puppet_client_init Usage: cf_gen_puppet_client_init <certname> [<cflocation> [<cflocationpool> [<http_proxy>]]]
ãã©ã¡ãŒã¿ãŒã®å€ã¯ãåã®ã¹ã¯ãªãããšåãã§ãã
ã¯ã©ã¹cfpuppetserver
-
deployuser = 'deploypuppet'
æ§ææŽæ°ã®èªåå±éçšã®ãŠãŒã¶ãŒå -
deployuser_auth_keys = undef
$ deployuserã®ããŒã®ãªã¹ã -
repo_url = undef
ãªããžããªURIïŒäŸïŒsshïŒ// user @ host / repoãŸãã¯fileïŒ/// some / pathïŒ -
puppetserver = true
ãã®ããŒãã«Puppet Serverã³ã³ããŒãã³ããã€ã³ã¹ããŒã«ãããã©ãã -
puppetdb = true
true-ãã®ããŒãã«PuppetDBã³ã³ããŒãã³ããã€ã³ã¹ããŒã«ãããã©ãã -
puppetdb_port = 8081
-PuppetDBã®ããŒã -
setup_postgresql = true
-PostgreSQLã³ã³ããŒãã³ãããã®ããŒãã«ã€ã³ã¹ããŒã«ãããã©ããïŒPuppetDBã€ã³ã¹ããŒã«ãæå¹ãªå Žåã®ã¿ïŒ -
service_face = 'any'
cfnetwork::iface
-cfnetwork::iface
çä¿¡æ¥ç¶ãåãå ¥ããããã®cfnetwork::iface
ãªãœãŒã¹å -
puppetserver_mem = auto
-Puppet Serverã®äžã®RAMïŒã¡ã¬ãã€ãåäœïŒæå°192MBïŒïŒ -
puppetdb_mem = auto
-puppetdb_mem = auto
RAMïŒã¡ã¬ãã€ãïŒïŒæå°192MBïŒ -
postgresql_mem = auto
-PostgreSQLã®RAMã®ã¡ã¬ãã€ãïŒæå°128MBïŒ
ã¯ã©ã¹cfpuppetserver::puppetdb
-
postgresql_host = 'localhost'
ããŒã¿ããŒã¹ã¢ãã¬ã¹ -
postgresql_listen = $postgresql_host
å€ã¯listen_addresses
PostgreSQLãã£ã¬ã¯ãã£ãã«çŽæ¥éãããŸã -
postgresql_port = 5432
ããŒã¿ããŒã¹ããŒã -
postgresql_user = 'puppetdb'
ããŒã¿ããŒã¹å ã®PuppetDBãŠãŒã¶ãŒ -
postgresql_pass = 'puppetdb'
ããŒã¿ããŒã¹ã®PuppetDBãŠãŒã¶ãŒãã¹ã¯ãŒã -
postgresql_ssl = false
-Puppet PKI蚌ææžã«åºã¥ããŠæ¥ç¶ã®æå·åãæå¹ã«ããŸã
ã¯ã©ã¹cfpuppetserver::puppetserver
-
autosign = false
-DMZãé€ããæŠéç°å¢ã§ã¯äœ¿çšããªãã§ãã ããã ãã¹ãèªååå°çšã«ååšããŸãã -
global_hiera_config = 'cfpuppetserver/hiera.yaml'
-global_hiera_config = 'cfpuppetserver/hiera.yaml'
ããã©ã«ãã®Hieraèšå®ãã¡ã€ã«ãžã®ãã¹ïŒæåã®ã³ã³ããŒãã³ãã¯ã¢ãžã¥ãŒã«åãæ®ãã¯ã¢ãžã¥ãŒã«å ã®files/
ãã©ã«ããŒã®äžã®ãã¹ïŒ
UPD 2016-03-12
ã¯ã©ã€ã¢ã³ãåæåçæã¹ã¯ãªããã®ååãæŽæ°ïŒcf_gen_puppet_client_initïŒã