安装

以在Ubuntu server 14.04.2 TLS 为例:

  • 设置机器名。 编辑/etc/host以修改主机名,因为puppet是基于证书的,证书中包含主机名;

  • 更新包源。

    1. echo -e "deb http://apt.puppetlabs.com/ lucid main\ndeb-src http://apt.puppetlabs.com/ lucid main">>/etc/apt/sources.list.d/puppet.list
  • 对安装源进行一个检验。
    更新失败时才需要执行该命令
    1. apt-key adv --keyserver keyserver.ubuntu.com --recv XXXXXXXX
  • 系统更新 和安装
    1. apt-get update && apt-get dist-upgrade
  • 在控制节点上安装puppetmaster:
    1. apt-get install puppetmaster
  • 在客户端安装puppet:
    1. apt-get install puppet
  • puppet会监听8140端口,如果puppetmaster开启了防火墙需要做以下配置
    1. iptables -A INPUT -p tcp --dport 8140-j ACCEPT
  • 执行命令验证:

    1. netstat -lntup

    root@master:/home/andy# netstat -lntup
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 0.0.0.0:8140 0.0.0.0: LISTEN 27918/ruby
    tcp 0 0 0.0.0.0:22 0.0.0.0:
    LISTEN 21070/sshd
    tcp6 0 0 :::8080 ::: LISTEN 1286/java
    tcp6 0 0 :::22 :::
    LISTEN 21070/sshd
    tcp6 0 0 127.0.0.1:8005 :::* LISTEN 1286/java

  • 验证

  1. 在master上创建一个file资源
  2. 客户端发起验证:
    puppet agent --server xxxx(master) --test
  3. 服务器完成验证:
    puppet cert --list
    pupper cert sign xxx(client)
  4. 再次在客户端发起验证就可以看见验证成功了。

经验总结:

  • Ubuntu 下安装很简单,不需要预先安装ruby等,系统更新后直接安装puppet;
  • 安装完后是不存在site.pp 文件的,需要创建:/etc/puppet/manifests/site.pp,作为站点的主模块配置文件。
    一般的site.pp 很简单,引入Nodes节点下客户端文件即可
    1. import"nodes/*.pp"
  • 关于“模块”
    /etc/puppet/manifests的文件结构:
    1. |-- nodes
    2. |`-- client.pp
    3. `-- site.pp

    client.pp 说明客户节点client需要执行哪些模块。内容是:

    1. node 'client'
    2. {
    3. include stdlib
    4. include sysup
    5. }

    上面说明节点“client”将会执行stdlib 和 sysup 这两个模块(或者称之为功能)。
    上面说的模块,就是你需要puppet做的事情,比如拷贝文件,修改文件,安装package,执行命令等。
    每件“事情”就是一个单独的“模块”。

  • 怎么定义“模块”?
    首先来看文件结构:/etc/puppet/modules
    1. .
    2. |-- ntp
    3. ||-- files
    4. ||-- manifests
    5. ||`-- init.pp
    6. | `-- templates
    7. |-- sim
    8. ||-- files
    9. ||`-- simf.sh
    10. | `-- manifests
    11. |`-- init.pp

    目录/etc/puppet/modules有很多子目录,每个子目录就是你要需要puppet做的一件事情,比如你要安装ntp, 那么你就需要创建一个ntp文件夹,该文件夹下又需要包含manifests(必须),files, templates这三个文件夹。
    在manifests文件夹下,新建一个名叫 init.pp 的文件(必须),这里将详细描述做这件事情的经过。比如 ntp 下的 init.pp:

    1. class ntp
    2. {
    3. package{
    4. "ntp":
    5. ensure=>installed,
    6. }
    7. }

    注意:类名必须和模块名称一致!!!

  • 怎样让puppet 修改node上的文件呢?
    一般的资源 file 只能用来创建,其content属性的内容将会 覆盖 已有文件的内容。
    解决办法是给puppet安装stdlib。
    1. puppet module install puppetlabs-stdlib

    然后使用 stdlib 中的 file_line 资源。 例如:

    1. file_line{"newline":
    2. path=>"/etc/apt/sources.list.d/cloudarchive-kilo.list",
    3. line=>"add a new line",
    4. }

    具体可以参考:stdlib

  • 错误Could not request certificate: SSL_connect returned=1
    1. Error:Couldnot request certificate: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed:[certificate signature failure for/CN=master]

    出现这样的问题只能重新签发证书了,但是在master上删除证书后需要重启puppet才能生效!!
    也要注意主从机器之间时间是否同步的问题。

  • 怎样自动签发证书
    当客户节点增多时,每个节点向主节点申请证书似乎很愚蠢。
    可以设置master自动签发所有的证书,我们只需要在/etc/puppet 目录下创建 autosign.conf 文件并添加下面内容。(不需要修改 /etc/puppet/puppet.conf文件,因为默认的autosign.conf 文件的位置没有修改)
    1. *.example.com

    这样就会对所有来自 example.com 的机器的请求都自动签发证书,见参考

  • 创建user后无法登陆
    使用user资源添加用户时,属性password不是明文,需要用工具grub-md5-crypt 来生成。
    但需要安装 grub, 生成的password用单引号包裹:
    1. user{"andy":
    2. ensure=>"present",
    3. uid=>666,
    4. gid=>666,
    5. password=>'$1$PzftN$XANlscGctdGF3VjXH3k9q0',
    6. home=>"/home/andy",
    7. shell=>"/bin/bash",
    8. managehome=>true,
    9. }
  • 如何主动更新
    节点每次更新都要运行 puppet agent --test, 但是如果上百上千台nodes怎么办?
    可以采用puppet kick 这种 master主动推送更新并让node执行的方法。例如:
    1. puppet kick -p 10 client1 client2 client3

    设置很简单:

    1. 在客户节点的puppet.conf中的[agent]段中添加 listen = trueserver = MASTER_NAME; 2. 设置节点的防火墙准许在端口8139上接入;3.在节点的auth.conf的开头加入以下代码:
    1. # Allow puppet kick access
    2. path /run
    3. method save
    4. auth any
    5. allow workstation.example.com

    上面代码的意思是准许主机(workstation.example.com)去触发一个puppet执行。当然你也可以用allow *准许任何主机触发puppet的执行。
    关于主动更新,或者可以用 MCollective Puppet Agent。如何使用,需要更多的研究和实践。

puppet overview的更多相关文章

  1. [原] KVM 虚拟化原理探究(1)— overview

    KVM 虚拟化原理探究- overview 标签(空格分隔): KVM 写在前面的话 本文不介绍kvm和qemu的基本安装操作,希望读者具有一定的KVM实践经验.同时希望借此系列博客,能够对KVM底层 ...

  2. Activity之概览屏幕(Overview Screen)

    概览屏幕 概览屏幕(也称为最新动态屏幕.最近任务列表或最近使用的应用)是一个系统级别 UI,其中列出了最近访问过的 Activity 和任务. 用户可以浏览该列表并选择要恢复的任务,也可以通过滑动清除 ...

  3. Puppet自动化部署-安装及配置(3)

    本文介绍Puppet Master及Agent相关的安装及配置. 一. 官网下载Puppet安装YUM源 [root@puppet-master ~]# rpm -ivh https://yum.pu ...

  4. Puppet自动化运维-资源介绍篇(4)

    1.什么是资源? 资源是Puppet最基础的元素,每个资源的定义都具有标题,类型,以及一系列的属性. 资源定义有如下的特性:   (1) Puppet使用title在编译时区分每个资源,使用命名变量在 ...

  5. Puppet自动化部署-前期环境准备(2)

    在安装Puppet环境之前需要配置好机器的基本配置,如规范网络地址IP.hostname,certname认证名称,ntp时间同步等配置完毕,完善的搭建自动化环境. 1.环境介绍 此处实现部署的环境是 ...

  6. Puppet自动化运维-C/S架构概念(1)

    1.Puppet工作模式 (1)采用C/S架构(即是server<=>client) (2)Master 会对自己形成自签名CA中心,对Agent端进行证书颁发,验证通过才允许Agent( ...

  7. Atitit.自然语言处理--摘要算法---圣经章节旧约39卷概览bible overview v2 qa1.docx

    Atitit.自然语言处理--摘要算法---圣经章节旧约39卷概览bible overview v2 qa1.docx 1. 摘要算法的大概流程2 2. 旧约圣经 (39卷)2 2.1. 与古兰经的对 ...

  8. Overview of OpenCascade Library

    Overview of OpenCascade Library eryar@163.com 摘要Abstract:对OpenCascade库的功能及其实现做简要介绍. 关键字Key Words:Ope ...

  9. Puppet简易入门

    一.查看官方提供的下载源 https://docs.puppet.com/guides/puppetlabs_package_repositories.html 二. 选择对应系统的下载源 因为本机是 ...

随机推荐

  1. 【二】shiro入门 之 身份验证

    大体步骤如下: 1.首先通过new IniSecurityManagerFactory 并指定一个ini 配置文件来创建一个SecurityManager工厂: 2.接着获取SecurityManag ...

  2. C++解析(20):智能指针与类型转换函数

    0.目录 1.智能指针 2.转换构造函数 3.类型转换函数 4.小结 1.智能指针 内存泄漏(臭名昭著的Bug): 动态申请堆空间,用完后不归还 C++语言中没有垃圾回收机制 指针无法控制所指堆空间的 ...

  3. 【刷题】BZOJ 3926 [Zjoi2015]诸神眷顾的幻想乡

    Description 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日. 粉丝们非常热情,自发组织表演了一系列节目给幽香看. ...

  4. 【BZOJ3203】保护出题人(动态规划,斜率优化)

    [BZOJ3203]保护出题人(动态规划,斜率优化) 题面 BZOJ 洛谷 题解 在最优情况下,肯定是存在某只僵尸在到达重点的那一瞬间将其打死 我们现在知道了每只僵尸到达终点的时间,因为僵尸要依次打死 ...

  5. 【BZOJ2780】【SPOJ】Sevenk Love Oimaster(后缀自动机)

    [BZOJ2780][SPOJ]Sevenk Love Oimaster(后缀自动机) 题面 BZOJ 洛谷 题解 裸的广义后缀自动机??? 建立广义后缀自动机建立出来之后算一下每个节点被几个串给包括 ...

  6. [bzoj3238]差异(后缀数组+单调栈)

    显然我们可以先把len(Ti)+len(Tj)的值先算出来,再把LCP减去.所有len(Ti)+len(Tj)的值为n*(n-1)*(n+1)/2,这个随便在纸上画一画就可以算出来的. 接下来问题就是 ...

  7. 复习JavaScript随手记

    数据类型 基本类型 string number boolean undefined number类型,包含整数浮点数 NaN和自己都不相等,涉及NaN的计算结果都是NaN isNaN()函数用于判断一 ...

  8. 玲珑学院oj 1152 概率dp

    1152 - Expected value of the expression Time Limit:2s Memory Limit:128MByte Submissions:128Solved:63 ...

  9. 「Linux」centos7安装uWSGI

    一定要记得先安装python-devel,再安装uWSGI,否则即使安装成功也是不能使用的,切记切记

  10. openstack身份认证与API请求流程

    一.概况 1. 请求认证token时,需发送的认证信息包括: 2. 如果认证成功,会获得认证token 3. 在发送的API请求中将认证token填入X-Auth-Token字段.可以一直使用这个认证 ...