我有几个实验室环境,定期重build计算机,但需要保持相同的SSH主机密钥,以便连接到实验室计算机的人员(通常来自他们自己的系统,而不是我的pipe理员)不会得到“每次我们升级实验室系统的操作系统时,主机密钥都会改变“错误。 (这与处理SSH主机validation错误的最stream畅的工作stream程类似,但在这种情况下,我们已经决定在系统重build中维护相同的密钥对我们来说是最好的解决scheme。 现在,我有一个名为ssh的Puppet模块,其中包含以下子句: file { "/etc/ssh/": owner => 'root', group => 'root', mode => '0644', source => "puppet:///modules/ssh/$fqdn", recurse => true, require => Package['openssh-server'], notify => Service['sshd'], } 在puppet master上,每个主机都有自己的目录,包含所有主机密钥文件( ssh_host_key , ssh_host_dsa_key , ssh_host_rsa_key等),如file资源定义所暗示的。 我的问题是,这感觉就像混合代码和数据(因为所有的主机密钥都在一个模块目录内),每次添加一组新的主机时,我必须再次提交到Puppet VCS。 有没有更好的方法来pipe理这些事情?
我正在为Puppet基础结构编写一个外部节点分类器,并且需要在每个节点上操作/etc/hosts文件。 以下(由于重复键)是无效的YAML: — host: name: www1.example.com host_aliases: www1 ip: 1.2.3.4 host: name: www2.example.com host_aliases: www2 ip: 1.2.3.5 我看到这个相关的答案 ,它有以下代码: host { # Public IPs – eth0 'front-01': ip => '192.168.1.103'; 'front-02': ip => '192.168.1.106'; # Private IPs – eth1 'priv0-0': ip => '192.169.40.201'; 'priv0-1': ip => '192.169.40.202'; 'priv1-0': ip => '192.169.40.207'; 'priv1-1': ip => '192.169.40.208'; […]
像许多人(我希望),我正在准备木偶4我的清单分离出来的环境。 我打算有3个不同的环境:qa,staging,prod。 在最初设置清单时,我已经为环境设置了一个自定义的事实来指向特定的环境(即创build/etc/facter/facts.d/environment来设置环境)。 当我使用一个打印出$ environmentvariables的单个清单运行testing时,它给了我自定义事实的价值,但是当代理与Puppet Master交谈时,它仍然使用默认环境“production”。 任何想法为什么发生这种情况? 是不是可以用作ENC?
我是新来的木偶,并试图创build清单,将要求所有代理更新所有当前安装的yum软件包。 在清单中描述这个最好的方法是什么?
我有以下exec将Linux(CentOS 6)主机连接到Active Directory域。 从bashterminal以root用户身份运行时,它运行成功,主机正确joinAD域。 但是,在puppet中运行时, net ads join命令将失败: 无法join域:无法为机器帐户设置密码(NT_STATUS_ACCESS_DENIED) 这是执行官 exec { 'adjoin': command => "kinit [email protected] -k -t /etc/krb5.keytab && net ads join createcomputer='Machines/Servers/Linux Servers' osName='${operatingsystem}' osVer=${operatingsystemrelease} -k", unless => "net ads testjoin -k | grep -q 'Join is OK'", provider => shell, user => root, path => '/usr/sbin:/usr/bin:/sbin:/bin', require => [ File['/etc/krb5.conf'], File['/etc/krb5.keytab'], […]
有没有一种方法来定义木偶清单内的硬链接? 似乎文件types只能定义符号链接,但我需要它是硬链接,以使我的一些chrooted应用程序工作。 例如,我需要硬链接 /etc/hosts -> $chroot/etc/hosts /etc/resolvf.com -> $chroot/etc/resolv.conf 等等。 什么可以是最简单的方法来存档呢? 更新:谢谢,我结束了以下定义: define hardlinkdir(source=$name, target) { exec { "hardlinkdir-$name": command => "cp -r –link $target $source", path => "/usr/bin:/bin", creates => $source; } } define hardlink(source=$name, target) { exec { "hardlink-$name": command => "ln –force $target $source", path => "/usr/bin:/bin", unless => "test $source -ef […]
我正在testing一个木偶init.pp文件(在Windows上),看起来像这样: class myclass { package { 'java': ensure => installed, provider => 'msi', source => 'S:\puppet-repo\jdk1.6.0_31.msi', install_options => { 'INSTALLDIR' => 'C:\tools\java' }, } } 然后我的site.pp文件如下所示: node default { include myclass } 我创build了一个只调用myclass模块的tests / init.pp文件: class { 'myclass': } 我可以运行tests / init.pp文件,它可以正确安装java。 我想知道是否有一种方法来从命令行运行myclass模块而不创build单独的tests / init.pp文件。 或者,也许我可以将myclass中的package语句移动到它自己的.pp文件中,并将其包含在init.pp中,然后我可以运行该单独的.pp文件。 什么是更正确的方法来做到这一点?
我处于一种情况,为了便于pipe理,我想为两个类使用相同的configuration文件模板。 我只希望configuration文件的一小部分在两者之间是不同的,因为我希望这两个类都包含在大多数节点中,所以我想要一个简单的条件来确定哪个类包含文件。 作为一个例子,我们假设sensor和snuffler都包含在同一个节点中。 我希望模板看起来像这样 <% if scope.name == "sensor" %> include sensor/file1 include sensor/file2 <% else %> include snuffler/file1 include snuffler/file2 <% end %> 这是可能的直接或我需要回落到类定义中的variables定义?
用stream浪configuration下地。 主机是Windows。 我有一个非常简单的configuration,所以我想使用Ansible,但得到这个: [default] Running provisioner: ansible… The executable 'ansible-playbook' Vagrant is trying to run was not found in the %PATH% variable. This is an error. Please verify this software is installed and on the path. 所以基本上,我认为Vagrant希望Ansible自己安装,并试图使用Ansible(我没有)的现有实例。 我的问题是:无论是厨师或木偶build成stream浪? 我希望能够安装Vagrant并运行它应该工作的方式,而不必在主机上安assembly置系统。 谢谢!
到目前为止,我一直在使用什么傀儡来编写很多有趣的代码,到目前为止,它看起来可以完成我所需要的大部分工作。 有一件事我没有find在文档(与一些search)是如何(如果可能的话)有预先build立的configuration文件在服务器上使用。 例如: 我用木偶来安装httpd。 现在我们有客户端上的apache。 那么现在httpd.conf需要一些定制和特定的设置。 我需要在puppet master上使用httpd.conf。 我怎样才能从木偶大师那里得到它?