学习Puppet(三)
一、相关概念:
1、 puppet基于C/S架构,使用ruby编写,在类UNIX平台上集中配置管理系统,它可以管理配置文件、用户、cron任务、软件包、系统服务。
2、 puppet把系统实体称为资源。
3、 使用协议xmlrpc,xmlrpc是使用https作为传输协议的rpc机制,使用xml文本的方式传输命令和数据。
4、 可有多个master多个client,所有的client都定期(默认30分钟)使用facter工具把client的基本配置信息通过https的xmlrpc协议发送给puppetmaster,puppetmaster-side通过分析client-side主机名,找到该主机的配置代码,继而编译,将编译好的配置代码发回client-side,client执行代码完成配置,并把代码执行情况反馈给puppetmaster。
5、 puppet.conf(主配置文件)、server.init(服务端启动脚本)、client.init(客户端启动脚本)、fileserver.conf、server.sysconfig、client.sysconfig。
6、 master-side启动脚本中涉及到文件/etc/sysconfig/puppetmaster,可将配置文件/etc/puppet/server.sysconfig复制为/etc/sysconfig/puppetmaster;也可更改启动脚本(:%s#/etc/sysconfig/puppetmaster#/etc/puppet/server.sysconfig#g)。
7、 两种形式:分发(master-side向client-side发送相关配置文件)、提取(client-side向master-side请求信息),本篇使用的是提取方式。
8、 #ll /var/lib/puppet/yaml/node/ (可通过查看此目录下各节点中的文件时间,如果时间相关太多证明某个节点出问题了,需要手动处理)
9、 所需软件:facter-1.6.18-8.el6.src.rpm(收集信息工具)、puppet-2.7.26-2.el6.src.rpm
10、 下载地址:http://fedoraproject.org/wiki/EPEL
11、 环境:redhat6.4 X86_64,准备两台机器,一台服务端一台客户端
二、安装及使用:
1、安装
master-side和agent-side都执行以下语句:
#service iptables stop
#setforce 0
#ntpdate 192.168.1.222 (时间同步,极其重要,集群内的所有机器时间误差控制在秒级以内,否则会出离奇错误)
#yum -y install ruby
#groupadd puppet
#useradd -g puppet -s /bin/false -M puppet
#vim /etc/sysconfig/network
HOSTNAME=master.test.com (服务端执行此句,服务端一定要是完整域名形式)
#vim /etc/sysconfig/network
HOSTNAME=agent.test.com (客户端执行此句)
#rpm -ivh /usr/src/facter-1.6.18-8.el6.src.rpm
#tar zxvf /root/rpmbuild/SOURCES/facter-1.6.18-8.tar.gz
#cd /root/rpmbuild/SOURCES/facter-1.6.18
#ruby install.rb
#rpm -ivh /usr/src/puppet-2.7.26-2.el6.src.rpm
#tar zxvf /root/rpmbuild/SOUCES/puppet-2.7.26.tar.gz
#cd /root/rpmbuild/SOURCES/puppet-2.7.26
#ruby install.rb
#mkdir /etc/puppet/
#mkdir /usr/src/puppet-2.7.26-2/redhat/* /etc/puppet
#cp /usr/src/puppet-2.7.26-2/auth.conf /etc/puppet/
#mkdir /etc/puppet/manifests/ (master-side创建此目录,agent-side不需创建,此目录在配置文件server.sysconfig中有定义,为简便直接创建就不改配置文件了)
#cp /etc/puppet/server.int /etc/init.d/puppetmaster (此句在master-side执行,在agent-side则将client.init复制为/etc/init.d/puppetagent)
#chmod 755 /etc/init.d/puppetmaster
#chkconfig --add puppetmaster
#chkconfig --level 35 puppetmaster on
#service puppetmaster start (agent-side启动puppetagent)
#netstat lnt | grep 8140
2、使用(三步:请求-查询-授权):
#man puppetd
#man puppetca
在agent-side执行:
#puppetd --test --server master.test.com (请求)
在master-side执行:
#puppetca -l (查询谁在请求)
#puppetca -s agetn.test.com (有查询结果再授权)
#ll /var/lib/puppet/ssl/ca/signed/* (此目录下多了agent.test.com)
注:若出错,删除以下文件重新执行以上三步:
#rm -rf /var/lib/puppet/ssl/ (agent-side直接将ssl目录删掉)
#rm -rf /var/lib/puppet/ssl/ca/signed/agent.test.com (在signed目录下仅将出错的客户端的那条记录删掉)
3、配置管理:
以下例子逐个添加,在agent-side请求,查看每个例子对应目录文件是否更新。
#vim /etc/puppet/manifests/site.pp (仅在master-side编辑,此文件在配置文件server.sysconfig中有定义)
node default { (default表示请求的所有agent-side都执行此段中的语句,也可写成单独的agent,例如:node ’agent.test.com’,表示仅某一客户端执行如下语句)
file {“/tmp/test.txt”: (例1:首行用冒号‘:’,之后的多行用逗号或分号分隔,最后一行可以没有,此文件是在agent-side创建的,master-side不需创建此文件)
content=>”I’m a test puppet\n”, (文件内容)
}
file {“/tmp/clearlog.sh”: (例2)
owner=>”puppet”, (属主)
group=>”puppet”, (属组)
mode=>”0777”, (权限)
content=>”/bin/find /tmp/ -name 123* | xargs rm -rf”, (文件内容)
}
group {“test”: (例3,管理用户组)
gid=>999,
ensure=>present, (present表示创建,absent表示删除)
}
user {“test”: (管理用户)
name=>”test”,
uid=>999,
gid=>999,
managehome=>true, (创建家目录)
groups=>[‘puppet’,’root’], (附加组)
shell=>”/bin/bash”,
ensure=>present,
}
cron {“ntptime”: (例4,计划任务)
command=>”/usr/sbin/ntpdate 192.168.1.222 > /dev/null 2>&1”,
minute=>’*/10’,
hour=>[‘2-4’],
monthday=>[‘2’,’4’], (这三行分别为:分时日,月周用*表示)
environment=>”PATH=/bin:/usr/bin:/usr/sbin”, (执行命令必须要指定环境变量)
ensure=>present,
}
}
#service puppetmaster restart (首次编辑完此文件需要重启服务,之后修改则不需重启)
#puppetd --test -server master.test.com (在agent-side请求,此句可以写成脚本文件,注意/var/lib/puppet/state/lock)
#ll /tmp/
#crontab -l (依次查看是否执行成功)
例5:同步master-side某一目录下的文件到agent-side
#vim /etc/puppet/fileserver.conf
添加如下语句:
[system_conf]
path /etc/puppet/system_conf/
allow *
#service puppetmaster restart (首次编辑完此文件需要重启服务,之后则不需要)
#mkdir /etc/puppet/system_conf
#cp -p /etc/resolv.conf /etc/puppet/system_conf/
#vim /etc/puppet/system_conf/resolv.conf
添加语句#test (与agent-side端文件做区别)
#vim /etc/puppet/manifests/site.pp
node ‘agent.test.com’ { (仅将此段语句应用于agent客户端)
……
file {“/etc/resolv.conf”: (还可以配置hosts,i18n,yum等系统配置文件)
mode=>664, (系统文件一定注意文件权限)
source=>”puppet://master.test.com/system_conf/resolv.conf”,
}
}
4、生产中使用案例:(下一篇详细介绍高级用法)

本篇是学习《老男孩网络视频》做的笔记。
学习Puppet(三)的更多相关文章
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- 从零开始学习jQuery (三) 管理jQuery包装集
本系列文章导航 从零开始学习jQuery (三) 管理jQuery包装集 一.摘要 在使用jQuery选择器获取到jQuery包装集后, 我们需要对其进行操作. 本章首先讲解如何动态的创建元素, 接着 ...
- 前端学习 第三弹: JavaScript语言的特性与发展
前端学习 第三弹: JavaScript语言的特性与发展 javascript的缺点 1.没有命名空间,没有多文件的规范,同名函数相互覆盖 导致js的模块化很差 2.标准库很小 3.null和unde ...
- Android Animation学习(三) ApiDemos解析:XML动画文件的使用
Android Animation学习(三) ApiDemos解析:XML动画文件的使用 可以用XML文件来定义Animation. 文件必须有一个唯一的根节点: <set>, <o ...
- 三、Android学习第三天——Activity的布局初步介绍(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 三.Android学习第三天——Activity的布局初步介绍 今天总结下 ...
- JavaWeb学习总结(三)——Tomcat服务器学习和使用(二) 包含https 非对称秘钥 NB
JavaWeb学习总结(三)--Tomcat服务器学习和使用(二) 一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命 ...
- MyEclipse Spring 学习总结三 SpringMVC
MyEclipse Spring 学习总结三 SpringMVC 一.SpringMVC原理 1.Springmvc 框架介绍 1)Spring 框架停工了构建Web应用程序的全功能MVC模块.Spr ...
- Quartz定时任务学习(二)web应用/Quartz定时任务学习(三)属性文件和jar
web中使用Quartz 1.首先在web.xml文件中加入 如下内容(根据自己情况设定) 在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用 ...
- MyBatis学习系列三——结合Spring
目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring MyBatis在项目中应用一般都要结合Spring,这一章主要把MyBat ...
- MyBatis学习 之 三、动态SQL语句
目录(?)[-] 三动态SQL语句 selectKey 标签 if标签 if where 的条件判断 if set 的更新语句 if trim代替whereset标签 trim代替set choose ...
随机推荐
- C#CancellationToken/CancellationTokenSource-取消令牌/取消令牌源 CT/CTS
详细情况:https://www.cnblogs.com/wucy/p/15128365.html 背景 为什么引入取消令牌? Thread.abort()方法会破坏同步锁中代码的原子逻辑,破坏锁的作 ...
- 程序与CPU,内核,寄存器,缓存,RAM,ROM、总线、Cache line缓存行的作用和他们之间的联系?
目录 缓存 什么是缓存 L1.L2.L3 为什么要设置那么多缓存.缓存在cup内还是cup外 MESI协议----主流的处理缓存和主存数据不一样问题 Cache line是什么已经 对编程中数组的影响 ...
- Linux运维实战——如何利用文件节点删除乱码文件
引言 linux系统中删除文件可以用rm [filename] 命令,然而有些系统或程序自动生成的文件或者文件夹名称却是乱码. 虽然部分文件/文件夹可以通过复制粘贴名字的方式来删除,但是仍然有些文件无 ...
- 《Symfony 5全面开发》教程02、安装运行环境并初始化Symfony项目
Symfony是PHP框架,在学习Symfony之前,我们需要安装PHP运行环境.如果你是MacOS系统,可以使用Homebrew来安装PHP运行环境. Homebrew官网 https://brew ...
- 实用TCP协议(2):TCP 参数优化
在了解 TCP 的基本机制后本文继续介绍 Linux 内核提供的链接队列.TW_REUSE.SO_REUSEPORT.SYN_COOKIES 等机制以优化生产环境中遇到的性能问题. 连接队列 Linu ...
- 关于UI自动化IOS元素定位方法说明
1. 元素属性介绍 下图是通过weditor定位的微博的"我的钱包",各属性如下图: className:元素类型,如:XCUIElementTypeButton isEnable ...
- 【有奖调研】来,聊聊TTS音色定制这件事儿
音色个性化定制,一个能让文字转语音服务(TTS)在用户交互过程中注入温度的技术. 文能在营销及内容交付中让品牌保持一致性,武能让开发者"音"量加持,创新开发. 这个100%钢铁纯技 ...
- JZ-063-数据流中的中位数
数据流中的中位数 题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两 ...
- Springboot循环依赖实践纪实
测试的Springboot版本: 2.6.4,禁止了循环依赖,但是可以通过application.yml开启(哈哈) @Lazy注解解决循环依赖 情况一:只有简单属性关系的循环依赖 涉及的Bean: ...
- VIM中简化删除,光标移动和查找操作
# 一.命令行模式下简化删除 1. 向后删除单个字符:[x] 2. 向前删除单个字符:[X] 3. 删除从光标开始到单词结尾:[dw] 删除从光标后的2个单词:[d2w] 4. 删除整个单词:[daw ...