puppet overview
安装
以在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 --listpupper 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 stdlibinclude 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=1Error: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 accesspath /runmethod saveauth anyallow workstation.example.com
上面代码的意思是准许主机(workstation.example.com)去触发一个puppet执行。当然你也可以用
allow *准许任何主机触发puppet的执行。
关于主动更新,或者可以用 MCollective Puppet Agent。如何使用,需要更多的研究和实践。
puppet overview的更多相关文章
- [原] KVM 虚拟化原理探究(1)— overview
KVM 虚拟化原理探究- overview 标签(空格分隔): KVM 写在前面的话 本文不介绍kvm和qemu的基本安装操作,希望读者具有一定的KVM实践经验.同时希望借此系列博客,能够对KVM底层 ...
- Activity之概览屏幕(Overview Screen)
概览屏幕 概览屏幕(也称为最新动态屏幕.最近任务列表或最近使用的应用)是一个系统级别 UI,其中列出了最近访问过的 Activity 和任务. 用户可以浏览该列表并选择要恢复的任务,也可以通过滑动清除 ...
- Puppet自动化部署-安装及配置(3)
本文介绍Puppet Master及Agent相关的安装及配置. 一. 官网下载Puppet安装YUM源 [root@puppet-master ~]# rpm -ivh https://yum.pu ...
- Puppet自动化运维-资源介绍篇(4)
1.什么是资源? 资源是Puppet最基础的元素,每个资源的定义都具有标题,类型,以及一系列的属性. 资源定义有如下的特性: (1) Puppet使用title在编译时区分每个资源,使用命名变量在 ...
- Puppet自动化部署-前期环境准备(2)
在安装Puppet环境之前需要配置好机器的基本配置,如规范网络地址IP.hostname,certname认证名称,ntp时间同步等配置完毕,完善的搭建自动化环境. 1.环境介绍 此处实现部署的环境是 ...
- Puppet自动化运维-C/S架构概念(1)
1.Puppet工作模式 (1)采用C/S架构(即是server<=>client) (2)Master 会对自己形成自签名CA中心,对Agent端进行证书颁发,验证通过才允许Agent( ...
- Atitit.自然语言处理--摘要算法---圣经章节旧约39卷概览bible overview v2 qa1.docx
Atitit.自然语言处理--摘要算法---圣经章节旧约39卷概览bible overview v2 qa1.docx 1. 摘要算法的大概流程2 2. 旧约圣经 (39卷)2 2.1. 与古兰经的对 ...
- Overview of OpenCascade Library
Overview of OpenCascade Library eryar@163.com 摘要Abstract:对OpenCascade库的功能及其实现做简要介绍. 关键字Key Words:Ope ...
- Puppet简易入门
一.查看官方提供的下载源 https://docs.puppet.com/guides/puppetlabs_package_repositories.html 二. 选择对应系统的下载源 因为本机是 ...
随机推荐
- Visual Format Language(VFL)视图约束
约束(Constraint)在IOS编程中非常重要,这关乎到用户的直接体验问题. IOS中视图约束有几种方式,常见的是在IB中通过Pin的方式手动添加约束,菜单Editor->Pin->. ...
- 【BZOJ4443】小凸玩矩阵(二分答案,二分图匹配)
[BZOJ4443]小凸玩矩阵(二分答案,二分图匹配) 题面 BZOJ Description 小凸和小方是好朋友,小方给小凸一个N*M(N<=M)的矩阵A,要求小秃从其中选出N个数,其中任意两 ...
- Linux内核分析7
一.理论知识 Linux中,可以从c源代码生产一个可执行程序,这其中要经过预处理.编译和链接的过程.可以参考以下图来理解这个过程: 其中,目标文件中至少有编译后的机器指令代码.数据,也还包括了链接时所 ...
- AtCoder Regular Contest 086 E - Smuggling Marbles(树形迭屁)
好强的题. 方案不好算,改成算概率,注意因为是模意义下的概率所以直接乘法逆元就好不要傻傻地开double. 设$f[i][d][0]$为第i个节点离d层的球球走到第i个点时第i个点没有球的概率, $f ...
- 解题:AHOI 2005 航线规划
题面 这种不断删边的首先肯定想到时光倒流啊=.= 在最后剩下的连通图上跑出一棵搜索树,先将边权都赋为$1$,那么两点间的关键航线就是链上边权和,而每加入一条非树边$u,v$都会使得$u,v$链上的边的 ...
- 驱动之LCD的介绍与应用20170209
本文主要介绍的是LCD的介绍与应用,直接看个人笔记即可:
- uC/OS-II之入门与介绍20160525
说一下刚学习uCOS的心得1)首先强调一下实时操作系统(RTOS)的特点,最明显的是提供及时响应和高可靠性2)基于实施操作系统的应用程序设计中,其中很重要的一个概念是"任务",任务 ...
- Java国密相关算法(bouncycastle)
公用类算法: PCIKeyPair.java /** * @Author: dzy * @Date: 2018/9/27 14:18 * @Describe: 公私钥对 */ @Data @AllAr ...
- laravel5.1 关联模型保存的方法(使用associate方法)
模型定义 class User { public function customer() { return $this->hasOne('Customer'); } } class Custom ...
- php数组定义
$arr = array( ,), //是’0' ,不是[‘0’] ,), ,), ,), ); $arr = [ '0' => array(2,3), //是’0' ,不是[‘0’] '1' ...