本文概述
- facter
- 核心Fact
- 自定义Fact
- 外部Fact
Puppet的键值对称为事实。每个资源都有其自己的事实, 我们可以在Puppet中构造自定义Fact。
facter 该命令列出了所有不同的环境变量及其相关值。
$ facter
文章图片
如果只想查看一个变量, 请使用以下命令:
$ facter {variable name}
例子:
文章图片
puppet中facter和facts的主要特征是, 它们在整个Puppet代码中都可以作为” 全局变量” 使用, 这意味着我们可以根据需要在代码的任何部分中使用它。
在Puppet中, 可以使用三种类型的事实:
- 核心Fact
- 自定义Fact
- 外部Fact
核心Fact | |
---|---|
现代Fact | 遗留Fact |
cloud | legacy |
disks | bios_version |
facterversion | domain |
identity | fqdn |
gce | hostname |
memory | id |
os | ipaddress |
path | interfaces |
ruby | macaddress |
virtual | netmask |
networking | system32 |
partitions | memorysize |
processors | memoryfree |
kernelversion | uuid |
$ run puppet facts
文章图片
文章图片
自定义Fact 我们还可以通过以下方式将自定义Fact添加到节点:
- 使用” 导出FACTER … 语法”
$ export FACTER_{fact's name} syntax
例子:
$ export FACTER_tallest_mountain="Everest"
$ facter tallest_mountain Everest
文章图片
文章图片
- 使用$ LOAD_PATH设置
在$ LOAD_PATH中, ” $” 变量是一个数组, 用于搜索和加载值。
$ ruby -e 'puts $LOAD_PATH'
/usr/share/rubygems-integration/all/gems/did_you_mean-1.2.0/lib
/usr/local/lib/site_ruby/2.5.0
/usr/local/lib/x86_64-linux-gnu/site_ruby
/usr/local/lib/site_ruby
/usr/lib/ruby/vendor_ruby/2.5.0
/usr/lib/x86_64-linux-gnu/ruby/vendor_ruby/2.5.0
/usr/lib/ruby/vendor_ruby
/usr/lib/ruby/2.5.0
/usr/lib/x86_64-linux-gnu/ruby/2.5.0
文章图片
现在, 创建目录创建者, 添加.pp文件并将其内容附加到该文件:
[nikita@puppetClient ~]$ cd /usr/lib/ruby/site_ruby/
[nikita@puppetClient site_ruby]$ mkdir facter
[nikita@puppetClient site_ruby]$ cd facter/
[nikita@puppetClient facter]$ ls
[nikita@puppetClient facter]$ touch newadded_facts.rb
将以下内容添加到custom_facts.rb文件:
[nikita@puppetClient facter]$ cat newadded_facts.rb
Facter.add('tallest_mountain') do
setcode "echo Everest"
end
Facter会扫描$ LOAD_PATH中列出的整个文件夹, 并搜索一个名为facter的目录。一旦获得该特定目录, 它将把它们放在目录结构中的任何位置。如果找到此文件夹, 则它将在该Facter目录中搜索任何Ruby文件, 并将所有指定的Facts加载到内存中。
费特里布
FACTERLIB与$ LOAD_PATH类似。两者之间只有一个区别, 即FACTERLIB是操作系统级别的环境参数, 而$ LOAD_PATH是Ruby特殊变量。
默认情况下, 可能未配置环境变量。让我们检查:
$ env | grep "FACTERLIB"
文章图片
要测试FACTERLIB, 请使用以下步骤:
创建一个名为test_facts的目录。
文章图片
文章图片
要查看目录结构, 请执行以下命令:
$ tree /tmp/test_facts/
文章图片
将以下内容复制到.rb文件:
$ vi computer_father.rb
Facter.add('computer_father') do
setcode "echo 'Charles Babbage'"
end
文章图片
$ vi best_tutorial.rb
Facter.add('best_tutorial') do
setcode "echo 'srcmini'"
end
文章图片
现在, 使用export语句:
$ export FACTERLIB="/tmp/test_facts/father:/tmp/test_facts/tutorial"
$ env | grep "FACTERLIB"
FACTERLIB=/tmp/test_facts/father:/tmp/test_facts/tutorial
文章图片
外部Fact 如果要应用在供应阶段创建的一些新事实, 则可以使用外部Fact。外部Fact是在配置时间将元数据应用于虚拟机(VM)的最佳方法。例如, OpenStack, vSphere, AWS等。
【Puppet facter和fact】Puppet可以使用所有元数据及其生成的信息来决定应将哪些项目包括在目录中。
推荐阅读
- ANN自适应共振理论
- Puppet安装详细步骤图解
- 对Android系统权限的认识
- Android音乐播放器
- Android : 跟我学Binder ----什么是Binder机制()
- Android-广播发送与接收(Java代码中订阅)
- Android-Java读写文件到自身APP目录
- 录屏大师下载|录屏大师app下载
- Android-SharedPreferences