一、自定义(custom)fact的四种方法 1、定义到facter软件本身的lib库中 这种方法是直接在安装facter的lib库里面直接创建,相当于扩充facter软件的lib库。 可以通过以下方法找到facter包的lib库路径为/usr/lib/ruby/site_ruby/1.8/facter [root@agent1 facter]# rpm -ql facter /usr /1.8/facter/Cfkey.rb /usr/lib/ruby/site_ruby/1.8/facter/application.rb /usr/lib/ruby/site_ruby/1.8/facter ~]# cd /usr/lib/ruby/site_ruby/1.8/facter/ [root@agent1 facter]# vim rpms.rb Facter.add(:rpms) do facter]# facter | grep rpms rpms => 918 [root@agent1 facter]# facter rpms 918 备注:这种方法相当于给facter软件打补丁
可以在一个安装了puppet的服务器上执行facter命令: [root@fm-server ~]# facter architecture => x86_64 augeasversion => 1.0.0 具体脚本的位置在:/usr/lib/ruby/site_ruby/1.8/facter/ 这个目录中,有兴趣的同学可以自己看看。 "/etc/facter/facts.d", "/etc/puppetlabs/facter/facts.d"] 把你的fact定义放到那些目录中 用pluginsync发布,这个方法我用的很少,因为太麻烦了,我是极简主义者 对于自定义facter,大家可以参考 https://docs.puppetlabs.com/facter/3.1/fact_overview.html 找到了这个机制,我们如何利用facter呢?
Ruby-rdoc-1.8.7.352 Ruby-libs-1.8.7.352 Ruby-irb-1.8.7.352 Ruby-1.8.7.352 Puppet-2.7.21.tar.gz Facter Ruby-rdoc-1.8.7.352 Ruby-libs-1.8.7.352 Ruby-irb-1.8.7.352 Ruby-1.8.7.352 Puppet-2.7.21.tar.gz Facter Ruby-rdoc-1.8.7.352 Ruby-libs-1.8.7.352 Ruby-irb-1.8.7.352 Ruby-1.8.7.352 Puppet-2.7.21.tar.gz Facter 安装 通过facter工具分析检测客户端传输过来的信息 安装facter a) 解压源码包 新建一个存放安装包的目录,下载源码包 b) 编译安装源码包 安装puppet: ( 安装 通过facter工具分析检测客户端传输过来的信息 安装facter: 一、解压源码包 二、编译安装源码包 安装puppet: 一、解压源码包 二、编译安装源码包 三、复制配置文件
root@server01:~# systemd-detect-virt none 虚拟机: root@server02:~# systemd-detect-virt qemu linux下第六种方法: facter 物理机: root@server01:~# facter virtual physical 虚拟机: root@server02:~# facter virtual kvm linux下第七种方法:
worker_processes <%= @processorcount %>; 17 Puppet forge模块 image.png 18节点 image.png image.png 19、Facter ://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpm 服务端安装:yum install -y puppet-server puppet facter 客户端安装:yum install -y puppet facter 客户端第一次执行--test时的证书签发过程 image.png 服务端上的证书列表 image.png zookeeper
], "discovered_interpreter_python": "/usr/bin/python" }, "changed": false } 使用 facter 扩展 facts 信息 Ansible 的 facts 组件会判断被控机器上是否安装 facter 和 ruby-json 包,若存在,Ansible 的 facts 会采集 facter 信息。 查看是否安装 facter 和 ruby-json:ansible 192.168.46.128 -m shell -a 'rpm -qa ruby-json facter' 运行 facter 模块查看 facter 信息:ansible 192.168.46.128 -m facter 使用 ohai 扩展 facts 信息 Ansible 的 facts 组件会判断被控机器上是否安装 ohai 包 shell -a 'gem list|grep ohai' 运行 ohai 模块查看 ohai 信息:ansible 192.168.46.128 -m ohai 直接运行 setup 模块也会采集 facter
变量:http://docs.puppetlabs.com/facter/latest/core_facts.html http://docs.puppetlabs.com/puppet/latest/ seconds Notice: Finished catalog run in 0.05 seconds puppet代码中可以直接使用的变量: http://docs.puppetlabs.com/facter
https://mirrors.aliyun.com/puppet/yum/puppetlabs-release-el-7.noarch.rpm # 安装Puppet-server、puppet和facter yum install -y puppet puppet-server facter # 备份配置文件 cp /etc/puppet/puppet.conf{,.bak} # 配置puppet.conf 安装阿里云仓库 rpm -ivh https://mirrors.aliyun.com/puppet/yum/puppetlabs-release-el-7.noarch.rpm # 安装puppet和facter yum install puppet facter # 配置puppet.conf [root@node ~]# cp /etc/puppet/puppet.conf{,.bak} #备份配置文件
2、puppet工作流程: 1)客户端通用facter探测主机的变量,并通过SSL连接发送到服务器。 2)服务器通过facter分析客户端的主机名,并找到manifests里对应的node配置并分析生成一个伪代码,并发给客户端。 3)客户端收到伪代码,把执行结果发给服务器。 4)Puppet,facter安装 ? ? 5)创建puppet主目录 ? 4)Puppet,facter安装 ? ?
Manufacturer' => 'manufactory', 'Locator' => 'slot', } output = Utils.facter_exec end return ram_slot end Facter.add("ram") do confine :kernel ram_slot = dmi_get_ram(cmd) JSON.dump(ram_slot) end end Facter.add do confine :kernel => 'windows' setcode do ram_slot = [] if Facter.value (cli) else require 'facter/util/wmi' Facter::Util::WMI.execquery
/puppet/puppet.conf puppet doc 通用配置 image.png 客户端配置 image.png 服务端配置 image.png 查看centos版本:6或7 facter
puppet vardir=/var/lib/puppet ssldir=/var/lib/puppet/ssl rundir=/var/run/puppet factpath=$vardir/lib/facter 最后,改变读取行factpath=$vardir/lib/facter至factpath=$confdir/facter的行。 log/puppet vardir=/var/lib/puppet ssldir=/var/lib/puppet/ssl rundir=/var/run/puppet factpath=$confdir/facter
. / 什么是 Puppet 的 Facter? / 您应该回答 Facter 在 Puppet 中做了什么:“Facter 收集有关 Puppet Agent 的基本信息(事实),如硬件细节,网络设置,操作系统类型和版本,IP 地址,MAC 地址,SSH
3. puppet-client 调用 facter, Facter 探测出主机的一些变量, 例如主机名、 内存大小、 IP 地址等,puppet-client 将这些信息通过 SSL 连接发送到服务器端 facter 送过来的信息可以作为变量处理,node 牵涉到的代码才解析,其他没牵涉的代码不解析。
puppet在自动化配置管理方面有很强大的优势,这里就不做过多介绍了,下面记录下几个简单的puppet管理配置: 一、首先在服务端和客户端安装puppet和facter 1)服务端 安装Puppet Labs -ivh http://yum.puppetlabs.com/el/6.5/products/x86_64/puppetlabs-release-6-12.noarch.rpm 安装Puppet和facter # yum install puppet puppet-server facter 2)客户端 安装Puppet Labs # rpm -ivh http://yum.puppetlabs.com/ el/6.5/products/x86_64/puppetlabs-release-6-12.noarch.rpm 安装Puppet和facter # yum install puppet facter setgid_group = postdrop [root@puppet01 postfix]# ls files/master.cf files/master.cf #注意:模板里的变量通过ERB语法从Facter
el/7/products/x86_64/puppetlabs-release-7-12.noarch.rpm 安装puppet yum -y install puppet puppet-server facter ://yum.puppetlabs.com/el/7/products/x86_64/puppetlabs-release-7-12.noarch.rpm yum -y install puppet facter e l l o , guys " f i l e { " /tmp/ t e s t " : content => $ t e s t ; } puppet可以使用由facter 提交的变量,facter在客户端收集系统信息整理成不同的变量提交给puppet服务器端,服务器端的代码可以使用这些变量实现高级的功能,例如不同的硬件配置生成不同的应用软件配置文件。 运行facter命令可以看到很多变量的输出,这些变量可以在puppet代码里面直接使用。
puppet的变量 puppet支持丰富的变量,通过facter -p命令可以获取到本机的所有变量参数,各种硬件信息等,不过前提需要安装“facter-2.4.6-1.el7.x86_64.rpm”包。 master节点需要安装的安装包有: puppet-server.noarch facter-2.4.6-1.el7.x86_64.rpm puppet.noarch agent节点需要安装: facter-2.4.6-1.el7.x86_64.rpm puppet.noarch 安装完成之后可以直接启动服务,让master和agent运行在服务模式,也可以不让其运行在服务模式,而是运行在前台
用于集中管理多台服务器的file、package、server、cron、user、group、exec(执行shell命令)、yumrepo等常用资源的C/S结构软件 二:puppet工作流程 puppet客户端通过facter
Q11、什么是 Puppet 的 Facter? 您应该回答 Facter 在 Puppet 中做了什么:“Facter 收集有关 Puppet Agent 的基本信息(事实),如硬件细节,网络设置,操作系统类型和版本,IP 地址,MAC 地址,SSH
int main() { //测试递归实现,计算6的阶乘 printf("%d\n", fact(6)); //循环(非递归)实现:通过迭代累乘得到结果 int n = 6; int facter = 1; //初始化乘积为1(乘法的单位元) while (n > 0) { facter *= n; //累乘当前值 n--; //逐步减小数值,直到n变为0 } printf("% d\n", facter); return 0; } 2.