简介
- Puppet是一种Linux、Unix、windows平台的集中配置管理系统
- 使用自有的Puppet描述语言,可管理配置文件、系统用户、Cron任务、安装软件包、系统服务等。Puppet把这些系统实体称之为资源,Puppet的设计目标是简化对这些资源的管理以及妥处理资源之间的依赖关系。
- Puppet采用C/S星型结构,所有客户端和一个或几个服务器交互。每个客户端周期性的(默认半个小时)向服务器发送请求,获得其最新的配置信息,保证配置信息同步。Puppet客户端严格按照服务器上的配置文件来配置各种应用、服务。配置完成以后,Puppet客户端会反馈给服务器端一个消息。如果出错,也会给服务器端反馈一个消息。
- Puppet的官方网站
- https://puppet.com/
- 下载:https://yum.puppetlabs.com/puppetlabs-release-
pc1-el-7.noarch.rpm
部署Puppet
-
1、配置IP地址、主机名,关闭SELinux
-
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777728
BOOTPROTO=static ONBOOT=yes IPADDR=172.16.8.100 NETMASK=255.255.255.0 GATEWAY=172.16.8.2 DNS1=114.114.114.114 DNS2=8.8.8.8 //修改的内容,其它内容省略
-
[root@localhost ~]# vim /etc/sysconfig/network
HOSTNAME=pt.sevenwin.org
-
[root@localhost ~]# vim /etc/hosts
172.16.8.100 pt.sevenwin.org pt
172.16.8.101 c65.sevenwin.org c65
-
[root@localhost ~]# vim /etc/selinux/config
SELINUX=disabled
-
[root@localhost ~]# reboot
-
2、设置NTP服务
-
[root@pt ~]# yum -y install ntp
-
[root@pt ~]# ln -sf /usr/share/zoneinfo/posix/Asia/Shanghai /etc/localtime
-
[root@pt ~]# vim /etc/ntp.conf
restrict 172.16.8.0 mask 255.255.255.0 nomodify notrap server 210.72.145.44 //这是中国国家授时中心的IP server 0.centos.pool.ntp.org iburst server 1.centos.pool.ntp.org iburst server 2.centos.pool.ntp.org iburst
-
[root@pt ~]# systemctl start ntpd.service
-
[root@pt ~]# systemctl enable ntpd.service
-
[root@pt ~]# firewall-cmd --permanent --zone=public --add-port=123/udp
-
[root@pt ~]# firewall-cmd --zone=public --add-port=123/udp
-
[root@pt ~]# firewall-cmd --permanent --zone=public --add-port=8140/tcp
-
[root@pt ~]# firewall-cmd --zone=public --add-port=8140/tcp
-
3、安装Puppet-Server、启动Puppet-Server
-
[root@pt ~]# yum -y install ruby
-
[root@pt ~]# wget https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm
-
[root@pt ~]# rpm -ivh puppetlabs-release-pc1-el-7.noarch.rpm
-
[root@pt ~]# yum -y clean all
-
[root@pt ~]# yum -y update
-
[root@pt ~]# yum install puppetserver –y
- //Puppet默认使用JVM内存大小2G,如调整编辑/etc/sysconfig/puppetserver文件
-
[root@pt ~]# vim /etc/sysconfig/puppetserver
- //确定下面的参数
JAVA_ARGS="-Xms2g -Xmx2g -XX:MaxPermSize=256m"
- //确定下面的参数
-
[root@pt ~]# vim /etc/profile
PATH=/opt/puppetlabs/bin:$PATH //第52行 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
-
[root@pt ~]# systemctl enable puppetserver
-
[root@pt ~]# reboot
-
4、安装Puppet-Agent
-
1、先配置IP地址和主机名
- [root@c65 桌面]# cat /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM==“net”, ACTION==“add”, DRIVERS==“?*”, ATTR{address}==“00:0c:29:bd:a1:6c”, ATTR{type}==“1”, KERNEL==“eth*”, NAME=“eth0“ //复制MAC址
- [root@c65 桌面]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 HWADDR=00:0C:29:BD:A1:6C //保持与UDEV记录一致 ONBOOT=yes BOOTPROTO=static IPADDR=172.16.8.101 NETMASK=255.255.255.0 GATEWAY=172.16.8.2 DNS1=114.114.114.114
- [root@c65 桌面]# vim /etc/sysconfig/network
HOSTNAME=c65.sevenwin.org
- [root@c65 桌面]# vim /etc/hosts
172.16.8.165 c65.sevenwin.org c65 172.16.8.172 pt.sevenwin.org pt
- [root@c65 桌面]# cat /etc/udev/rules.d/70-persistent-net.rules
-
2、配置任务计划
- echo "00 */1 * * * root /usr/sbin/ntpdate 172.16.8.100;/sbin/hwclock -w" >> /etc/crontab
- 每小时第0分钟以root身份运行ntpdate命令,向172.16.8.100主机请求时间信息
- ntpdate 172.16.8.100
- 需要一段时间后才能获取到时间
- echo "00 */1 * * * root /usr/sbin/ntpdate 172.16.8.100;/sbin/hwclock -w" >> /etc/crontab
-
3、安装Puppet-Agent
- [root@c65 ~]# wget https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm
- [root@c65 ~]# rpm -Uvh puppetlabs-release-pc1-el-6.noarch.rpm
- [root@c65 ~]# yum -y install ruby
- [root@c65 ~]# yum -y clean all
- [root@c65 ~]# yum -y update
- [root@c65 ~]# yum install puppet-agent
-
4、配置Puppet
- [root@c65 ~]# vim /etc/profile
PATH=/opt/puppetlabs/bin:$PATH export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
- [root@c65 ~]# vim /etc/puppetlabs/puppet/puppet.conf
[main] certname = c65.sevenwin.org server = pt.sevenwin.org environment = production runinterval = 30
- puppet cart list --all
- 检查证书
- reboot
- [root@c65 ~]# vim /etc/profile
-
5、启动并测试Puppet
- 在客户端启动Puppet代理
- [root@c65 ~]# service puppet start
- [root@c65 ~]# puppet agent -t
- 申请证书失败,到服务器端发放证书
- 在服务端签发指定客户端证书
- [root@pt ~]# puppet cert sign c65.sevenwin.org
- [root@pt ~]# puppet cert list --all
- 在客户端启动Puppet代理2
- puppet agent -t
- 在客户端启动Puppet代理
-
6、配置Puppet开发环境(统一控制客户端)
- [root@pt ~]# wget http://download.puppetlabs.com/puppet/puppet.vim -P /usr/share/vim/vim74/plugin
- [root@pt ~]# vim .etc/puppetlabs/code/environments/production/manifests/site.pp
- site.pp是puppetmaster的第一执行脚本
- 其他的脚本需要通过site.pp来调用
node default{ file{ "/tmp/helloworld.txt": content => "Hello World !\n"; } }
- default:指定所有客户端
- [root@c65 ~]# puppet agent -t
- [root@c65 ~]# cat /tmp/helloworld.txt
-
-
5、puppet的工作原理
-
6、puppet的基本语法
- puppet的代码构成:资源:资源之属性
- 属性包括:type|title|其它
- 不同的标题表示不同的资源
- 每个属性键值后都有一个都好,最后一个属性键值对后面可以使用逗号或分号
- 资源默认值
- 为某类资源制定一个默认的参数;使用没有标题的大写资源首字母方式
- 格式:Type{属性 => 值,..,属性=>值}
- 为某类资源制定一个默认的参数;使用没有标题的大写资源首字母方式
- 属性包括:type|title|其它
- 典型的资源结构
- 变量的定义和引用
- 数组的定义和使用
- puppet使用[]来定义数组,其中的内容由逗号分割,且由双引号括起来
- puppet使用[]来定义数组,其中的内容由逗号分割,且由双引号括起来
- 类的定义和使用
- 类是一个资源的集合,代表节点上一个单独的配置项目
- 类的继承
- 类是一个资源的集合,代表节点上一个单独的配置项目
- 函数(define)
- 资源之间的依赖关系
- before:在某个资源之前执行
- after:在某个资源之后执行
- require:某个资源必须存在或者正确执行后,才执行响应的资源
- 资源之间触发更新
- notify:用来通知某个资源进行更新
- subscribe:该资源有更新时,通知另一个资源执行相应的操作
- 模块
- 如果你配置的应用、守护进程、或函数包含很多类、文件或模板,最简单的办法就是将这些资源放到一个包里.
- 使用puppet管理的时候,会根据业务进行划分,将其分为web、db、mencache等,为了方便统一管理,就可以使用模板,针对不同业务类型定义标准化的配置
- 模板应用案例
- 1、创建mariadb目录
- [root@pt ~] mkdir -p /etc/puppetlabs/code/modules/mariadb/{manifests,files,templates}
- 2、创建init.pp文件
- [root@pt ~] cd /etc/puppetlabs/codee/modules/mariadb/
- [root@pt ~] vim manifests/init.pp
class mariadb{ package{ 'mariadb-server' : ensure => installed, } service{ 'mariadb.service' : ensure => running, ensure => true, start => '/usr/bin/systemctl start mariadb.service', restart = '/usr/bin/systemctl restart mariadb.service', stop => '/usr/bin/systemctl stop mariadb.service', require => Package['mariadb-server'], } }
- 3、定义一个节点,并使用该模块
- [root@pt ~] vim /etc/puppetlabs/code/environments/prodution/manifests/site.pp
node default{ include mariadb }
- [root@pt ~] vim /etc/puppetlabs/code/environments/prodution/manifests/site.pp
- 4、到客户端测试
- rpm -qa | grep mariadb 检查有无mariadb包(无)
- puppet agent --server pt.sevenwin.org
- puppet agent -t --noop
- rpm -qa | grep mariadb
- 包比较大,等待一段时间,即可安装完成
- 1、创建mariadb目录
- puppet的代码构成:资源:资源之属性