设为首页 收藏本站
查看: 1059|回复: 0

[经验分享] puppet overview

[复制链接]
发表于 2015-9-16 11:13:47 | 显示全部楼层 |阅读模式
安装
  以在Ubuntu server 14.04.2 TLS 为例:

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

  •   更新包源。

    • echo -e "deb http://apt.puppetlabs.com/ lucid main\ndeb-src http://apt.puppetlabs.com/ lucid main">>/etc/apt/sources.list.d/puppet.list
      

  • 对安装源进行一个检验。
    更新失败时才需要执行该命令

    • apt-key adv --keyserver keyserver.ubuntu.com --recv XXXXXXXX

  • 系统更新 和安装

    • apt-get update && apt-get dist-upgrade

  • 在控制节点上安装puppetmaster:

    • apt-get install  puppetmaster

  • 在客户端安装puppet:

    • apt-get install puppet

  • puppet会监听8140端口,如果puppetmaster开启了防火墙需要做以下配置

    • iptables -A INPUT -p tcp --dport 8140-j ACCEPT

  •   执行命令验证:

    • 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


  •   验证

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

  • Ubuntu 下安装很简单,不需要预先安装ruby等,系统更新后直接安装puppet;
  • 安装完后是不存在site.pp 文件的,需要创建:/etc/puppet/manifests/site.pp,作为站点的主模块配置文件。
    一般的site.pp 很简单,引入Nodes节点下客户端文件即可

    • import"nodes/*.pp"

  • 关于“模块”
    /etc/puppet/manifests的文件结构:

    • |-- nodes
    • |`-- client.pp
    • `-- site.pp
    client.pp 说明客户节点client需要执行哪些模块。内容是:

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

  • 怎么定义“模块”?
    首先来看文件结构:/etc/puppet/modules

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

    • class ntp
    • {
    • package{
    • "ntp":
    • ensure=>installed,
    • }
    • }
      注意:类名必须和模块名称一致!!!

  

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

    • puppet module install puppetlabs-stdlib
    然后使用 stdlib 中的 file_line 资源。 例如:

    • file_line{"newline":
    •              path=>"/etc/apt/sources.list.d/cloudarchive-kilo.list",
    •              line=>"add a new line",
    • }
      具体可以参考:stdlib

  

  • 错误Could not request certificate: SSL_connect returned=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 文件的位置没有修改)

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

  • 创建user后无法登陆
    使用user资源添加用户时,属性password不是明文,需要用工具grub-md5-crypt 来生成。
    但需要安装 grub, 生成的password用单引号包裹:

    • user{"andy":
    • ensure=>"present",
    •       uid=>666,
    •       gid=>666,
    •       password=>'$1$PzftN$XANlscGctdGF3VjXH3k9q0',
    •       home=>"/home/andy",
    •       shell=>"/bin/bash",
    •       managehome=>true,
    • }

  • 如何主动更新
    节点每次更新都要运行 puppet agent --test, 但是如果上百上千台nodes怎么办?
    可以采用puppet kick 这种 master主动推送更新并让node执行的方法。例如:

    • puppet kick -p 10  client1 client2 client3
    设置很简单:

    1. 在客户节点的puppet.conf中的[agent]段中添加 listen = true 和 server = MASTER_NAME; 2. 设置节点的防火墙准许在端口8139上接入;3.在节点的auth.conf的开头加入以下代码:

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


来自为知笔记(Wiz)  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-114395-1-1.html 上篇帖子: puppet foreman 下篇帖子: puppet&mcollective客户端安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表