Puppet Manager

 

         在master模式下,咱們給每一個agent應用的manifest可能不止一個,因此在master端須要根據agent的主機名來創建一個站點清單(也多是多個站點清單),將某個agent要應用的全部manifest都填入這個清單中,而後直接應用這個清單便可;node

 

                  agent:默認每隔三十分鐘向master發送node name和facts,並請求catalog;nginx

                   master:驗證客戶端身份,查找與其相關的site manifest,編譯生成catalog,併發送給客戶端;web

                   軟件安裝:直接使用yum安裝便可vim

                            在master端須要安裝puppet和puppet-server;也能夠安裝facter,用來管理本身;tomcat

                                     puppetmaster監聽在TCP的8140端口;安全

                            在agent端須要安裝puppet和facter;服務器

                                     puppetagent監聽在TCP的8139端口;併發

                   配置文件:app

                            /etc/puppet/puppet.confdom

                                     此配置文件相似於ini格式:

                                               main段:適用於master和agent,爲全局配置;

                                               agent段:適用於agent,僅在agent上生效;

                                               master段:適用於master,僅在master上生效;

                                     且此文件支持相似變量的功能,能夠經過puppet config print查看支持的全部變量(也是默認配置),且可使用」puppet config set [setting_name] [setting_value]」修改這些變量的值;

                            能夠經過puppet master|agent --genconfig來生成符合此環境(須要基於默認的配置文件,因此咋生成這些信息以前不能夠移動原來的配置文件)的配置信息(默認是發送到顯示器上的,若是想要使用,則須要將其重定向到配置文件中,可是生成的信息中有的參數可能已經廢棄,與如今的puppet版本可能不兼容);

                            關於配置文件的更詳細的信息能夠經過puppet doc命令查看;

                                     puppet doc --list :能夠查看文檔包含的reference;

                                     puppet doc -r :能夠查看上面命令輸出的某種reference的詳細信息;

                                               示例:puppet doc -r type

                            Note:由於puppet master與agent的通訊與hostname有關,因此必定要設置合適的主機名,建議master端使用FQDN(好比hello.guowei.com)格式的主機名,不然簽證的時候可能會有錯誤,它會在你的主機名後加上.localdomain

                   啓動服務:

                            master:第一次啓動puppet master端服務時,建議使用puppet master –v --no-daemonize來查看啓動是否正常(能夠經過此命令的輸出來瞭解服務啓動流程,包括CA創建、字簽證書、證書存放路徑等),以後再經過腳本或者systemctl來啓動服務;

                            agent:第一次啓動puppet agent端服務時,建議使用puppet agent--server=SERVER_NAME --test來測試一下是否能夠正常工做;而後再經過puppet agen --server SERVER_NAME向master端發送簽證請求;這些都測試完畢之後,最後要編輯/etc/puppet/puppet.conf在[agent]或[main]中指定一下server地址,接着啓動puppetagent服務(systemctl start puppetagent.service),之後agent就能夠自動回去配置信息了;

                                     示例:

                                               ~]# cat /etc/puppet/puppet.conf

                                                        [agent]

                                                        listen = true

                                                        server = node1.guowei.com

                   簽署證書:

                            1.puppet master –v --no-daemonize     --->  master端

                            2.中止上面運行的命令Ctrl+c

                            3.systemctl start puppetmaster.service   --->  master端

                                     啓動puppetmaster服務,監聽在8140端口

                            4. puppet agen --server SERVER_NAME   --->  agent端

                                     agent向master發起證書籤署請求

                            5. puppet cert --list                   --->  master端

                                     master端查看要求證書籤署的agent

                            6.puppet cert sign AGENT_HOSTNAME   --->  master端

                                     簽署agent;

                            7.agent與master創建鏈接完畢;

                            撤銷證書,從新簽署:

                                     1. puppet cert clean AGENT_HOSTNAME    --->  master端

                                     2. rm -rf /var/lib/puppet/ssl/*             --->  agent端

                                               若是出現錯誤,從新簽署一直沒有成功就直接rm -rf /var/lib/puppet/*(根據狀況而定,最壞的是master和agent都要執行這個命令),而後重啓master,從新簽署;

                                     3. puppet agent --server= SERVER_NAME --no-daemonize -v     --->  agent端

                                     4. puppet cert sign AGENT_HOSTNAME     --->  master端

                   安裝全部要用到的模塊:

                            puppet module install

                            本身製做

                   定義site manifest:

                            站點清單通常位於/etc/puppet/manifests/路徑下,且要命名爲site.pp;

                                     site.pp定義節點的方式:

                                               1.以主機名直接給出其相關定義:

                                                        node 'NODE_ANME' {

                                                                 … puppet code …

                                                        }

                                               2.把功能相近的主機事先按統一格式命名,按統一格式調用:

                                                        node /^web[0-9]+\.guowei\.com/ {

                                                                  … puppet code …

                                                        }

                                     示例:基於上一篇文章中的示例(最後一個示例)

                                               ~]#cat /etc/puppet/manifests/site.pp

                                                        node 'node2.guwoei.com' {

                                                                 include nginx::proxy

                                                        }

                                               ~]#puppet agent --server=node1.guowei.com --no-daemonize -v

                            節點的繼承:

                                     node 'basenode' {

                                               include ntp

                                     }

                                     node 'web.guowei.com' inherits basenode {

                                               include ngnx::proxy

                                     }

                            對節點進行分段管理:

                                     在/etc/puppet/manifests/目錄中根據狀況建立多個子目錄,而後在這些子目錄中建立符合狀況的.pp文件,最後在site.pp文件中引入這個.pp文件便可;

                                     示例:

                                               ~]# tree /etc/puppet/manifests/

                                                        /etc/puppet/manifests/

                                                        ├── appservers

                                                        │   └── tomcat.pp

                                                        ├── cacheservers

                                                        │   └── varnish.pp

                                                        ├── site.pp

                                                        └── webservers

                                                            └── nginx.pp

                                               ~]#cat /etc/puppet/manifests/site.pp

                                                        import "webservers/*.pp"

                            建議的主機命名方式:

                                     角色-運營商-機房名-IP.DOMAIN.TLD

                   puppet的配置文件中的環境配置段:

                            環境配置端能夠實現將不一樣的場景(好比生產環境、測試環境、開發環境)中的主機分別對待,爲其制定特有的manifest路徑,從而實現爲其發送不一樣的配置信息,以適應其所處的環境;

                            示例:

                                     master端的環境配置段:

                                              vim /etc/puppet/puppet.conf

                                                        ……..

                                                        [master]

                                                        environment = production,testing

                                                                 聲明master支持的環境配置段;

                                                       [production]

                                                       manifest = /etc/puppet/enviroments/production/manifests/site.pp

                                                        modulepath = /etc/puppet/enviroments/production/modules/

                                                       fileserverconfig = /etc/puppet/fileserver.conf

                                                                 指定master端提供的文件服務器的配置文件;

                                                       [testing]

                                                       manifest = /etc/puppet/enviroments/testing/manifests/site.pp

                                                       modulepath = /etc/puppet/enviroments/testing/modules/

                                                       fileserverconfig = /etc/puppet/fileserver.conf

                                                       …….

                                     agent端的對應配置:

                                              [agent]

                                               environment = production

                                                        根據本身所屬的環境來指定,agent會自動發送此信息,以說明本身的身份,從而讓master發送正確的配置信息給本身;

                   Puppet自帶的文件服務器:

                            經過fileserver.conf文件且須要結合puppet.conf和auth.conf文件來定義文件服務器;auth.conf是用來實現對agent可否訪問master的某個路徑作安全管理的(即爲puppet提供ACL功能);

                            fileserver.conf格式:

                                     [mount_point]

                                     path /PATH/TO/SOMEWHERE

                                     allow HOSTNAME

                                     allow_ip IP_ADDR

                                     deny all

                            auth.conf格式:

                                     path /path_to_somewhere

                                     auth yes

                                     method find,save

                                     allow

                                     allow HOSTNAME

                                     allow_ip IP_ADDR

                   自動簽署證書:autosign.conf:

                            讓master在接收到agent的證書籤署請求後,直接自動爲其簽署證書;

                            格式:

                                     直接指明主機名便可,支持通配符;

                                               *.guowei.com

         Puppet的自動推送:kick

                   能夠實現將新添加的配置當即同步到agent端,使其立刻生效;同步方法爲:master通知agent到本身這裏來請求新配置;

                   經過namespace.conf文件,指定哪些主機能夠出發kick功能;

                            格式:

                                     [puppetrunner]

                                               allow HOSTNAME

 

         使用Puppet面臨的問題:

                   1.主機名:合理命名主機,且若是主機過多,通常建議使用DNS來提供IP地址解析;

                            DDNS:在主機得到地址之後,自動的將IP地址和主機名提交到DNS服務器,完成添加映射關係;

                   2.如何爲系統準備好puppet agent;

                            能夠在安裝系統的時候直接將puppet集成到系統中,而後在經過kickstart文件,安裝啓動puppet;

                  

    注:根據馬哥視頻作的學習筆記,若有錯誤,歡迎指正;侵刪

相關文章
相關標籤/搜索