èŠããã«ïŒ
- cfpuppetserver-èªåæ§æã¢ãžã¥ãŒã«Puppet Server + PuppetDB + PostgreSQL + r10k + librarian-puppet
- Puppetã®ç°¡åãªç޹ä»
- æåããã®å±éãæåãã説æããŸã
ããŒããµã€ã¯ã«ïŒ
å°ãæè©ã ãã®èšäºã¯ãµã€ã¯ã«å
šäœãéå§ããããã«æããŸãããããã§ããªãã察象èªè
ã¯ãªãŒãã³ãœãŒã¹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
- ã³ã¡ã³ãå
ã®ãã³ãã䜿çšããŠãäžè¬çãªç®¡çè
ã¢ã¯ã»ã¹èšå®ãèšå®ããŸãã
- ããŒãæ§æãäœæããŸãã
$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
- æ§æãããã€ã¡ã³ããæåã§éå§ããŸãïŒ
/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ã€ã³ãã©ã¹ãã©ã¯ãã£ãæºåã§ããŸããïŒ
åºåäŸ/ opt / codingfuture / bin / cf_gen_puppet_client_init ã¢ãžã¥ãŒã«ã®èª¬æ
åæã€ã³ã¹ããŒã«ã¹ã¯ãªããã®bashãã©ã¡ãŒã¿ã®å®å
šãªãªã¹ã
~# ./setup_puppetserver.sh Usage: ./setup_puppetserver.sh <r10k_repo_url> [<certname=hostname> [<cflocation> [<cflocationpool> [<http_proxy>] ] ] ]
r10k_repo_url
-GitãªããžããªURIcertname
å®å
šä¿®é£Ÿãã¡ã€ã³åcflocation
åæåcf_locationcflocationpool
åæåcf_location_poolhttp_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ïŒã