Ò»¡¢Ä£°åµÄÓ¦ÓÃ
µ½Ä¿Ç°ÎªÖ¹£¬×ÊÔ´É걨¡¢¶¨ÒåÀà¡¢ÉùÃ÷ÀàµÈËùÓй¦Äܶ¼Ö»ÄÜÒ»¸ömanifestÎļþÖÐʵÏÖ£¬µ«ÕâÈ´·ÇÓÐЧµÄ»ùÓÚpuppet¹ÜÀíIT×ÊÔ´¼Ü¹¹µÄ·½Ê½¡£Êµ¼ùÖУ¬Ò»°ãÐèÒª°ÑmanifestÎļþ·Ö½â³ÉÒ×ÓÚÀí½âµÄ½á¹¹£¬ÀýÈ罫ÀàÎļþ¡¢ÅäÖÃÎļþÉõÖÁ°üÀ¨ºóÃæ½²Ìáµ½µÄÄ£°åÎļþµÈ·ÖÀà´æ·Å£¬²¢ÇÒͨ¹ýijÖÖ»úÖÆÔÚ±ØÒªÊ±½«ËûÃÇÕûºÏÆðÀ´¡£ÕâÖÖ»úÖÆ¼´³ÉΪ¡°Ä£°å¡±£¬ËüÓÐÖúÓڽṹ»¯¡¢²ã´Î»¯µÄ·½Ê½Ê¹ÓÃpuppet£¬¶øpuppetÔò»ùÓÚ¡°Ä£¿é×Ô¶¯×°ÔØÆ÷¡±Íê³ÉÄ£¿é×°ÔØ¡£
´ÓÁíÒ»¸ö½Ç¶ÈÀ´Ëµ£¬Ä£°åʵ¼ÊÉϾÍÊÇÒ»¸ö°´Ô¼¶¨µÄ¡¢Ô¤¶¨ÒåµÄ»ú¹¹´æ·ÅÁ˶à¸öÎļþ»ò×ÓĿ¼µÄĿ¼£¬Ä¿Â¼ÀïµÄÕâЩÎļþ»ò×ÓĿ¼±ØÐë×ñÑÆäÃüÃû¹æ·¶¡£puppet»á°´ÕÕÕâÖֹ淶ÔÚÌØ¶¨Î»ÖòéÕÒËùÐèµÄÄ£¿éÎļþ£¬²»¹ý£¬ÕâÐ©ÌØ¶¨Ä¿Â¼Ò³¿ÉÒÔͨ¹ýpuppetµÄÅäÖòÎÊýmodulepath¶¨Òå
Ö»ÒªÔÚijģ¿éÖж¨ÓÚÁËÒ»¸öÀ࣬¾Í¿ÉÒÔÔÚÈκÎmanifestÎļþÖÐʹÓÃËü£¬puppet»á×Ô¶¯È¥²éÕÒ²¢×°Ôذüº¬ÁËÕâ¸öÀàµÄ¶¨ÒåµÄmanifestÎļþÈÎÒâʹÓÃËüÃÇ¡£ÓÚÊÇ£¬»ùÓÚÄ£¿é»úÖÆµÄpuppetµÄÖ÷manifestÎļþ¾Í¿ÉÒÔ±äµÃºÜС£¬Ò²¸üÒ×¶®²¢ÄÜ»ùÓÚ²ßÂÔ½øÐж¨ÖÆ
Ä£¿éĿ¼µÄ½á¹¹
ÔÚpuppetÖУ¬Ä£¿é±¾ÉíÓÃÒ»¸öĿ¼À´±íʾ£¬ÆäÐèÒª´æ·ÅÓÚpuppetµÄmodulepath²ÎÊýËù¶¨ÒåµÄĿ¼ÖУ¬Èç/etc/puppet/modules¡£Ä£¿éĿ¼Ãû³Æ±ØÐëÓëÄ£¿éÃû³ÆÏàͬ£¬ÐèÒª×ñÑÌØ¶¨µÄ×éÖ¯½á¹¹
1.MODULE NAME
2.manifests
3.init.pp
4.files
5.templates
6.lib
7.tests
8.spec
MODULE NAME£ºÄ£¿éÃû³Æ£¬Ò²¼´Ä£¿éĿ¼Ãû³Æ£ºÄ£¿éÖ»ÄÜÒÔСд×Öĸ¿ªÍ·£¬¿ÉÒÔ°üº¬Ð¡Ð´×Öĸ¡¢Êý×ÖºÍÏ»®Ïߣ¬µ«²»ÄÜʹÓá°main¡±ºÍ¡°settings¡±×÷Ϊģ¿éÃû
manifestsĿ¼£º°üº¬µ±Ç°Ä£¿éµÄËùÓÐmanifestÎļþ£ºÃ¿¸ömanifestÎļþ°üº¬ÁËÒ»¸öÀà»òÒ»¸ö¶¨ÒåµÄÀàÐÍ£¬´ËÎļþ·ÃÎÊ·¾¶¸ñʽΪ¡°Modulename::[SubDirectoryName::]ManifestFileName¡±
init.pp:Ö»Äܰüº¬Ò»¸öµ¥¶ÀµÄÀඨÒ壬ÇÒÀàµÄÃû³Æ±ØÐëÓëÄ£¿éÃû³ÆÏàͬ
filesĿ¼£º°üº¬ÁËÒ»×龲̬µÄÎļþ£¬ÕâЩÎļþ¿É±»Õ¾µãÏÂÔØÊ¹ÓãºÃ¿¸öÎļþµÄ·ÃÎÊ·¾¶¶¼×ñÑpuppet:///modules/MODELE_NAME/filename·¾¶¸ñʽ
libĿ¼£º²å¼þĿ¼£¬³£ÓÃÓÚ×Ô¶¨Òåfact¼°×Ô¶¨Òå×ÊÔ´ÀàÐ͵È
templatesĿ¼£º´æ´¢ÁËmanifestÓõ½µÄÄ£°åÎļþ£¬Æä·ÃÎÊ·¾¶×ñÑtemplate£¨¡®ModulesName/TemplateName¡¯£©¸ñʽ£¬ºó׺ÃûÓ¦¸ÃΪ.erb,¹ØÓÚÄ£°åÎļþÏêϸÐÅÏ¢£¬ºóÎÄÓнéÉÜ
testsĿ¼£ºµ±Ç°Ä£°åµÄʹÓðïÖú»òʹÓ÷¶ÀýÎļþ£¬ÀàËÆÈçºÎÉùÃ÷µ±Ç°Ä£°åÖеÄÀ༰¶¨ÒåµÄÀàÐ͵È
specĿ¼£ºÀàËÆÓÚtestsĿ¼µÄ¹¦ÄÜ£¬Ö»²»¹ý£¬ÆäÊÇΪlibĿ¼¶¨ÒåµÄ¸÷²å¼þÌṩʹÓ÷¶ÀýµÄ
[root@node1 ~]# mkdir -p /etc/puppet/modules/nginx/{manifests,files,templates,lib} [root@node1 ~]# cd /etc/puppet/modules/nginx/ [root@node1 nginx]# cd manifests/ [root@node1 manifests]# vi init.pp class nginx { package {'nginx': ensure => installed, name => nginx, } } [root@node1 manifests]# vi web.pp class nginx::web inherits nginx { service {'nginx': ensure => true, enable => true, name => nginx, require => Package['nginx'], } file{'web.conf': ensure =>file, source => "puppet:///modules/nginx/web.conf", path => '/etc/nginx/nginx.conf', notify => Service['nginx'], require => Package['nginx'] } } [root@node1 manifests]# puppet apply -e 'include nginx::web' notice: /Stage[main]/Nginx/Package[nginx]/ensure: created notice: /Stage[main]/Nginx::Web/File[web.conf]/
content: content changed '{md5}d9dfc198c249bb4ac341198a752b9458' to '{md5}33d2119b71f717ef4b981e9364530a39' notice: /Stage[main]/Nginx::Web/Service[nginx]/ensure: ensure changed 'stopped' to 'running' notice: Finished catalog run in 8.07 seconds [root@node1 manifests]# grep work /etc/nginx/nginx.conf worker_processes 2; |
×¼±¸nginxÅäÖÃÎļþ£¬²¢ÓÐÒâÐÞ¸ÄnginxµÄÅäÖÃÎļþ
[root@node1 ~]# cp /etc/nginx/nginx.conf /etc/puppet/modules/nginx/files/web.conf [root@node1 ~]# grep worker_processes /etc/puppet/modules/nginx/files/web.conf worker_processes 2; |
¿ÉÒÔ¿´µ½ÎÒÃǵÄÅäÖÃÖ´Ðгɹ¦
ʹÓÃÄ£°åÅäÖÃÎļþ
Óï·¨£º<%= Ruby Expression %>:Ìæ´úΪ±í´ïʽµÄÖµ£¬ÔÚʹÓñí´ïʽʱӦ¸ÃʹÓÃ@ÒýÓÃ
<% ruby code %>:½öÖ´ÐдúÂ룬²»×öÈκÎÌæ»»£¬³£ÓÃÓÚÌõ¼þÅжϻòÑ»·Óï¾ä¡¢É趨±äÁ¿ÒÔ¼°ÔÚÊä³ö֮ǰ¶ÔÊý¾Ý½øÐд¦Àí
<%# commit %>:×¢ÊÍÐÅÏ¢
<%%: Êä³ö<%
%%>£ºÊä³ö%>
ÈçÉÏÃæµÄ°¸Àý£¬ÔÚʹÓÃÄ£°åºó
[root@node1 manifests]# cp /etc/puppet/modules/nginx/files/web.conf /etc/puppet/modules/nginx/templates/conf.erb [root@node1 manifests]# grep work /etc/puppet/modules/nginx/templates/conf.erb worker_processes <%= @processorcount %>; ±íʾnginxµÄÏß³ÌÊý°´ÕÕcpuµÄ¸öÊýÀ´Æô¶¯ ÀàÓ¦¸Ã¸ÄΪÈçÏÂËùʾ class nginx::web inherits nginx { service {'nginx': ensure => true, enable => true, name => nginx, require => Package['nginx'], } file{'web.conf': ensure =>file, content =>template('nginx/conf.erb'), path => '/etc/nginx/nginx.conf', notify => Service['nginx'], require => Package['nginx'] } } [root@node1 manifests]# puppet apply -e 'include nginx::web' notice: /Stage[main]/Nginx/Package[nginx]/ensure: created notice: /Stage[main]/Nginx::Web/Service[nginx]/ensure: ensure changed 'stopped' to 'running' notice: Finished catalog run in 8.25 seconds [root@node1 manifests]# grep work /etc/nginx/nginx.conf worker_processes 1; |
¶þ¡¢master/agent
Ó¦Óó¡¾°£º
1.ͳһ×ÊÔ´¹ÜÀíÈí¼þ
2.ͳһÅäÖÃϵͳÓÅ»¯²ÎÊý
3.¶¨ÆÚ¼ì²â·þÎñÆ÷ÊÇ·ñÔËÐÐ
4.Ö÷»úÉϵÄÈí¼þÅäÖúÏÀíµÄÊôÐÔ
1.°²×°
ǰÌ᣺ÅäÖÃʵÓÃepelµÄyumÔ´£¬¶øºóʹÓÃyumÃüÁî°²×°¼´¿É
»·¾³¹æ»®
192.168.1.201 puppet-server¶Ë
192.168.1.202 puppet-agent¶Ë
°²×°²¿Êðpuppet·þÎñÆ÷¶Ë
[root@node1 manifests]# yum install puppet-server |
°²×°²¿Êðpuppet¿Í»§¶Ë
[root@node2 ~]# yum install puppet -y |
2.½âÎöË«·½Ö÷»ú
½âÎöË«·½Ö÷»ú£¬¿ÉÒÔʹÓÃDNSºÍhostsÎļþ£¬ÓÉÓÚ±¾´¦ÊµÑéµÄÔµ¹Ê£¬¹ÊʹÓõÄΪ/etc/hostsÎļþÀ´½âÎöË«·½Ö÷»ú
½¨ÒéµÄÖ÷»úÃüÃû·½Ê½£º
½ÇÉ«Ãû-ÔËÓªÉÌ-»ú·¿Ãû-»úÆ÷ip.ÓòÃû
[root@node1 manifests]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 172.16.0.1 server.magelinux.com server 192.168.1.201 node1.wangfeng7399.com node1 192.168.1.202 node2.wangfeng7399.com node2 192.168.1.203 node3.wangfeng7399.com node3 192.168.1.204 node4.wangfeng7399.com node4 |
3.Æô¶¯
1£©Æô¶¯puppet·þÎñÆ÷¶Ë
ÊÕÆðÆô¶¯puppetÊØ»¤½ø³Ìʱ£¬Æä»á×Ô¶¯½øÐÐÔËÐл·¾³µÄ³õʼ»¯£¬ÀýÈç´´½¨Ò»¸ö±¾µØCA¼°·þÎñÆ÷¶ËÏà¹ØµÄÖ¤ÊéºÍÃÜÔ¿µÈ¡£³õʼ»¯²Ù×÷Íê³Éºó£¬puppet¾Í»á¼àÌýÖ¸¶¨µÄÌ×½Ó×Ö²¢µÈ´ý¿Í»§¶ËµÄÁ¬½ÓÇëÇó¡£Ä¬ÈÏÇé¿öÏ£¬ÆäÖ¤ÊéºÍÃÜÔ¿µÈÎļþλÓÚ/var/lib/puppet/sslĿ¼ÖÐ
³öÓÚµ÷ÊÔµÄÄ¿µÄ£¬½¨ÒéÊ×´ÎÆô¶¯puppet·þÎñ½ø³Ì¿ÉÒÔÒÔ·ÇÊØ»¤½ø³Ì·½Ê½½øÐУ¬²¢ÈÃÆäÊä³öÏêϸÐÅÏ¢ÒÔ±ãÓÚ¹Û²ì³õʼ»¯¹ý³Ì£¬ÈçÏÂËùʾ£¬ÆäÖð²½Õ¹Ê¾ÁË´´½¨±¾µØÖ÷½ÐÏòCAÉêÇëÖ¤Êé¡¢»ñµÃÖ¤ÊéÒÔ¼°CAÒÆ³ýÖ¤ÊéÇ©ÊðÇëÇóµÄ¹ý³ÌµÈ£¬¶øºóÆô¶¯·þÎñ½ø³Ì²¢×¼±¸½ÓÊܸ÷agent¶ËµÄÁ¬½ÓÇëÇó
[root@node1 manifests]# puppet master --no-daemonize --debug [root@node1 manifests]# puppet master --no-daemonize --debug debug: Failed to load library 'rubygems' for feature 'rubygems' debug: Puppet::Type::User::ProviderDirectoryservice: file /usr/bin/dscl does not exist debug: Puppet::Type::User::ProviderPw: file pw does not exist debug: Puppet::Type::User::ProviderUser_role_add: file roledel does not exist debug: Puppet::Type::User::ProviderLdap: true value when expecting false debug: /File[/var/lib/puppet/facts]: Autorequiring File[/var/lib/puppet] debug: /File[/var/lib/puppet/ssl/certs/ca.pem]: Autorequiring File[/var/lib/puppet/ssl/certs] debug: /File[/etc/puppet/manifests]: Autorequiring File[/etc/puppet] debug: /File[/var/lib/puppet/bucket]: Autorequiring File[/var/lib/puppet] debug: /File[/var/lib/puppet/ssl/
private_keys/node1.wangfeng7399.com.pem]: Autorequiring File[/var/lib/puppet/ssl/private_keys] debug: /File[/var/lib/puppet/ssl/private_keys]: Autorequiring File[/var/lib/puppet/ssl] debug: /File[/var/lib/puppet/server_data]: Autorequiring File[/var/lib/puppet] debug: /File[/var/lib/puppet/rrd]: Autorequiring File[/var/lib/puppet] debug: /File[/etc/puppet/puppet.conf]: Autorequiring File[/etc/puppet] debug: /File[/var/lib/puppet/ssl/crl.pem]: Autorequiring File[/var/lib/puppet/ssl] debug: /File[/etc/puppet/auth.conf]: Autorequiring File[/etc/puppet] debug: /File[/var/lib/puppet/ssl/private]: Autorequiring File[/var/lib/puppet/ssl] debug: /File[/var/lib/puppet/ssl/public_keys/
node1.wangfeng7399.com.pem]: Autorequiring File[/var/lib/puppet/ssl/public_keys] debug: /File[/etc/puppet/fileserver.conf]: Autorequiring File[/etc/puppet] debug: /File[/var/lib/puppet/ssl/certs/node1.wangfeng7399.com.pem]: Autorequiring File[/var/lib/puppet/ssl/certs] debug: /File[/var/lib/puppet/yaml]: Autorequiring File[/var/lib/puppet] debug: /File[/var/lib/puppet/state]: Autorequiring File[/var/lib/puppet] debug: /File[/var/lib/puppet/lib]: Autorequiring File[/var/lib/puppet] debug: /File[/var/lib/puppet/ssl]: Autorequiring File[/var/lib/puppet] debug: /File[/var/log/puppet/masterhttp.log]: Autorequiring File[/var/log/puppet] debug: /File[/var/lib/puppet/ssl/certificate_requests]: Autorequiring File[/var/lib/puppet/ssl] debug: /File[/var/lib/puppet/ssl/certs]: Autorequiring File[/var/lib/puppet/ssl] debug: /File[/var/lib/puppet/reports]: Autorequiring File[/var/lib/puppet] debug: /File[/var/lib/puppet/ssl/public_keys]: Autorequiring File[/var/lib/puppet/ssl] debug: /File[/var/lib/puppet/ssl/public_keys/node1.wangfeng7399.com.pem]/mode: mode changed '0640' to '0644' debug: /File[/var/lib/puppet/ssl/private_keys/node1.wangfeng7399.com.pem]/mode: mode changed '0640' to '0600' debug: /File[/var/lib/puppet/ssl/certs/node1.wangfeng7399.com.pem]/mode: mode changed '0640' to '0644' debug: Finishing transaction 70240930059560 debug: /File[/var/lib/puppet/ssl/ca/serial]: Autorequiring File[/var/lib/puppet/ssl/ca] debug: /File[/var/lib/puppet/ssl/ca/inventory.txt]: Autorequiring File[/var/lib/puppet/ssl/ca] debug: /File[/var/lib/puppet/ssl/ca/private]: Autorequiring File[/var/lib/puppet/ssl/ca] debug: /File[/var/lib/puppet/ssl/ca/private/ca.pass]: Autorequiring File[/var/lib/puppet/ssl/ca/private] debug: /File[/var/lib/puppet/ssl/ca/signed]: Autorequiring File[/var/lib/puppet/ssl/ca] debug: /File[/var/lib/puppet/ssl/ca/requests]: Autorequiring File[/var/lib/puppet/ssl/ca] debug: /File[/var/lib/puppet/ssl/ca/ca_key.pem]: Autorequiring File[/var/lib/puppet/ssl/ca] debug: /File[/var/lib/puppet/ssl/ca/ca_pub.pem]: Autorequiring File[/var/lib/puppet/ssl/ca] debug: /File[/var/lib/puppet/ssl/ca/ca_crt.pem]: Autorequiring File[/var/lib/puppet/ssl/ca] debug: /File[/var/lib/puppet/ssl/ca/ca_crl.pem]: Autorequiring File[/var/lib/puppet/ssl/ca] debug: /File[/var/lib/puppet/ssl/ca/ca_crt.pem]/mode: mode changed '0640' to '0660' debug: /File[/var/lib/puppet/ssl/ca/ca_crl.pem]/mode: mode changed '0644' to '0664' debug: /File[/var/lib/puppet/ssl/ca/ca_key.pem]/mode: mode changed '0640' to '0660' debug: /File[/var/lib/puppet/ssl/ca/private/ca.pass]/mode: mode changed '0640' to '0660' debug: Finishing transaction 70240928434340 debug: Using cached certificate for ca debug: Using cached certificate for ca debug: Using cached certificate for node1.wangfeng7399.com notice: Starting Puppet master version 2.7.25 |
ʹÓÃpuppet master --genconfig¿ÉÒԲ鿴·þÎñÆ÷¶ËµÄÅäÖÃÐÅÏ¢£¬½¨Ò齫ÆäÊä³öµ½/etc/puppet/puppet.confÖÐ
[root@node1 ~]# puppet master --genconfig >> /etc/puppet/puppet.conf |
×¢Ò⣺Èç¹û´ËÇ°ÔøÒÔÆäÖ÷»úÃû»ò¸÷ÖÖÔÒòÆô¶¯¹ýpuppet¿Í»§¶Ë¹ý³Ì²¢Íê³É¹ý³õʼ»¯£¬ÆäÖ¤ÊéÎļþ½«ÎÞ·¨·ûºÏ±¾´ÎÆô¶¯µÄÐèÒª£º´Ëʱ£¬ÐèÒªÏÈÇé¿ö/var/lib/puppet/sslĿ¼·½¿ÉÍê³ÉºóÐøµÄ³õʼ»¯²Ù×÷
ÈçÉÏÊöµÄ²âÊÔÆô¶¯Ã»ÓÐÎÊÌ⣬¿ÉÖÕÖ¹µ±Ç°µÄÆô¶¯ºó½«ÆäÒÔÊØ»¤½ø³Ì·½Ê½Æô¶¯
[root@node1 ~]# service puppetmaster start Starting puppetmaster: [ OK ] [root@node1 ~]# chkconfig puppetmaster on |
2£©Æô¶¯puppet¿Í»§¶Ë
puppet agentÔÚÊ×´ÎÆô¶¯Ê±£¬»áÏëÆðÖ¸¶¨µÄpuppet serverÉêÇëÖ¤Ê飬²¢Íê³ÉºóÐøÁ¬½ÓÇëÇó£¬Í¬ÑùµÄÀíÓÉ£¬´¦ÓÚ²âÊÔµÄÄ¿µÄ£¬½ÓÈ뵱ǰpuppet¼¯ÈºÖеÄÊ׸öagent½Úµã¿ÉÒÔÒÔ·ÇÊØ»¤½ø³ÌµÄ·½Ê½ÔËÐУ¬ÒÔ¹Û²ìÆä³õʼ»¯¹ý³Ì
[root@node2 ~]# puppet agent --server=node1.wangfeng7399.com --no-daemonize --debug info: Creating a new SSL key for node2.wangfeng7399.com info: Caching certificate for ca info: Creating a new SSL certificate request for node2.wangfeng7399.com info: Certificate Request fingerprint (md5): BC:B2:36:9F:B5:78:CD:60:1E:72:9A:D5:88:DE:4B:57 |
´Ëʱ£¬ÔÚpuppet·þÎñÆ÷¶ËʹÓÃpuppet certÃüÁî¹ÜÀí¿Í»§¶ËµÄÖ¤ÊéÇëÇ󣬯ä--listÑ¡ÏîÄܹ»²é¿´µÈ´ýÇ©ÊðÖ¤ÊéµÄ¿Í»§¶ËÁÐ±í£¬¶ø--signÑ¡Ïî¿ÉÓÃÓÚΪָ¶¨½ÚµãÇ©ÊðÖ¤Ê飬Èç¹ûÒªÒ»´ÎÐԵضà¸ö½ÚµãÖ¤ÊéÉêÇë½øÐÐÇ©Êð¿ÉÒÔʹÓÃ--allÑ¡Ïî
[root@node1 ~]# puppet cert --list "node2.wangfeng7399.com" (BC:B2:36:9F:B5:78:CD:60:1E:72:9A:D5:88:DE:4B:57) [root@node1 ~]# puppet cert --sign node2.wangfeng7399.com notice: Signed certificate request for node2.wangfeng7399.com notice: Removing file Puppet::SSL::CertificateRequest node2.wangfeng7399.com at '/
var/lib/puppet/ssl/ca/requests/node2.wangfeng7399.com.pem' |
Ò»µ©agent½ÚµãÊÕµ½Ç©Êð¹ýµÄÖ¤Ê飬Æä½«»áÏÔʾÈçÏÂÐÅÏ¢
info: Caching certificate for node2.wangfeng7399.com notice: Starting Puppet client version 2.7.25 |
È·±£ÉÏÊöagentÏà¹Ø²Ù×÷²»´æÔÚÎÊÌâºó£¬±ã¿ÉÒÔ½«--serverÑ¡ÏîÖ¸¶¨µÄÐÅÏ¢´æ´¢ÓëagentµÄÅäÖÃÎļþÖУ¬²¢ÒÔ·þÎñµÄ·½Ê½Æô¶¯puppet
agentÁË¡£ÆäÅäÖÃÎļþΪ/etc/puppet/puppet.conf£¬ÅäÖÃÍêÕû¼È¿ÉÒÔÆÚ´ýÄܹ»puppet
[root@node2 ~]# echo "server=node1.wangfeng7399.com" >> /etc/puppet/puppet.conf [root@node2 ~]# service puppet start Starting puppet: [ OK ] [root@node2 ~]# chkconfig puppet on |
4.ÊÚȨ·ÃÎÊ
ÔÚpuppet·þÎñÆ÷¶ËµÄ/etc/puppet/manifests/Öд´½¨site.pp,ÔÚmaster/agentʱ£¬ËùÓнڵãÇåµ¥ÎļþÈë¿ÚÎļþΪsite.pp
node node2.wangfeng7399.com { incldue nginx::web } |
½¨Ò飺һÀà½ÚµãʹÓÃÒ»¸öÇåµ¥Îļþ£¬ËùÓÐÇåµ¥Îļþ¶¼ÔÚsite.ppÖÐʹÓÃimprot°üº¬½øÀ´£¬Çåµ¥ÎļþÐ޸ĺóÓ¦ÖØÆôÎļþ
5.×Ô¶¯Ç©·¢Ö¤Êé
¿ÉÒÔÉèÖÃmaster×Ô¶¯Ç©·¢ËùÓеÄÖ¤Ê飬ÎÒÃÇÖ»ÐèÒªÔÚ/etc/puppetĿ¼Ï´´½¨autosign.confÎļþ¼´¿É
[root@node1 ~]# echo "*.wangfeng7399.com" > /etc/puppet/autosign.conf |
ÕâÑù¾Í»á¶ÔËùÓÐÀ´×Ômagedu.confµÄ»úÆ÷µÄÇëÇó×Ô¶¯Ç©ÊðÖ¤Êé
6.puppet kick¹¦ÄÜʵÏÖ
puppet¿Í»§¶ËĬÈÏÿ30·ÖÖӺܷþÎñÆ÷ͨѶһ´Î£¬µ«ÊÇÓÐʱ£¬ÎÒÃÇÏ£Íû·þÎñÆ÷Äܹ»¸ø¿Í»§¶Ë½ô¼±ÍÆËÍһЩÈËÎÓÚÊǾÍÓÐÁËpuppet
kick£¨puppet 2.6ÒÔǰ½Ðpuppetrun£©
1£©±à¼¿Í»§¶ËÅäÖÃÎļþ/etc/puppet/puppet.confÔÚ[agent]¶ËÖÐÌí¼ÓÈçÏÂ
root@node2 ~]# echo "listen=true" >> /etc/puppet/puppet.conf [root@node2 puppet]# ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 5 *:8139 *:* |
2£©ÔÚ¿Í»§¶Ë±à¼»ò´´½¨ÐÂÎļþ/etc/puppet/namespaceauth.conf£¬°üº¬ÏÂÃæÄÚÈÝ
[puppetrunner] allow *.wangfeng7399.com |
3£©ÔÚ¿Í»§¶Ë±à¼Îļþauth.conf,Ìí¼ÓÈçÏÂÄÚÈÝ
path /run method save auth any allow *.wangfeng7399.com |
4)ÍÆËÍ·½·¨£¬ÔÚ·þÎñÆ÷¶ËÔËÐÐÃüÁî
[root@node1 puppet]# puppet kick -p 10 node2.wangfeng7399.com Triggering node2.wangfeng7399.com Getting status status is success node2.wangfeng7399.com finished with exit code 0 Finished |
²é¿´node2
[root@node2 puppet]# rpm -q nginx nginx-1.0.15-5.el6.x86_64 [root@node2 puppet]# grep work /etc/nginx/nginx.conf worker_processes 1; |
´íÎóÐÅÏ¢£¬²ÒÍ´µÄ½Ìѵ£¬¿Í»§¶ËÒ»ÖÂÔÚ±¨Õâ¸ö´íÎó
err: Could not retrieve catalog from remote server: SSL_connect returned=1
errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate is not yet valid for /CN=
Puppet CA: node1.wangfeng7399.com] warning: Not using cache on failed catalog err: Could not retrieve catalog; skipping run debug: report supports formats: b64_zlib_yaml pson raw yaml; using pson err: Could not send report: SSL_connect returned=1 errno=0
state=SSLv3 read server certificate B: certificate verify failed: [certificate is not yet valid for /CN=
Puppet CA: node1.wangfeng7399.com] |
½â¾ö·½·¨£º
Á½Ì¨·þÎñÆ÷ÐèҪʱ¼äͬ²½
7.°²×°ÅäÖÃpuppet-dashboard
1£©°²×°
[root@node1 puppet]# rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm //°²×°¹Ù·½Í¨¹ýµÄyum²Ö¿â [root@node1 puppet]# yum install puppet-dashboard -y [root@node1 puppet]# yum install mysql-server mysql -y |
2£©Êý¾Ý¿âÊÚȨ
mysql> create database dashboard character set utf8; Query OK, 1 row affected (0.00 sec) mysql> grant all on dashboard.* to 'dbuser'@'192.168.1.%' identified by 'wangfeng7399'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) |
3£©ÐÞ¸ÄÅäÖÃÎļþ£¬dashboardµÄÅäÖÃÎļþΪ/usr/share/puppet-dashboard/config/database.yml,ÐÞ¸ÄÈçϲÎÊý
production: host:192.168.1.201 database: dashboard username: dbuser password:wangfeng7399 encoding: utf8 adapter: mysql |
Ϊdashboardµ¼ÈëÒÀÀµµÄÊý¾Ý±í
[root@node1 config]# gem install rake [root@node1 puppet]# cd /usr/share/puppet-dashboard/config [root@node1 config]# rake gems::refresh_specs [root@node1 config]# rake RAILS_ENV=production db:migrate |
Æô¶¯·þÎñ
[root@node1 config]# service puppet-dashboard start Starting Puppet Dashboard: => Booting WEBrick => Rails 2.3.17 application starting on http://0.0.0.0:3000 [ OK ] |
4£©ÅäÖÃpuppet·þÎñÆ÷ºÍ¿Í»§¶Ë
·þÎñÆ÷¶ËÅäÖÃ
ÔÚpuppetmasterµÄÅäÖÃÎļþÖÐÌí¼ÓÈçÏÂÄÚÈÝ
reports = store, http reporturl = http://192.168.1.201:3000/reports/upload ÔÚ[master]ÖÐÌí¼Ó |
¿Í»§¶ËÅäÖÃ
report=true ÔÚ[agent]ÖÐÌí¼Ó |
ÅäÖÃÍê³ÉºóÖØÆôpuppet
5£©²âÊÔ
»¹¿ÉÒÔÔÚÒ³ÃæÖÐÌí¼Ó½ÚµãºÍÀàÎļþ
ÖÕÓÚÍê³ÉÁË£¬Ò»¸öʱ¼ä²»Í¬²½ÅªÁË2Сʱ²ÅÕÒ³ö´íÎó¡£
|