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;

                  

    注:根据马哥视频作的学习笔记,若有错误,欢迎指正;侵删

相关文章
相关标签/搜索