之前搞了一个月zabbix,基本上是能熟练使用了,不过在后来部署的时候发现这玩意在部署的时候机子少还行,机子多了手动安装手会残的。第一反应是用puppet,后来师父直接用puppet搞定了。索性自己也学一波,毕竟这是自动化运维大势所趋,必备技能啊。

  下载链接见http://www.cnblogs.com/weijing24/p/5714850.html

  puppet是c/s结构,有一个服务端和很多客户端。一般运行模式是客户端从服务端拉取指令然后执行。puppet很纠结的一个地方是版本不同导致的命令不同,主要是2.6版本前后的差异巨大,主要差异如下图:

  这里以2.7版本为准,讲一下具体执行过程吧,假设服务端的hostname为puppetmaster、客户端的hostname为agent2

  1、运行服务端

  puppet master

  对,就是这么简单,简单到超乎你的想象,简短的2个单词puppet server就跑起来了,当然第一次推荐用puppet master --no-daemonize --verbose 这是非daemon模式,简而言之就是运行此命令server会在前台运行,你可以看到server启动的整个流程以及agent向server注册的过程

  2、客户端向服务端申请证书

  puppet agent --certname agent2 --server puppetmaster --test

  这里--certname可以不加,因为客户端的hostname就是agent2,在这里加了就是为了说明如果你不想以hostname的名字来注册,你可以使用certname后跟上自己想要的名字去注册。有的文章会使用puppet agent --server puppetmaster --no-daemonize --onetime --verbose --debug这条命令来注册,其实都一样,这个是前台输出日志,报错时方便调试,但是我要说如果你是第一次安装的话,完全不需要使用这种调试模式,你只要确保master开启,且--server后面的主机名(主机名就是puppet server的hostname)写正确,注册基本上不会发生错误。

  理论上注册成功如下图

  

  但是我在安装的时候发生了无法安装的情况,原因是我之前已经安装了

  

  可以看到,我这里注册没有绿色的ssl认证过程,因为我之前已经注册过,虽然在master上已经删除了agent2的证书,但是agent2上自己还留了证书,如下图

  

  知道了原因解决起来就很简单了,删除agent2.pem即可,find /var/lib/puppet/ssl/ -name agent2.pem -delete

  3、服务端签发证书

  

  上面的图中可以看到,agent2前面没有+,agent1前面有+,因为agent1已经在服务端签发证书了,那么如何签发证书呢

  

  也很简单,一条命令就可以了。

  

  整个c-s的第一次交互就这么完成了。可以看到我签发了三个证书,agent1就是puppet master上使用了--certname参数生成的,不加就是最下面的puppetmaster,以下命令作为对比可以看出不同:

  puppetmaster  puppet agent -server puppetmaster --test

  agent1  puppet agent --certname agent1 --server puppetmaster --test

  agent2  puppet agent --server puppetmaster --test

  

  

  在这里还是要提几句,如果服务端注销了某个客户端证书,那么相对应的客户端也需要把本地的证书删除,否则下次就会和我上面的情况一样,无法注册。

puppet版本的差异图转自http://www.cnblogs.com/taosim/articles/3336986.html

puppet学习笔记(一)的更多相关文章

  1. Puppet学习笔记(CentOS6.3+Puppet3.01)

    Puppet学习笔记(CentOS6.3+Puppet3.01)  技术 Add comments Oct262012 下了决心,好好学习puppet,周末专门去参加一个puppet的培训,难得朋友那 ...

  2. puppet学习笔记(二)

    在puppet安装完成之后我们就可以动手开始第一个puppet实验了,此实验就以批量推送文件为例吧. 1.获取module路径 这里的module就是指一个模块,可以把puppet想象成一个个项目的部 ...

  3. puppet学习笔记

    puppet优势:容易理解.用户较多.门槛低.简单.安装配置文件较少 puppet使用Ruby语言开发,安装puppet需要安装Ruby puppet运行环境:Redhat.Centos.Window ...

  4. <老友记>学习笔记

    这是六个人的故事,从不服输而又有强烈控制欲的monica,未经世事的千金大小姐rachel,正直又专情的ross,幽默风趣的chandle,古怪迷人的phoebe,花心天真的joey——六个好友之间的 ...

  5. MongoDB学习笔记:快速入门

    MongoDB学习笔记:快速入门   一.MongoDB 简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.M ...

  6. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  7. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  8. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  9. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

随机推荐

  1. [移动开发]全面理解UnityUI系统

    随着 Unity 4.6 发布,新 UI 系统终于与大家见面了. RectTransform Unity UI 系统使用 RectTransform 实现基本的布局和层次控制.RectTransfor ...

  2. [CLR via C#]14. 字符、字符串和文本处理

    一.字符 在.NET Framewole中,字符总是表示成16位Unicode代码值,这简化了国际化应用程序的开发. 每个字符都表示成System.Char结构(一个值类型) 的一个实例.System ...

  3. 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型

    [源码下载] 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 常量 变量 基本 ...

  4. php中的常用数组函数(三)(获取数组交集的函数们 array_intersect()、array_intersect_key()、array_intersect_assoc()、array_intersect_uassoc()、array_intersect_ukey())

    这5个获取交集的函数 有 5个对应的获取差集的函数.我是链接. array_intersect($arr1, $arr2); //获得数组同键值的交集 array_intersect_key($arr ...

  5. Json Utils

    import java.util.List;import java.util.Map; import net.sf.json.JSONArray;import net.sf.json.JSONObje ...

  6. Python 学习之进制与编码

    进制 日常生活中,我们最熟悉的数据就是十进制计数.它的数值部分由十个不同的数字符号0.1.2.3.4.5.6.7.8.9来表示,我们把这些数字符号叫做数码,表示十种不同的状态.数码处于不同的位置(或数 ...

  7. 爱你.一万年>>数据库基础

    嗨!最近学习了一项新的技能,学习了数据库的知识,在这里抛砖引玉,给大家说说,望赐教!!>> 01.首先给大家谈谈为什么要使用数据库? 数据库可以看成是一个永久保存数据的仓库. 可以存储大量 ...

  8. 用EF6更新数据库时出现外键错误解决方式

    在“Package Manager Console”中执行update-database命令,出现异常信息: Introducing FOREIGN KEY constraint 'FK_dbo.Pr ...

  9. 【GPU编解码】GPU硬解码---CUVID

    问题描述:项目中,需要对高清监控视频分析处理,经测试,其解码过程所占CPU资源较多,导致整个系统处理效率不高,解码成为系统的瓶颈. 解决思路: 利用GPU解码高清视频,降低解码所占用CPU资源,加速解 ...

  10. 通过原生js添加div和css

    function createStyle(){ return"*{padding:0;margin:0;border:0}.loading{width:640px;height:1024px ...