运维自动化之puppet3分钟入门
运维自动化之puppet3分钟入门
几个月前曾因为项目需求而学了点puppet的一些知识,最近因为要给别人讲一下,也就借此博文来做一下回忆,当然了,这个puppet用起来还是很不错的,尤其对我这种懒人来说,如果你需要给多台机器安装同一款软件或是同几款软件,那么学习这个能让你事半功倍,接下来开始学习puppet。那么问题来了:
什么是puppet
本着外事问谷歌,内事问百度的原则,我在百度百科里找到了对其的定义:puppet是一种Linux、Unix、windows平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。puppet把这些系统实体称之为资源,puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。puppet采用C/S星状的结构,所有的客户端和一个或几个服务器交互。每个客户端周期的(默认半个小时)向服务器发送请求,获得其最新的配置信息,保证和该配置信息同步。每个puppet客户端每半小时(可以设置)连接一次服务器端, 下载最新的配置文件,并且严格按照配置文件来配置服务器. 配置完成以后,puppet客户端可以反馈给服务器端一个消息. 如果出错,也会给服务器端反馈一个消息。
puppet工作原理
- 客户端调用factor探测主机一些变量,将信息通过ssl连接发送到服务器端。
- 服务器端检测客户端主机名,找manifest里对应的node配置,并解析生成中间代码“伪代码”发送给客户端。
- 客户端接收到“伪代码”并执行,把执行的结果发给服务器端,服务器将结果写入日志。
puppet安装
首先声明一下:我用的系统都是CentOS6.5。也就是说我的一切测试运作都是基于CentOS6.5来进行的。
在安装前需要对hostname进行修改:
[root@controller ~]# hostname 你要起的主机名 //中间有空格,即时生效
[root@controller ~]# vim /etc/sysconfig/network //更改主机名,重启生效
[root@controller ~]# vim /etc/hosts //把你要管理的机器加进去,格式 IP 主机名
接下来,就是安装了,选一台当服务器,其余的当客户端。当然,所有的都有一个库需要安装:
rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm
然后,服务器端执行下面的安装指令:
yum install puppet-server
客户端执行下面的安装指令:
yum install puppet
至此,安装结束,没错,就是这么简单~
不过,你难道以为现在就可以使用了?NO,当然没那么容易,接下来的一步将会至关重要,它的成败将关系到你能否使用这个自动运维的工具。
puppet的认证
首先,在客户端执行命令:
puppet agent --test
然后,认证请求会出现在服务器端,使用以下命令进行查看:
puppet cert --list
最后,执行以下命令签署认证:
puppet cert --sign hostname
PS:hostname为你自己设置的,请写上自己的hostname。
如果走到这一步你还没出错,恭喜你,你已经成功了90%。不过如果每台都需要一步一步的认证的话,是不是很麻烦,对,简直太麻烦了!那么有没有简单的方法呢?回答是肯定的,全部发送请求后统一认证:
puppet cert --sign -all
可是,还是感觉好麻烦的说,那么有没有不用签署认证的呢?答案依然是必然的。修改配置文件/etc/puppet/autosign.conf,在里面加入hostname即可,若无此文件,可自行创建,在这里,告诉大家一个小窍门:hostname可以起成*.puppet.com,这样的话在自动部署里面直接写成
*.puppet.com,很是方便,一般人我不告诉他。
puppet实战
既然部署完成了,当然要玩一下,下面就举个小例子来实战一下:
[root@controller ~]# vim /etc/puppet/manifests/site.pp
里面内容如下:
node 'agent.puppet.com' {
package {
"mysql":
ensure=>installed,
allow_virtual=>false,
source=>"http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm";}
}
然后在客户端执行:
puppet agent --test
即可在客户端安装mysql。
教程至此结束,若想学习更多,请移步https://puppetlabs.com/。
PS:本博客欢迎转发,但请注明博客地址及作者~
博客地址:http://www.cnblogs.com/voidy/
<。)#)))≦
运维自动化之puppet3分钟入门的更多相关文章
- 运维自动化之SALTSTACK简单入门
运维自动化之SaltStack简单入门 饱食终日而无所事事,是颓也,废也.但看昨日,费九牛二虎之力除一BUG便流连于新番之中,不知东方之既黑,实乃颓颓然而荒废矣.故今日来缀一文以忏昨日之悔. Salt ...
- Ansible运维自动化工具19个常用模块使用实例【转】
一.模块列表 1.setup 2.ping 3.file 4.copy 5.command 6.shell 7.script 8.cron 9.yum 10.service 11.group 12.u ...
- 运维自动化之salt笔记
1:saltstack的基本介绍 2:salt的安装 1:服务端1:安装2:配置文件3:运行4:注意事项2:客户端1:安装2:配置文件3:运行4:注意事项 3:salt的使用: 1:基础知识1:tar ...
- puppet运维自动化之用户管理
系统管理员离不开账户管理,账户管理,密码管理,开发机器,测试机器,线上机器,都需要创建用户,并给与相关用户的权限.你如果要创建100个,1000个账户和密码,你会不会疯掉,如何在1分钟完成百上千个账户 ...
- 运维自动化之ansible的安装与使用 转
运维自动化之ansible的安装与使用 随着服务器数量的增长,我们需要一个批量工具去提高工作效率,之前用的是puppet,ansible的简单,适用让我眼前一亮,决定写一篇ansible从安装到基本配 ...
- CentOS 下运维自动化 Shell 脚本之 expect
CentOS 下运维自动化 Shell脚本之expect 一.预备知识: 1.在 Terminal 中反斜杠,即 "" 代表转义符,或称逃脱符.("echo -e与pri ...
- Ansible 运维自动化 ( 配置管理工具 )
背景 出差背景,要搞项目的自动化部署.因为只直接对接生产分发,机器又非常多,这样以往使用的bat只能作为应急方案了,还是得考虑使用专业化的工具来做这个事情! 当下有许多的运维自动化工具( 配置管理 ) ...
- 运维自动化之系统部署 PXE(二)
PXE介绍 Preboot Excution Environment 预启动执行环境 Intel公司研发 基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载映像,并由此支持 ...
- Ansible运维自动化
Ansible运维自动化 一.Ansible-playbook的初步使用 playbook的使用,playbook可以把ansible的模块进行组合 ln -s /usr/local/python/b ...
随机推荐
- 解决移动端浏览器页面 X轴横向滚动条问题
写web端页面的时候,总是会出现横向滚动条,即 X 轴滚动条,导致页面左右滑来滑去. 即使设置了 body,html {overflow-x:hidden;width:100%;} 也无法生效. 解决 ...
- Jscript 命名规范
变量命名都以类型前缀+有意义的单词组成,用驼峰式命名法增加变量和函式的可读性.例如:sUserName,nCount. 前缀规范:每个局部变量都需要有一个类型前缀,按照类型可以分为:s:表示字符串.例 ...
- LAMP stack-5.6.22 (OpenLogic CentOS 7.2)
平台: CentOS 类型: 虚拟机镜像 软件包: apache2.4.20 mysql5.6.30 php5.6.22 apache application server basic softwar ...
- graylog插件的安装
什么是插件和插件的作用我就不说了,大家应该都知道了. 安装方法是打开下面选择项 进去后出现如下界面 选择事先下载好的插件后,点击上传.这里以nginx日志插件为例 之后查看效果,发现对应的过滤 ...
- java Vamei快速教程04 封装和接口
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 总结之前的内容,对象(object)指代某一事物,类(class)指代象的类型.对 ...
- 在SAP云平台的CloudFoundry环境下消费ABAP On-Premise OData服务
我的前一篇文章 使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise系统里的函数介绍了在SAP云平台的Neo环境下如何通过SAP Cloud Conne ...
- java中list强转为map类型
起因:读取数据库文件的测试用例,测试用例需要存放到一个map中,方便下次调用, 读取的内容返回的内容存放在一个list中,并且数据内容是key=value的形式,最开始使用切片方式,做了很多无用功,后 ...
- noip模拟赛#42
T1:给len=1e5的数字串,操作为将某个位置起始的后缀搬到最前面.求有多少个不重复的比原串大和多少个小. =>maya这铁定可以找出些什么规律来.然后就over 了. =>字符串has ...
- Mybatis-动态 SQL语句
if标签 判断语句,用户单条件分支判断 where标签 为了简化上面where 1=1的条件拼装,我们可以采用标签来简化开发 同 foreach标签 场景:传入多个 id 查询用户信息 标签用于遍历集 ...
- TypeScript 编译选项
编译选项 选项 类型 默认值 描述 --allowJs boolean false 允许编译javascript文件. --allowSyntheticDefaultImports boolean m ...