快速简介 – 为了testing目的,我在5个节点(Debian Squeeze + puppet 2.7.20-1puppetlabs1)上安装了puppet agent,在1个服务器(同一版本)上安装了puppet master。 在每个清单中的puppet方面,我检查$ :: 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 […]
我试图重buildnwaller的sssd傀儡模块 ,完全基于LDAP,并有点干净。 其中我们有一个为表单的每个validation域定义的资源 define sssd::domain ( $domain = $name, $domain_description = '', $domain_type, $ldap_uri = 'ldap://example.com', $ldap_search_base = 'dc=example,dc=com', $simple_allow_groups, …. ) 然后这个定义作为一个concat::fragment被传递,填充一个模板来构build最终的sssd.conf 。 如果我在每个节点中定义LDAP服务器,这一切都很好,如下所示: nodes.pp node "node1.systems.private" { include "puppet::client" class { 'sssd': domains => [ 'LDAP' ], make_home_dir => true; } sssd::domain { 'LDAP': domain_type => 'ldap', ldap_uri => 'ldaps://ldap.site.com:636', ldap_search_base => 'DC=site,DC=com', […]
我想在Puppet中将默认shell设置为zsh。 最好为当前用户,因为我只是运行我的模块作为puppet apply mymodule.pp因为我存储我的configuration,我在git中使用跨多台机器。 我如何使用puppet设置默认的shell?
当我尝试将一个目录recursion部署到一个已经拥有大量文件的文件夹中时,Puppet似乎挂住了CPU。 我的系统上的用户资源使用的提供程序似乎没有将/ etc / skel中的文件部署到新调配的目录中。 所以在我看来,我可以使用这个recursion部署来填充目录。 # password is in the vault user { "myuser": ensure => 'present', password => 'guessmypassword', home => '/home/myuser', shell => '/bin/bash', } file { '/home/myuser': ensure => directory, owner => 'myuser', group => 'myuser', mode => 0755, require => User['myuser'], } file { '/home/myuser/.ssh': ensure => directory, owner => […]
我想调用Ruby中可用的函数File.basename 。 傀儡有可能吗? 就像是: $filename = basename($download_url)
每当我跑傀儡,我得到这个错误。 err: /File[/var/lib/puppet/lib]: Failed to retrieve current state of resource: Could not retrieve information from source(s) puppet://puppet/plugins
我的AWS部署有问题,对于AWS和Puppet来说是相当新颖的。 所以来到我的问题 – 你可以区分傀儡节点与AWS机器标签或CNAME域? 关于这个计划的一点背景: 有多个机器集群,一个php集群,一个传统的php集群,一个java集群,一个perl集群 用puppet控制configuration – 对于傀儡来说还是很新的,但作为一个开发者,我喜欢能够对服务器进行版本控制configuration的想法 在这些群集上启用了自动扩展function – 显然,云计算的主要优势是,当涉及到任何合理的性能时(这些亚马逊机器比我的手机慢) 部署由Capistrano控制,这使事情变得更容易 所以在AWS中,你会得到这些超级讨厌的公共/私人机器的DNS …没办法,你可以识别那些机器。 为了缓解这个问题,像AWS这样的接缝想要你标记所有东西 – 所以我做了。 find了一个脚本,为每个带有“ShortName”标签的机器创build一个CNAMElogging,这要归功于Route53 API。 每台机器都有一个ShortName标签,成为其CNAME,不幸的是puppet仍然可以parsing私人DNS名称。 我想要 node 'perl-cluster'{} 在傀儡里,任何人都有线索来达到这个目的? 谢谢
我正在使用exec命令来运行修改其他软件包的某些configuration文件的shell脚本。 只要input参数(如IP地址,端口或url)发生更改,或者shell脚本本身已更改,则会触发exec命令。 我必须使用shell脚本,因为软件包的configuration文件在版本之间略有不同。 我认为更新每个sed脚本的configuration文件比更简单,而不是为每个特定版本提供不同的puppet模板。 但是这个configuration不检测任何configuration文件在puppet之外被修改的时间。 木偶不知道shell脚本修改过的文件。 我正在寻找的是一种使exec命令依赖于任意其他文件的校验和的方法: exec { "my_command.sh": only_if_file_has_changed => [ "/etc/mysoftware/config.xml", "/etc/othersoftware/defaults", ] } 这可能吗? 请指教。
我已经应用了一个木偶清单,其中又包括一个木偶模块,添加了几个实体/ opt / … 有没有办法来取消应用木偶模块的影响? 即“木偶模块卸载…”
很多我们的服务器configuration是通过木偶来pipe理的。 木偶每15分钟通过cron运行并应用configuration更改。 如果服务器有问题,我有时需要在服务器上手动更改configuration(例如尝试不同的设置,启用更多的日志logging)。 问题在于,只要cron作业运行,puppet就会覆盖我的手动更改。 你会如何处理这个问题? 也许停用木偶,而在服务器上工作? 可能是我忘记重新启用它,然后让一台服务器不同步的风险。