为了账号安全,请及时绑定邮箱和手机立即绑定

自动化运维工具puppet的使用

标签:
MySQL


规划:

    node1.9527du.com(192.168.60.22)  为 puppet master 端

    node2.9527du.com(192.168.60.128) 为 puppet agent  端

    node3.9527du.com(192.168.60.134) 为 puppet agent  端

目的:

    为node2.9527du.com节点安装LAMP平台,安装完成之后,使用kick机制升级该节点bash的程序包;

    为node3.9527du.com节点安装MySQL数据库服务。

该实验的模块如下图:

wKioL1RDrm3BY3ikAAT86Af1-OM981.jpg

一、因为 puppet 工作在:master/agent 模型。各节点之间的通讯是基于主机名称的。所以,要使用到DNS地址解析服务器。

这里为了方便,使用hosts文件来解析主机名。

1、在主节点配置好hosts文件。

[root@node1 ~]# cat /etc/hosts

192.168.60.22   node1.9527du.com node1

192.168.60.128   node2.9527du.com node2

192.168.60.134   node3.9527du.com node3

2、复制该hosts文件到另外两个节点。

[root@node1 ~]# scp -p /etc/hosts 192.168.60.128:/etc/

[root@node1 ~]# scp -p /etc/hosts 192.168.60.134:/etc/

3、在分布式系统应用中首先要保证各节点的时间同步。

[root@node1 ~]# hostname;date;ssh node2.9527du.com 'hostname;date'; ssh node3.9527du.com 'hostname;date'

node1.9527du.com

Sun Oct 12 23:12:20 CST 2014

node2.9527du.com

Sun Oct 12 23:12:27 CST 2014

node3.9527du.com

Sun Oct 12 23:12:02 CST 2014

二、puppet master 端的安装配置

1、所需要安装的程序包:

[root@node1 puppet]# rpm -qa | grep -e "puppet" -e "facter"

facter-1.6.18-3.el6.x86_64

puppet-2.7.25-1.el6.noarch          -----> puppet agent 端程序包

puppet-server-2.7.25-1.el6.noarch   -----> puppet master 端程序包

说明:

   当puppet agent端向puppet master 端请求 katalog 文件时,会发送sends:节点名称node names和facts.

   而facts就是puppet agent所在主机的一些信息。如:

[root@node1 puppet]# facter | grep -e 'lsbdistdescription' -e "osfamily"

lsbdistdescription => CentOS release 6.5 (Final)

osfamily => RedHat

说明:

    puppet master 也就是根据agent发送过来的这些信息来。选择安装程序包使用的工具的。

 facter-1.6.18-3.el6.x86_64 就是收集这些信息的。

2、让 puppet master 端,运行在前台,并详细显示初始化时候信息,观察puppet master工作是否OK?

[root@node1 ~]# puppet master -v   --no-daemonize

info: Creating a new SSL key for ca

info: Creating a new SSL certificate request for ca

info: Certificate Request fingerprint (md5): E2:86:B9:E4:51:45:00:F9:89:0E:D3:80:AC:6D:47:A6

notice: Signed certificate request for ca

notice: Rebuilding inventory file

info: Creating a new certificate revocation list

info: Creating a new SSL key for node1.9527du.com

info: Creating a new SSL certificate request for node1.9527du.com

info: Certificate Request fingerprint (md5): 10:41:62:36:4F:6D:D0:6B:66:6D:F6:87:68:E1:43:FF

notice: node1.9527du.com has a waiting certificate request

notice: Signed certificate request for node1.9527du.com

notice: Removing file Puppet::SSL::CertificateRequest node1.9527du.com at '/var/lib/puppet/ssl/ca/requests/node1.9527du.com.pem'

notice: Removing file Puppet::SSL::CertificateRequest node1.9527du.com at '/var/lib/puppet/ssl/certificate_requests/node1.9527du.com.pem'

notice: Starting Puppet master version 2.7.25

说明:

    puppet工作在:master/agent模型,puppet master端与agent端通讯使用的是SSL加密协议进行通讯的。所以,各节点的认证是通过CA颁发的证书来互相认证对方的身份。

所以,在有个CA为puppet节点签署证书才可以的。其实,puppet master 既是CA又是master端。所以初始化,puppet master 端时,首先生成CA需要的证书,再为node1.9527.com

节点生成证书。

3、如果,第2步没有问题的话,Ctrl + c 关闭掉,再以后台方式启动。

[root@node1 ~]# service puppetmaster start

Starting puppetmaster:                                     [  OK  ]

4、查看puppet master 端监听的端口。

[root@node1 ca]# ss -anptl | grep puppet

LISTEN     0      5                         *:8140                     *:*      users:(("puppetmasterd",2084,5))

[root@node1 ~]# netstat -anptl | grep ruby

tcp        0      0 0.0.0.0:8140                0.0.0.0:*                   LISTEN      3179/ruby

三、在 node3.9527.du.com 节点安装配置 puppet agent 端;

1、puppet agent 端所需要安装的程序包;

[root@node3 2.7.25]# rpm -qa | grep -e "puppet" -e "facter"

facter-1.6.18-3.el6.x86_64

puppet-2.7.25-1.el6.noarch

2、让 puppet agent 端以前台方式运行,并使用【-v】选项输出运行时的详细信息。

[root@node3 2.7.25]# puppet agent --server=node1.9527du.com -v --no-daemonize

info: Creating a new SSL key for node3.9527du.com  -----> 生成该节点SSL key密钥

info: Caching certificate for ca

info: Creating a new SSL certificate request for node3.9527du.com

info: Certificate Request fingerprint (md5): 84:80:BF:44:8B:EE:29:00:F8:E4:F5:14:AE:34:52:F1  ------> 请求puppet master签署证书

说明:

    使用:【--server】选项,指定该agent端属于哪个 puppet master的。

    说明:其实agent端初始化的时候,也就是生成节点证书,请求 puppet master 端签署证书的。

3、puppet master 端CA签署证书

(1)、查看puppet master端是否收到node3.9527du.com节点的签署证书的请求

[root@node1 ~]# puppet cert --list

  "node3.9527du.com" (84:80:BF:44:8B:EE:29:00:F8:E4:F5:14:AE:34:52:F1)

(2)、puppet master 端的CA签署node3.9527du.com节点的证书

[root@node1 ~]# puppet cert --sign node3.9527du.com

notice: Signed certificate request for node3.9527du.com

notice: Removing file Puppet::SSL::CertificateRequest node3.9527du.com at '/var/lib/puppet/ssl/ca/requests/node3.9527du.com.pem'

4、当node3.9527du.oom节点拥有证书后,就会向puppet master端发送catalog文件的请求了。

[root@node3 2.7.25]# puppet agent --server=node1.9527du.com -v --no-daemonize

info: Caching certificate for node3.9527du.com

notice: Starting Puppet client version 2.7.25

info: Caching certificate_revocation_list for ca

info: Caching catalog for node3.9527du.com

info: Applying configuration version '1413130794'

info: Creating state file /var/lib/puppet/state/state.yaml

notice: Finished catalog run in 0.02 seconds

说明:

    重启puppet agent端,agent就会向puppet masterv 发送请求katalog文件。由于在puppet master端没有为该节点提供站点清单文件。

    所以,不会看到应用资源时候输出的信息。

    下面为,该节点node3.9527du.com提供站点清单文件。

4、为node3.9527du.com提供站点清单文件。

(1)、提供资源清单,且使用类(class)方式封装资源清单。

说明:该类的作用是安装mysql-server程序包,并为MySQL数据库服务提供定制的统一的配置文件。

wKioL1RDoB6w2r1xAAHuVt7OlXo882.jpg

(2)、制作站点清单文件:

wKiom1RDoFCzVdG7AACetdTcULw706.jpg

(3)、在site.pp文件中导入所有站点文件

wKiom1RDqqzjoIsCAAHwsc7UL-Q613.jpg

5、测试

(1)、没有启动puppet agent端的情况下查看node3.9527du.com节点是不安装了mysql-server程序包。

[root@node3 ~]# rpm -qa | grep "mysql-server"

说明:

    从上述命令输出结果,得知。node3.9527du.com并没有安装mysql-server程序包。

(2)、启动puppet agent 端,让它运行在前台,使用-v选项输出运行时的一些信息,

说明:

    虽然默认puppet agent端每隔30分钟会向puppet master 端发送请求catalog文件的。

但每次启动或重启,puppet agent端,agent端都会向puppet master端发送请求catalog文件的请求的。

如下图:

wKiom1RDoPrB8pV-AAELMUN7Usg172.jpg(3)、查看是否真的安装了程序包和mysqld服务真的启动了?

[root@node3 ~]# rpm -qa | grep "mysql-server"; netstat -anptl | grep "mysqld"

mysql-server-5.1.71-1.el6.x86_64

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      8848/mysqld

说明:

   该节点请求自己的站点清单文件,并应用。都是没有问题的。

四、在 node2.9527.du.com 节点安装配置 puppet agent 端;

1、puppet agent 端所需要安装的程序包;

[root@node2 ~]# rpm -qa | grep -e "puppet" -e "facter"

facter-1.6.18-3.el6.x86_64

puppet-2.7.25-1.el6.noarch

2、让 puppet agent 端运行在前台,并使用【-v】选项输出运行时的详细信息。

[root@node2 ~]# puppet agent --server=node1.9527du.com -v --no-daemonize

info: Creating a new SSL key for node2.9527du.com

info: Caching certificate for ca

info: Creating a new SSL certificate request for node2.9527du.com

info: Certificate Request fingerprint (md5): C5:90:09:58:7C:EB:20:E4:A6:7D:40:B8:5F:B2:A3:54

3、puppet master 端CA签署证书

(1)、查看puppet master端是否收到node3.9527du.com节点的签署证书的请求

[root@node1 ~]# puppet cert --list

  "node2.9527du.com" (C5:90:09:58:7C:EB:20:E4:A6:7D:40:B8:5F:B2:A3:54)

(2)、puppet master 端的CA签署node2.9527du.com节点的证书

root@node1 ~]# puppet cert --sign node2.9527du.com

notice: Signed certificate request for node2.9527du.com

notice: Removing file Puppet::SSL::CertificateRequest node2.9527du.com at '/var/lib/puppet/ssl/ca/requests/node2.9527du.com.pem'

4、为node2。9527du.com节点提供站点清单文件

(1)、为node2.9527du.com 节点提供资源清单1

wKiom1RDomOTs-SSAARYUcz_ZGc983.jpg

(2)、为node2.9527du.com提供的资源清单2

wKiom1RDoyWxyV98AAHLtRPipgk719.jpg

(3)、为node2.9527du.com提供站点清单

wKiom1RDo_HggJ9hAAC6DVKs7ow247.jpg

5、测试

(1)、没有启动puppet agent端的情况下查看node2.9527du.com节点是否安装了lamp平台所需要的程序包。

[root@node2 ~]# rpm -qa | grep -e 'php-[0-9]' -e 'mysql-server' -e 'httpd-[0-9]'

(2)、启动puppet agent 端,让它运行在前台,使用-v选项输出运行时的一些信息,

wKiom1RDpJaDHgqRAAOOp0BXwq0771.jpg

(3)、查看是否真的安装了lamp 平台

[root@node2 ~]# rpm -qa | grep -e 'php-[0-9]' -e 'mysql-server' -e 'httpd-[0-9]'

mysql-server-5.1.71-1.el6.x86_64

httpd-2.2.15-29.el6.centos.x86_64

php-5.3.3-26.el6.x86_64

[root@node2 ~]# netstat -anptl | grep -e "httpd" -e "mysqld"

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      7744/mysqld        

tcp        0      0 :::8080                     :::*                        LISTEN      7846/httpd

说明:

   从上述测试结果得知,node2.9527du.com请求自己的站点清单文件是没有问题的,应用资源时也OK!!

五、把node2.9527du.com节点配置支持:kick。完成紧急升级bash程序包的任务。

    默认puppet agent 每隔30分钟,会向 puppet master 请求katalog文件。但是,有时候我们对服务器执行的配置维护操作需要立即生效的。

    如:我们的bash程序出现漏洞要升级所有服务器的bash程序包,不能等puppet agent端过来请求catalog文件。这时候就需要使用到puppet 的kick机制。把需要执行的任务,推送给puppt agent端。

1、把puppet agent端,配置成工作在kick模型。

(1)、puppet agent 要监听在某个套接字,等待puppet master端推送过来的数据。

[root@node2 ~]# cat /etc/puppet/puppet.conf | grep "listen"

    listen = true

(2)、配置访问控制

[root@node2 ~]# vim /etc/puppet/namespaceauth.conf

[puppetrunner]

allow *.9527du.com

[root@node2 ~]# vim /etc/puppet/auth.conf

path /

auth any

path /run

method save

allow node1.9527du.com

2、启动puppet agent端

[root@node2 ~]# service puppet start

Starting puppet:                                           [  OK  ]

查看puppet agent 监听的端口

[root@node2 ~]# ss -anpt | grep "puppet"

LISTEN     0      5                         *:8139                     *:*      users:(("puppetd",7928,5))

3、为node2.9527du.com节点提供站点清单文件

(1)、为node2。9527du.com节点提供的升级bash程序包的资源清单

wKioL1RDpoHiQtvIAAJ2bmIl8Hc200.jpg

(2)、在node2.9527du.com节点清单原来的基础上声明多一个类,该类的功能是升级bash程序的。

wKiom1RDpuew1NdgAADeMLp-ayA401.jpg

4、重新启动puppetmaster服务

[root@node1 ca]# service puppetmaster reload

Stopping puppetmaster:                                     [  OK  ]

Starting puppetmaster:                                     [  OK  ]

5、测试是否能够让node2.9527.com节点紧急升级bash程序

  提供的bash升级包为:

                   bash-4.1.2-15.el6_5.1.x86_64.rpm

(1)、puppet agent端升级前的bash程序包版本如下:

[root@node2 ~]# rpm -qa | grep bash

bash-4.1.2-15.el6_4.x86_64

(2)、puppet master 向node2.9527du.com节点推送任务

wKioL1RDp9nSjrB3AACXJhb-dFc209.jpg(3)、查看node2.9527.com端是否执行升级bash程序包的任务

wKioL1RDqAzCmweYAAVBXPmlVAM215.jpg

说明:

    升级程序包已经成功!!!

©著作权归作者所有:来自51CTO博客作者成长的小虫的原创作品,如需转载,请注明出处,否则将追究法律责任

类puppet自动化运维工具


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消