因此,假设在一个非常具体的 hiera YAML 文件中,我定义了一个变量,例如“env_name”。
env_name:“开发不稳定”
现在在一个更通用的 hiera 文件中,我想将该变量插入一个字符串。
server_name: "服务-%{env_name}.%{::domain}"
我的测试似乎暗示层次结构中其他地方的 hiera 变量在一般情况下不可用于插值。不幸的是,这是真的吗?
因此,假设在一个非常具体的 hiera YAML 文件中,我定义了一个变量,例如“env_name”。
env_name:“开发不稳定”
现在在一个更通用的 hiera 文件中,我想将该变量插入一个字符串。
server_name: "服务-%{env_name}.%{::domain}"
我的测试似乎暗示层次结构中其他地方的 hiera 变量在一般情况下不可用于插值。不幸的是,这是真的吗?
大概在我的 puppet master 上,我可以从命令行运行 hiera 以查看特定节点如何生成变量集,但很难找到一个可行的示例。
我尝试使用 puppet 库存和使用 mcollective,均出现错误:
[root@puppet001 hiera]# hiera -c /etc/puppet/hiera.yaml -i pamcontent001.mgs.example.com
Puppet inventory service lookup failed: NoMethodError: undefined method `features' for Puppet:Module
Could not load Puppet inventory service scope: SystemExit: exit
[root@puppet001 hiera]# hiera -c /etc/puppet/hiera.yaml -m pamcontent001.mgs.example.com
MCollective lookup failed: LoadError: cannot load such file -- mcollective
Could not load MCollective scope: SystemExit: exit
搜索这些错误消息会发现一些旧错误及其修复,但没有任何解决方法可以让我进行测试查找。
当你得到一个意想不到的值时,你如何测试和调试 heira 查找?
我正在尝试使用 yum 在 RHEL7 映像上安装工头安装程序包。Ruby 和 rubygems 已安装。Ruby 版本为 2.0.0p353。
yum 安装失败,几个 rubygem 软件包失败:
Requires: ruby(abi)
我没有看到任何名为 ruby(abi) 的包,也不明白那是什么。有解决方法吗?
编辑:原来“el7”有一个不同的存储库。我盲目地使用了本页文档中的链接:http: //theforeman.org/manuals/1.6/index.html#3.2.1Installation
安装 el7 存储库的正确命令是:
yum install http://yum.theforeman.org/releases/1.6/el7/x86_64/foreman-release.rpm
这可行,并且安装工头安装程序包成功,但是工头安装程序运行失败,其 puppet 配置尝试安装 ruby193 包,这些包似乎已从存储库中弃用。
我决心让我的 puppet master 运行 SELinux 设置为强制执行。如果我允许它,它运行良好。
我在 RHEL 7 上,使用 systemd、apache2、passenger 4 和 puppet 3。
我已经使用审计日志和audit2allow 完成了几次通过,以制作覆盖审计日志的semodule。(而且这是一团糟,乘客从 apache 模块运行,作为 apache 用户,执行 puppet 主代码。)
这是一个全新的配置,所以 puppet manifest 是一个默认的空节点,什么都不做。
如果我在远程机器上运行“puppet agent -t”,它会以 setenforce 0 成功。审计日志非常空。(audit2allow 报告“无事可做。”)
但是,如果我将 setenforce 设为 1,我会得到这些:
Aug 20 23:14:28 puppet002 puppet-master[1544]: Permission denied - /etc/puppet/auth.conf
Aug 20 23:14:29 puppet002 puppet-master[1544]: Permission denied - /etc/puppet/manifests/site.pp on node agentserver.example.com
我尝试更改 /etc/puppet/* 上的所有权,并且 se 上下文看起来不错:
[root@puppet002 log]# cd /etc/puppet
[root@puppet002 puppet]# ls -lZ
-rw-r--r--. apache apache system_u:object_r:puppet_etc_t:s0 auth.conf
-rw-r--r--. apache apache system_u:object_r:puppet_etc_t:s0 fileserver.conf
drwxr-xr-x. apache apache system_u:object_r:puppet_etc_t:s0 manifests
drwxr-xr-x. apache apache system_u:object_r:puppet_etc_t:s0 modules
-rw-r--r--. apache apache system_u:object_r:puppet_etc_t:s0 puppet.conf
有任何故障排除建议吗?
[编辑]:附加信息,按照关闭“dontaudit”并重复练习的建议,错误消息发生了变化。我的 $ssldir 是 /var/lib/puppet/ssl 而 $logdir 是 /var/log/puppet,这使得这些错误很有趣:
puppet-master [3210]:权限被拒绝 - /etc/puppet/ssl
puppet-master [3210]:(/File[/etc/puppet/ssl]/ensure)从不存在更改为目录失败:无法在确保上设置“目录”:权限被拒绝 - /etc/puppet/ssl
puppet-master [3210]:无法准备执行:初始化时出现 3 次失败:文件 [/etc/puppet/ssl]:从不存在更改为目录失败:无法在确保上设置“目录”:权限被拒绝- /etc/puppet/ssl;文件[/etc/puppet/manifests]:从不存在更改为目录失败:无法在确保上设置“目录”:权限被拒绝 - /etc/puppet/manifests;文件 [/var/lib/puppet/log]:从 0755 更改为 0750 失败:无法在 /var/lib/puppet/log 上设置模式 755:权限被拒绝 - /var/lib/puppet/log
当然,所有作品都在 Permissive 中。:(
一位工程师同事带着一个有趣的谜题来找我。
他发现包含他想要使用参数自定义的类的第三方模块(在本例中为 docker)在我们的清单中的任何地方都没有明确引用。然而,该类确实包含在机器的目录中。
作为他的关系和排序的一部分,他一直在引用类中的资源(服务资源)。
对外部类中的服务的引用是否隐含地将该类包含在目录中?
这是 CentOS 6.5 上一个相当新的 Graphite 安装。它通过 Sensu 的 AMQP (RabbitMQ) 接收指标。
作为概念验证,我有一个平均负载监视器,每 60 秒向 sensu/graphite 报告数据。我可以在 Graphite 的监听器日志中看到数据。
如果我选择一些数据作图,我只能看到我的周期在“过去 30 分钟”内的数据。(那么只有当我将线模式设置为“连接线”时它才可见,因为点消失了。)
如果我将时间段设置为“查看过去 31 分钟”,则所有数据都会从图表中消失。
我尝试过使用 storage-schemas.conf,但没有对此行为做出任何明显的改变。
如果我超过 30 分钟,数据是否会以某种方式被丢弃、过滤掉?我要检查什么?
这是 storage-schemas.conf:
[load_averages]
pattern = \.load_avg\.
retentions = 10s:14d,1m:90d
我已经研究这个问题几天了,但没有成功......
我在 CentOS 6.5 服务器上使用 Puppet Graphite 模块配置和部署了 Graphite(带有碳和耳语)。如果我选择 Courier 作为字体,webapp 只会在图表中呈现文本。
我知道 Graphite 使用 cairo 来渲染 PNG 图,并且依赖于 freetype 或 fontconfig 库。所有这些都已安装。
其他人通过安装“位图字体”包解决了这个问题。我的服务器上安装的软件包是“bitmaps-fonts-compat”,希望它与“bitmap-fonts”兼容。
RedHat repos 中提供的 cairo 版本是 1.8(一些旧版本)。
我几乎没有足够的 Puppet 来问这个问题。
我想我理解特定节点的配置将由一组模块组成,并带有一些特定于节点的粘合剂。从教程和文档中可以看出,特定于节点的资源将位于 manifests/site.pp 文件中的node /nodename/ { }
资源中,其中包含相关类的“包含”,以及用于进行特定于节点的配置更改的资源。
现在输入外部节点分类器 (ENC),例如 theForeman。
根据我对 ENC 文档的阅读,node /nodename/ { }
我可以在 site.pp 中使用资源,但我不能声明任何新资源。基本上不推荐。生成的 YAML 只是包含和变量设置。
那么,对于特定于给定节点或主机组的配置(集成所有包含类的布线)做了什么?
你最终会创建一个特定于节点的类吗?您将该类放在特定于节点的模块中的什么位置?或者您是否为您的站点特定配置制作了一个包罗万象的模块,其中包含可以分配给特定节点的类?
我有一个间歇性问题,我不确定从哪里开始尝试解决它。
在我们的开发环境中,我们在负载均衡器上有两个可见的 IP 地址,一个到前端,一个到多个后端服务机器。前端配置为采用通配符 DNS 名称以支持通用“门户”。
dev.example.com A 10.1.1.1
*.dev.example.com CNAME dev.example.com
后端服务器都是同一空间内的特定名称:
core.dev.example.com A 10.1.1.2
cms.dev.example.com CNAME core.dev.example.com
search.dev.example.com CNAME core.dev.example.com
这就是问题所在。定期尝试访问 cms.dev.example.com 的开发人员或程序将获得指向前端而不是后端负载均衡器的结果:
cms.dev.example.com is an alias to core.dev.example.com
core.dev.example.com is an alias to dev.example.com (WRONG!)
dev.example.com 10.1.1.1
开发人员都在 Mac OS X 机器上,尽管我已经看到问题也发生在 Ubuntu 机器上,使用本地云主机 DNS 解析器。
有时开发人员使用 VPN,它将 DNS 定向到它自己的解析器,有时他在本地网络上使用 NAT 路由器分配的 DNS 解析器。
有时清除 Mac OS X DNS 缓存,登录 VPN,然后退出 VPN,问题就会消失。
原始权威服务器在 zerigo 上,直接挖掘他们的名称服务器似乎总能给出正确答案。这些记录公布的 DNS 缓存时间为 15 分钟,但该问题断断续续持续了大约一个星期。
任何故障排除建议?
这是我的问题。我想要 Varnish 3.0,但 Lucid 只有 2.1 包可用。
因此,使用 Chef,我需要制作一个安装配方,将 varnish-cache.org 存储库添加到 apt 源并安装 varnish-3.0 包。
(我可以选择从源代码构建它(对吗?),但如果这样做,我将得不到 /etc/init.d 脚本(对吗?))。
所以我正在写一个 apt_install.rb 配方,大概会添加存储库:
apt_repository "varnish-3.0" do
uri "http://repo.varnish-cache.org/ubuntu/"
repo_name "varnish-3.0"
distribution "lucid"
components ["varnish-3.0"]
key "http://repo.varnish-cache.org/debian/GPG-key.txt"
deb_src true
action :add
end
事实上,这在 /etc/apt/sources.list.d 中添加了一个 varnish-3.0-source.list ,它说:
# Created by the Chef apt_repository LWRP
deb http://repo.varnish-cache.org/ubuntu/ lucid main
然后我有
package "varnish" do
source "http://repo.varnish-cache.org/ubuntu/"
action :install
end
继续在我的服务器上安装 2.1 版,而不是 3.0。
如果我在包块中指定一个“版本”,我会得到“找不到版本”。
我在这里错过了什么?它必须是简单的东西。