Puppet的安装部署,后续使用下面三台机器演示,为了演示效果主机名也采用idc+用途来表示.

192.168.30.134  puppet  Puppet Server端

192.168.30.131  sh-web1  Web Server

192.168.30.132  sh-proxy2  Proxy Server

puppet 使用支持两种方式:

1、单机使用 (这种可以忽略)

2、master/agent (标准使用)

部署前关系防火墙:

关闭selinux内核防火墙:

#sed '/^SELINUX/s/=.*/=disabled/g' /etc/sysconfig/selinux -i

关闭iptables防火墙:

    # iptables -F# /etc/init.d/iptables save# chkconfig iptables off

系统默认yum不使用,配置阿里的镜像yum源.(百度搜索下"阿里镜像")

本地系统Cebtos6.5,所以使用centos6的镜像yum源.

puppet server和两台应用服务器共三台机器依次执行下面的指令:

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

修改yum源文件的release版本:

cd /etc/yum.repos.d
vim CentOS-Base.repo

注意:修改$releasever(版本)为6,共修改了20处,可以使用yum安装软件包了.

puppet 软件包安装:

puppet server和agent客户端安装epel-release源

 # rpm -ivh http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm

puppet server端安装puppet-server:

 # yum install puppet-server puppet -y

puppet agent客户端安装puppet:

 #yum install puppet -y

查看三台机器安装的puppet版本:

# puppet -V

3.8.7

疑问?--如果puppet server 是3.8,那么puppet agent是 2.6能正常运行吗?

注释:

第一点:最常见的Puppet部署模型是客户端-服务端模型。许多人询问是否能使用不同的Puppet版本作为master和agent。答案是可以,但前提是要遵照一些注意事项。第一点要注意的是master的版本一定要高于agent。例如,你可以将一个0.24.8版本的agent连接到一个2.6.0版本的master,但是反过来不行。

第二点:要注意的是,agent的版本越老,在与新版本的master搭配时正确运行的可能性就越小。一个0.20.0版本的agent搭配一个2.6.0的master基本不可能正确工作。通常,0.24.x版的agent都能正常连接到2.6.x和0.25.x版本的master并且工作正常。更新版本的master就可能无法完全兼容早期的agent,一些功能和特性可能会出现异常。

最后,将2.6.x或更新版本的master与0.24.x及早期版本的agent混合使用意味着你无法获得2.6.x版本提供的全部性能提升。0.24.x版的agent依然会使用较慢的XML-RPC传输层来进行通讯,从而无法利用新的REST接口。

Svn + Puppet(结合svn版本控制更新puppet Server)

备注:主要是写下怎么在windows使用svn控制修改/删除/提交更新到puppet server,方便大家参考:

备注--svn的安装部署,这块简单写下svn的版本控制,如果你想使用svn+apache或者web访问svn版本,控制权限等,之前写过一篇 <基于submin 来管理Subversion仓库> ,推荐使用submin 感觉自带的功能比apache丰富点,可以参考.

svn软件包安装:

# yum install subversion

#创建仓库目录:

# mkdir /data/puppet_co -p
# svnadmin create /data/puppet_co

#配置svn仓库/权限等.

cd /data/puppet_co/conf
[root@puppet conf]# ls
authz  passwd  svnserve.conf
[root@puppet conf]# cat svnserve.conf | grep -v '^#'
[general]
auth-access = write #通过验证的用户可以读和写
auno-access = read #匿名登陆下可以只读文件,即:文件修改后无法提交到服务器
password-db =password #用户保存文件的名称
authz-db =authz #权限管理文件
realm = /data/puppet_co # 认证空间名,版本库所在目录
[sasl]

注释:

版本库目录格式:

[<版本库>:/项目/目录]

@<用户组名> = <权限>

<用户名> = <权限>

[root@puppet conf]# cat authz | grep -v '^#' | grep -v '^$'
[aliases]
[groups]
#新增了下面三行
[/]
xiaomeng = rw
* =
[root@puppet conf]# cat passwd | grep -v '^#'
#新增下面2行
[users]
xiaomeng=123456

启动svn版本库:

# svnserve -d -r /data/puppet_co/

stop svn:

#pkill svn即可

svn版本库测试,验证版本库是否搭建成功:

清理svn库的用户认证信息:

多次调试svn库,想清除svn库认证信息,参考下图:

将/etc/puppet目录下的(文件/目录)等导入到svn版本库.

# svn import /etc/puppet/ file:///data/puppet_co -m "rsync puppet"

在windows客户端svn update更新查看:

#将/etc/puppet目录下的资源清理掉,从svn版本库同步更新至/etc/puppet

[root@puppet puppet]# rm -rf *
[root@puppet puppet]# svn checkout svn://192.168.30.134 /etc/puppet/

#更新完成将发现每个目录下均有.svn的目录,记录此次版本.

[root@puppet puppet]# ls -a
.  ..  auth.conf  environments  fileserver.conf  manifests  modules  puppet.conf  .svn
[root@puppet puppet]# cd environments/
[root@puppet environments]# ls -a
.  ..  example_env  .svn

部署SVNhooks

目的:方便client客户端修改svn版本库代码,实时同步更新至/etc/puppet目录下.

1、设置pre-commit

设置pre-commit钩子可以提交文件到SVN服务器之前对puppet语法进行检查,语法通过则提交成功,语法错误则提交失败。

# cd /data/puppet_co/hooks
[root@puppet hooks]# ls
post-commit.tmpl  post-revprop-change.tmpl  pre-commit.tmpl  pre-revprop-change.tmpl  start-commit.tmpl
post-lock.tmpl    post-unlock.tmpl          pre-lock.tmpl    pre-unlock.tmpl

备注--(本来想借公司脚本使用下,发现公司配的有点复杂,300多行脚本篇幅太大,公司使用的时一个php的脚本文件,忽略下面这段.仅参考)

# cat pre-commit | grep -v '^#'
php -f /var/svnroot/pre-commit.php "$1" "$2"
if [ $? -eq 1 ]; thenexit 1
elseexit 0
fi

查看下这个文件发现脚本文件太长了,看的脑袋晕,就自己找了个,参考下面:

[root@puppet hooks]# cp pre-commit.tmpl pre-commit
[root@puppet hooks]# chmod 774 pre-commit
[root@puppet hooks]# cat pre-commit
#!/bin/bash
#SVN pre-commit hook to check Puppet syntax for .pp files
export PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
REPOS="$1"
TXN="$2"
tmpfile=`mktemp`
for file in $(svnlook changed -t "$TXN" "$REPOS" |awk '/^[^D].*\.pp$/ {print $2}')
dosvnlook cat -t $TXN $REPOS $file > $tmpfileif [ $? -ne 0 ]thenecho"Warning: Failed to checkout $file" >&2fipuppet parser validate $tmpfile >>/var/log/puppet/svn_pre-commit.log 2>&1if [ $? -ne 0 ]thenecho "Puppet syntax error in $file" >> /var/log/puppet/svn_pre-commit.log 2>&1exit 1fi
done

2、设置post-commit:

设置post-commit钩子可以在正确提交文件至SVN服务器之后,puppetmaster的模块目录/etc/puppet/modules会自动从SVN服务器上update最新的版本库到本地。

[root@puppet hooks]# cp post-commit.tmpl post-commit
[root@puppet hooks]# chmod 774 post-commit
[root@puppet hooks]# cat post-commit
#!/bin/bash
#POST-COMMIT HOOK
REPOS="$1"
REV="$2"
export LANG=en_US.UTF-8
SVN=/usr/bin/svn
PUPPET_DIR=/etc/puppet
$SVN update $PUPPET_DIR --username xiaomeng --password 123456 >> /var/log/puppet/svn_post-commit.log
[root@puppet hooks]#
[root@puppet hooks]# pwd
/data/puppet_co/hooks
[root@puppet hooks]# ls
post-commit       post-lock.tmpl            post-unlock.tmpl  pre-commit.tmpl  pre-revprop-change.tmpl  start-commit.tmpl
post-commit.tmpl  post-revprop-change.tmpl  pre-commit        pre-lock.tmpl    pre-unlock.tmpl

测试svn 钩子是否实时同步即有效:

默认/etc/puppet目录下只有安装完成puppet以后的文件。

[root@puppet ~]# ls /etc/puppet/
allow.conf.txt  auth.conf  environments  fileserver.conf  manifests  modules  puppet.conf

win客户端使用svn 提交一个新增的文件,查看puppet svn端/etc/puppet 目录是否同步到最新的文件.

登陆服务器查看puppet server端下是否同步更新到最新提交的文件.

[root@puppet ~]# ls /etc/puppet/
allow.conf.txt  auth.conf  environments  fileserver.conf  manifests  modules  puppet.conf  test.txt

转载于:https://blog.51cto.com/215687833/1962448

Puppet安装部署篇(一)相关推荐

  1. Jenkins安装部署篇

    Jenkins安装部署 1.首先下载Jenkins.war包,官网:https://jenkins.io/download/,这块用的比较老,为了和配管的版本一致. 2.部署好Jdk和Tomcat 3 ...

  2. 对比homeassistant和智汀家庭云之docker安装部署篇

    本篇教程,带你了解Home Assistan和智汀家庭云的初步安装部署,如同很多开源项目,Home Assistant 就是常见的一款,作为国外开源软件,需要去阅读大量的英文文档,在编辑器里编辑自己的 ...

  3. 热璞数据库HotDB开放下载先知——安装部署篇三(自动部署)

    自动部署为管理平台在界面中支持自动化安装部署计算节点集群的功能.目前管理平台从V2.5.0及以后拥有"集群部署"."单机部署"两个自动化安装功能."集 ...

  4. Cobbler部署指南之Cobbler安装操作系统篇

    ##################################################### ##如有转载,请务必保留本文链接及版权信息 ##欢迎广大运维同仁一起交流linux/unix ...

  5. puppet完全攻略(一)puppet应用原理及安装部署

    puppet完全攻略(一)puppet应用原理及安装部署 puppet简介   puppet官方网站:http://www.puppetlabs.com/ puppet中文wiki:http://pu ...

  6. puppet应用原理及安装部署

    一.简介及系统架构 二.环境介绍 三.安装Puppet 四.配置Puppet-dashboard 五.配置Puppet Kick puppet简介 puppet官方网站:http://www.pupp ...

  7. 群晖python套件包_利用群晖Docker安装ubuntu16.04搭建python网站服务器(部署篇)

    在帖子<利用群晖Docker安装ubuntu16.04搭建python网站服务器(安装篇)(地址:http://www.cirdown.com:81/thread-185-1-1.html)&g ...

  8. Weblogic11g安装部署-winserver篇

    Weblogic11g安装部署-winserver篇 一.安装weblogic11g 1.1找到下载好的weblogic11g 1.2打开安装程序wls1033_oepe111150_win32.ex ...

  9. Nginx实战基础篇一 源码包编译安装部署web服务器

    Nginx实战基础篇一 源码包编译安装部署web服务器 版权声明: 本文遵循"署名非商业性使用相同方式共享 2.5 中国大陆"协议 您可以自由复制.发行.展览.表演.放映.广播或通 ...

最新文章

  1. 人工智能下一个前沿:可解释性
  2. 限定filesize的数据泵导入导出操作案例
  3. Unsupported major.minor version 51.0解决办法
  4. python-非负矩阵分解-NMF
  5. 测试python第二周_python第二周作业
  6. Flash--元件和实例
  7. 家用简单电线路图_电师傅电工总结的家用电器,漏电开关,电线配置知识,简单实用...
  8. matlab 运算程序时间计算
  9. eclipse deploy path 修改
  10. linux usb摄像头 监控软件,Linux下的motion detection(最简单的办公室监控系统)
  11. 实验5 数独游戏界面设计
  12. C++——最长公共子串
  13. linux把程序放入后台执行,linux将程序放到后台执行
  14. 2021年中国开源优秀人物揭晓
  15. 数论12——浅谈指数与对数
  16. 大众点评Cat--架构分析
  17. BlockingQueue drainTo()
  18. git 创建远程新分支
  19. 【数据结构】单链表(增、删、查、改)的实现 [初阶篇_ 复习专用]
  20. NFT数藏系统NFT数字臧品系统整体解决方案

热门文章

  1. iis7.5 php虚拟站点目录设置,windows2008中IIS7.5环境下 Fastcgi模式PHP配置教程
  2. selenium中Chrome和Firefox浏览器驱动的使用和版本对应
  3. java实验的总结_java实验总结
  4. 四剑客查找字符_Shell四剑客Grep
  5. python查找指定文件夹_python实现在目录中查找指定文件的方法
  6. 鸿蒙报名什么时候推送,鸿蒙系统手机版什么时候推送?鸿蒙系统手机版推送时间详解...
  7. cacti监控java,Cacti监控tomcat的方法
  8. android 智能家居 pdf,智能家居项目化教程.pdf
  9. 安卓学习笔记20:Fragment入门
  10. 【BZOJ2330】【tyvj1785】【codevs2404】糖果,第一次的差分约束