puppet学习之使用git实现puppet版本控制
本文通过创建用户资源的例子介绍为多台agent同时添加用户账户、git仓库的创建、puppet加入git仓库、通过远程管理主机管理配置文件及文件版本的回滚处理。
一、系统环境
系统平台:Centos6.6_x86_64
主机规划:
192.168.115.21 puppet1.hnr.com master
192.168.115.22 puppet2.hnr.com agent
192.168.115.23 puppet3.hnr.com agent
192.168.115.24 puppet4.hnr.com 远程管理主机
二、准备环境
实现agent端自动添加指定的用户
1.服务端上配置
创建user模块,模块目录为user,user类里有一个user资源目的是在agent主机上创建一个指定uid的用户
# mkdir -p/etc/puppet/modules/user/{manifests,templates,files}
# vi /etc/puppet/modules/user/manifests/init.pp
class user {
user { ‘hnr‘:
ensure => present,
uid => ‘520‘,
}
}
# mkdir /etc/puppet/manifests/nodes
在nodes目录下创建客户端文件
修改site.pp文件
# vi /etc/puppet/manifests/site.pp
import "nodes/*.pp"
2.客户端puppet2上运行如下命令
此时,在客户端puppet2上已经创建好hnr用户
puppet默认30分钟会推送数据到客户端上,从日志上可以看出数据已经推送到puppet3上
三、git实现puppet版本控制
在puppet服务器上配置
1.安装配置git
# yum install git-daemon git
2.初始化puppet服务端git仓库
创建puppet repo目录
# mkdir -p /data/git/puppet.git
创建git仓库
# cd /data/git/puppet.git
# git --bare init
启动git,为了远程管理主机连接
# git-daemon --base-path=/data/git --detach --listen=0.0.0.0 --export-all --enable=receive-pack --enable=upload-pack --enable=upload-archive
3.将puppet加入git
将puppet master上的/etc/puppet目录加入仓库
# cd /etc
仓库克隆过程目录下的数据会删除,所以事先将/etc/puppet目录下的数据备份到/tmp目录下
# mv puppet/* /tmp/puppet
# git clone git://127.0.0.1/puppet.git
# cd /etc/puppet
# cp /tmp/puppet/* .
# git add *
# git commit -m "Add puppet to git repo"
# git push -u origin master
仓库已创建好,包含了puppet的配置文件及清单
4.在管理主机创建副本,在/tmp目录下创建
# cd /tmp/
# git clone git://192.168.115.21/puppet.git
至此,管理主机上git仓库副本已经创建完成
修改文件并提交,增加一个testpuppet用户指定shell为/bin/sh
# vi /tmp/puppet/modules/user/manifests/init.pp
修改完后提交
# git add /tmp/puppet/modules/user/manifests/init.pp
# git commit -m "add a testpuppet user"
# git push
5.在puppet master的/etc/puppet目录下
# git pull
6.在puppet2客户端上执行如下命令
至此,puppet2上已经创建好testpuppet用户
四、文件版本回滚
1.创建标签
# git tag -m ‘first release‘ 1.0.0
2.修改文件,增加一个用户test2puppet
# git add modules/user/manifests/init.pp
# git commit -m "add test2puppet user"
# git push
3.服务端上也执行了git pull,然后回滚至1.0.0版本
此时,查看文件发现test2puppet用户已经没有