标签: facter

确定/设置 Puppet 环境

我试图确定 Puppet 认为我的代理节点上的环境是什么。每文档我在配置代理的环境/etc/puppet/puppet.conf这样

[agent]
    environment = development
Run Code Online (Sandbox Code Playgroud)

为了查看环境,我发现此代码将环境事实添加到因子:

require 'puppet'

Facter.add("environment") do
  setcode do
    Puppet[:environment]
  end
end
Run Code Online (Sandbox Code Playgroud)

但是,在我的一个代理节点上,如果我运行sudo facter -p environment,结果是production。我尝试通过 临时手动设置环境sudo puppet agent --environment development,但是 factorer 的结果是相同的。

知道发生了什么吗?

puppet facter

8
推荐指数
1
解决办法
7302
查看次数

Puppet 有时找不到像 osfamily 这样的标准事实

快速简介 - 出于测试目的,我在 5 个节点(Debian Squeeze + puppet 2.7.20-1puppetlabs1)上安装了 puppet 代理,并在 1 个服务器(相同版本)上安装了 puppet master。

在每个清单的 puppetmaster 端,我检查是否 $::osfamily == 'Debian'。有时我也使用 $::fqdn,并检查它是否不为空。

问题是每天随机时间我都会收到来自 puppetmaster 的邮件,说他无法为其中一个节点编译目录。例如:

Fri Jan 18 19:18:24 +0100 2013 Puppet (err): Could not retrieve catalog from remote server: Error 400 on SERVER: Not supported osfamily at /etc/puppet/modules/system/manifests/skel.pp:20 on node mynodeX
Fri Jan 18 19:18:24 +0100 2013 Puppet (notice): Using cached catalog
Fri Jan 18 19:18:24 +0100 2013 Puppet (err): Could not retrieve catalog; skipping run
Run Code Online (Sandbox Code Playgroud)

另一个例子,来自 puppetmaster 日志: …

linux debian puppet facter puppetmaster

5
推荐指数
1
解决办法
1566
查看次数

Puppet & Facter - 如何确定是运行 Cent 6 还是 Cent 5

您将如何使用 factor 和 puppet 来确定操作系统是运行 Cent 6.x 还是 Cent 5.x ?

facter operatingsystemrelease 
6.4
Run Code Online (Sandbox Code Playgroud)

我只关心主要版本(6)

我已经考虑过使用 awk,但必须有更好的方法对“傀儡清单”更友好。

   #This works, but is ugly trying to use this in a puppet manifest

facter operatingsystemrelease |awk -F. '{print $1}'
6
Run Code Online (Sandbox Code Playgroud)

更新

看起来新版本的 facter 有一些关于主要版本的附加信息,这些信息不在我的版本中。我的初始配置需要假设因子已过时。

facter --version
1.6.4
puppet --version
2.7.20
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下命令搜索可能显示主要版本的任何其他事实

facter |grep 6
Run Code Online (Sandbox Code Playgroud)

awk puppet facter

5
推荐指数
2
解决办法
2万
查看次数

在因子 2 中访问数组/散列

在事实 2 中,您现在可以将数组/哈希作为事实。

例如:

os => {
  "name"=>"CentOS",
  "family"=>"RedHat",
  "release"=>{
    "major"=>"7",
    "minor"=>"0",
    "full"=>"7.0.1406"
  }
}
Run Code Online (Sandbox Code Playgroud)

os=>release=>major从清单访问的格式是什么?

puppet facter

4
推荐指数
1
解决办法
8551
查看次数

在无主设置中使用 hiera 并获取为类设置的值时遇到问题

我正在运行一个 masterless puppet 设置,它以以下方式应用 puppet 更改。

puppet apply /tmp/puppet/manifests/site.pp --modulepath=/tmp/puppet/modules --hiera_config=/tmp/puppet/hiera.yaml
Run Code Online (Sandbox Code Playgroud)

我一直在尝试在 hiera 中处理我们拥有的不同类型的节点,并且作为起点,我一直在尝试使用在节点上设置的自定义事实。这个事实是节点类型,在这个例子中被设置为无盘值。

节点上的因素认识到这一事实。

# facter -y | grep nodetype
nodetype: diskless
Run Code Online (Sandbox Code Playgroud)

并且 hiera.yaml 包含以下内容

---
:backends:
  - yaml
:yaml:
  :datadir: /tmp/puppet/data
:hierarchy:
  - node/%{::nodetype}
Run Code Online (Sandbox Code Playgroud)

在 /tmp/puppet/data/node/diskless.yaml 有

---
cluster: blues
Run Code Online (Sandbox Code Playgroud)

虽然这样做之后我尝试仔细检查 hiera 然后根据需要设置变量,但它似乎不起作用。

hiera -y diskless.yaml cluster
nil
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来调试问题。我相信这很简单,但如果 hiera 不能(或不能)在这个用例中运行会令人失望。

干杯

编辑1:

附加调试

hiera cluster '::nodetype=diskless' -d
DEBUG: Fri Oct 31 16:54:01 -0400 2014: Hiera YAML backend starting
DEBUG: Fri Oct 31 16:54:01 -0400 2014: Looking up …
Run Code Online (Sandbox Code Playgroud)

puppet facter hiera

4
推荐指数
1
解决办法
2842
查看次数

最适合自定义 Puppet 事实的地方 - RHEL

我不是一个 Ruby 人,但找到了如何列出 Ruby 加载路径。这就是我的样子

$ ruby -e 'puts $:'
/usr/lib/ruby/site_ruby/1.8
/usr/lib64/ruby/site_ruby/1.8
/usr/lib64/ruby/site_ruby/1.8/x86_64-linux
/usr/lib/ruby/site_ruby
/usr/lib64/ruby/site_ruby
/usr/lib64/site_ruby/1.8
/usr/lib64/site_ruby/1.8/x86_64-linux
/usr/lib64/site_ruby
/usr/lib/ruby/1.8
/usr/lib64/ruby/1.8
/usr/lib64/ruby/1.8/x86_64-linux
Run Code Online (Sandbox Code Playgroud)

其中一些目录甚至不存在,坦率地说,我认为自定义事实.rb文件最好放置在 Puppet-ish 位置,例如/etc/puppet/facts或类似位置。

我应该使用现有的加载路径位置之一还是为了 Puppet 的目的创建一个新的?

ruby puppet facter

3
推荐指数
1
解决办法
2748
查看次数

傀儡事实:我们应该使用 lsbdistid 还是操作系统?

在当前版本的 Puppet 和 Facter 中,我得到了相同的信息lsbdistidoperatingsystem事实——我不看,osfamily因为在 Gentoo Linux 上它报告一个通用的“Linux”字符串。

在 Puppet 模块中使用该信息时(例如,用于选择要安装的软件包名称)是否有任何技术原因或已建立的共识来使用lsbdistidoperatingsystem

puppet facter

2
推荐指数
1
解决办法
2454
查看次数

Puppet:将因子值传递给类(sensu puppet 模块)

尝试设置自定义订阅以使 remediator.rb 在 puppet 的 sensu 模块中工作。

类 sensuJenkinsMasterClient {
  类{'感': 
     purge_config => 真,
     rabbitmq_password => '',
     rabbitmq_host => 'sensu-master',
     #Need for remediator 需要 fqdn
     订阅 => ['sensu-default', 'centosJenkinsMaster', '"${::fqdn}'], 
     use_embedded_ruby => true, #set 下 /etc/default/sensu
  }
}

puppet facter sensu

0
推荐指数
1
解决办法
269
查看次数

标签 统计

facter ×8

puppet ×8

awk ×1

debian ×1

hiera ×1

linux ×1

puppetmaster ×1

ruby ×1

sensu ×1