运维自动化之puppet3分钟入门

  几个月前曾因为项目需求而学了点puppet的一些知识,最近因为要给别人讲一下,也就借此博文来做一下回忆,当然了,这个puppet用起来还是很不错的,尤其对我这种懒人来说,如果你需要给多台机器安装同一款软件或是同几款软件,那么学习这个能让你事半功倍,接下来开始学习puppet。那么问题来了:

什么是puppet

  本着外事问谷歌,内事问百度的原则,我在百度百科里找到了对其的定义:puppet是一种Linux、Unix、windows平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。puppet把这些系统实体称之为资源,puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。puppet采用C/S星状的结构,所有的客户端和一个或几个服务器交互。每个客户端周期的(默认半个小时)向服务器发送请求,获得其最新的配置信息,保证和该配置信息同步。每个puppet客户端每半小时(可以设置)连接一次服务器端, 下载最新的配置文件,并且严格按照配置文件来配置服务器. 配置完成以后,puppet客户端可以反馈给服务器端一个消息. 如果出错,也会给服务器端反馈一个消息。

puppet工作原理

  1. 客户端调用factor探测主机一些变量,将信息通过ssl连接发送到服务器端。
  2. 服务器端检测客户端主机名,找manifest里对应的node配置,并解析生成中间代码“伪代码”发送给客户端。
  3. 客户端接收到“伪代码”并执行,把执行的结果发给服务器端,服务器将结果写入日志。

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分钟入门的更多相关文章

  1. 运维自动化之SALTSTACK简单入门

    运维自动化之SaltStack简单入门 饱食终日而无所事事,是颓也,废也.但看昨日,费九牛二虎之力除一BUG便流连于新番之中,不知东方之既黑,实乃颓颓然而荒废矣.故今日来缀一文以忏昨日之悔. Salt ...

  2. 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 ...

  3. 运维自动化之salt笔记

    1:saltstack的基本介绍 2:salt的安装 1:服务端1:安装2:配置文件3:运行4:注意事项2:客户端1:安装2:配置文件3:运行4:注意事项 3:salt的使用: 1:基础知识1:tar ...

  4. puppet运维自动化之用户管理

    系统管理员离不开账户管理,账户管理,密码管理,开发机器,测试机器,线上机器,都需要创建用户,并给与相关用户的权限.你如果要创建100个,1000个账户和密码,你会不会疯掉,如何在1分钟完成百上千个账户 ...

  5. 运维自动化之ansible的安装与使用 转

    运维自动化之ansible的安装与使用 随着服务器数量的增长,我们需要一个批量工具去提高工作效率,之前用的是puppet,ansible的简单,适用让我眼前一亮,决定写一篇ansible从安装到基本配 ...

  6. CentOS 下运维自动化 Shell 脚本之 expect

    CentOS 下运维自动化 Shell脚本之expect 一.预备知识: 1.在 Terminal 中反斜杠,即 "" 代表转义符,或称逃脱符.("echo -e与pri ...

  7. Ansible 运维自动化 ( 配置管理工具 )

    背景 出差背景,要搞项目的自动化部署.因为只直接对接生产分发,机器又非常多,这样以往使用的bat只能作为应急方案了,还是得考虑使用专业化的工具来做这个事情! 当下有许多的运维自动化工具( 配置管理 ) ...

  8. 运维自动化之系统部署 PXE(二)

    PXE介绍 Preboot Excution Environment 预启动执行环境 Intel公司研发 基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载映像,并由此支持 ...

  9. Ansible运维自动化

    Ansible运维自动化 一.Ansible-playbook的初步使用 playbook的使用,playbook可以把ansible的模块进行组合 ln -s /usr/local/python/b ...

随机推荐

  1. 零基础逆向工程32_Win32_06_通用控件_VM_NOTIFY

    标准控件与可用控件 windows标准控件,标准控件总是可用的 Static Group Box Button Check Box Radio Button Edit ComboBox ListBox ...

  2. Eucalyptus学习汇总

    Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems (Eucalyptus) 是一种开 ...

  3. 关于Vue生命周期的小记录

    1.created的时候才能获取到data中的属性和methods中的方法 2.特殊情况:beforeCreate中如果是进行了ajax请求,在请求回调中对属性赋值是可以的,因为页面渲染速度比ajax ...

  4. JavaScript_HTML DEMO_1_概念

    HTML DOM - 文档对象模型 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). 1. 通过可编程的对象模型,JavaScript获得了足够的能力来创 ...

  5. jquery实现加载更多效果

    情况是当滑动条滑动到最底部的时候,数据显示出一部分的更多 思路:获取到浏览器屏幕的高度client,文档的高度h和滑动距离顶部的距离scroll,当h<=client+scroll的时候就是滑动 ...

  6. 常用宏OC

    #ifndef MacroDefinition_h #define MacroDefinition_h //-------------------获取设备大小--------------------- ...

  7. VM安装centOS6.9

    1.首先要下载一个centos的iso镜像,用VMware创建一个空白硬盘. 2.创建完毕再设置里面挂载iso的centos系统文件. 3.进入到这个页面: 说明: ①install or upgra ...

  8. spark dataframe函数编程

    DataFrame 的函数 Action 操作 1. collect() ,返回值是一个数组,返回dataframe集合所有的行 2. collectAsList() 返回值是一个Java类型的数组, ...

  9. 调试工具DEBUG的使用(8086)

    有关CPU和存储单元的概念在前一节我们已经了解,那么如何观察实际机器内部的情况呢?能不能看到具体的寄存器.标志.存储单元的内容呢?可不可以修改和控制它们呢? DEBUG这个有力工具,就可以深入到机器内 ...

  10. fdisk - Linux分区表操作工具软件

    总览 fdisk [-u]设备名 fdisk -l [-u] [设备名 ...] fdisk -s分区 ... fdisk -v 描述 硬盘可以被分成一个或多个逻辑磁盘,称为 分区. 这些分区信息都存 ...