Puppet - 如何将模块应用于puppet客户端节点?

时间:2012-12-17 09:53:42

标签: puppet

刚刚从Puppet开始,对这个世界来说真的很新。

我有

  • CentOS 6 Puppet Master
  • CentOS 6 Puppet客户端

在Master中有一个模块:

 puppet module list
/etc/puppet/modules
âââ mstanislav-yum (v1.0.0)

所以我想将相同的模块应用到我的木偶客户端,但我不能或我不知道为什么

root@puppetclient: puppet agent --test
Info: Retrieving plugin
Info: Caching catalog for puppetclient
Info: Applying configuration version '1355737643'
Finished catalog run in 0.10 seconds

但客户端没有任何变化: - /

有什么想法吗?

10 个答案:

答案 0 :(得分:12)

您尚未声明模块(已将其分配给您的节点)......

将此添加到site.pp:

node 'fqdn of client' {
  include yum
} 

然后,您可以运行puppet agent -t来查看它的实际效果。

答案 1 :(得分:4)

您可以使用以下命令查看详细信息输出

  

puppet agent --test --trace

答案 2 :(得分:2)

尝试使用Hiera和yaml文件,我认为它更灵活,组织更好。

编辑site.pp文件:

node "default" {
    hiera_include('classes')
}

之后,您可以使用simple:

调用每个特定node.yaml文件中的类
classes:
  -class1
  -class2

我在Ubuntu上使用它,工作正常。

答案 3 :(得分:1)

您可以尝试--noop模式(干运行模式)。

puppet agent --server=YOUR_PUPPET_SERVER_NAME --onetime --no-daemonize --verbose --noop

这会显示它应该做的更改,但实际上不会改变任何内容。删除--noop将执行所有这些更改。

检查doc以获取上述命令中其他选项的说明。 http://docs.puppetlabs.com/man/agent.html

答案 4 :(得分:1)

将模块应用于节点的两种主要方法是将以下其中一项添加到site.pp

node 'node <certname> (normally the fqdn)' {
    require <module name>
}

node 'node's <certname>' {
    include <module name>
}

然后在节点puppet agent --test

中运行

require与include类似,但它创建了依赖关系,并允许多次声明相同的类,如果你想要重叠的角色类,这是很好的。

答案 5 :(得分:1)

  1. 首先从puppet forge安装模块
  2. 打开site.pp并添加以下行
  3. node default {
           # include module_name
             include apache
    }
    

    然后在你的木偶代理上运行以下命令。

      

    sudo puppet agent --test

答案 6 :(得分:1)

如果您在另一个不是site.pp的位置添加了节点声明(这是推荐的方法),那么请记住将“import”配置添加到site.pp,它将引用节点清单。

这就是我的配置的样子。带有节点DIR和site.pp文件的主要清单DIR:

drwxr-xr-x. 3 root root 4096 May 19 07:23 nodes
-rw-r--r--. 1 root root   62 Jun  4 16:31 site.pp

这是我的节点DIR中的节点声明:

node 'fqdn of client' {
  include yum
} 

最后,主清单DIR中的site.pp将导入节点,如下所示:

import 'nodes/*.pp'

node default { }

答案 7 :(得分:0)

您必须创建一个节点定义,其中包含您要应用的类的“包含”。

答案 8 :(得分:0)

运行

puppet apply -e "include mstanislav-yum"

如果您希望自己运行模块,尽管通常在site.pp清单中包含节点定义。

答案 9 :(得分:0)

我的作品中的现场示例:

var dgArray = new object[GridView1.RowCount, GridView1.ColumnCount + 1];

if (GridView1.Rows.Count > 0)
{
    foreach (DataGridViewRow i in GridView1.Rows)
    {
        if (i.IsNewRow) continue;
        foreach (DataGridViewCell j in i.Cells)
        {
            dgArray[j.RowIndex, j.ColumnIndex] = j.Value.ToString();
        }
    }
}