puppet apply error:在节点uys0115上找不到默认节点或名称为'uys0115'

use*_*702 6 puppet

我在两个节点上安装了puppet,服务器节点主机名为"uys0115",客户端节点主机名为"uys0119",服务器节点已经设置了客户机节点.当我执行commad:时puppet cert list --all,我们可以看到:

+ "uys0115" (24:55:95:77:8E:60:33:77:C8:D4:74:EA:01:21:BD:5A)
+ "uys0119" (86:53:1B:81:E5:4F:88:23:E8:34:E1:AB:03:D4:AE:7C)
Run Code Online (Sandbox Code Playgroud)

puppet主目录是/ etc/puppet /,我写了一个例子和文件组织如下:

/etc/puppet/--
             |-/manifests/site.pp
             |-/modules/test/--  
                              |-/files/text.txt
                              |-/manifests/init.pp
                              |-/manifests/test.pp
Run Code Online (Sandbox Code Playgroud)

代码/etc/puppet/modules/test/manifests/test.pp是:

class test1 {
package { "bison":
        ensure=>"installed",
}
exec { "puppet test":
        command=>"/bin/touch /tmp/puppet-test",
}
file { "/tmp/test.txt":
        ensure => "present",
        source => "puppet:///modules/test/test.txt"
}
}
Run Code Online (Sandbox Code Playgroud)

而代码/etc/puppet/modules/test/manifests/init.pp就是import "*"; 和代码/etc/puppet/manifests/site.pp如下:

import "test"
node default {
        include "test1"
}
Run Code Online (Sandbox Code Playgroud)

当我在客户端节点uys0119和exec命令puppet agent --test --server uys0115.它成功执行并在目录/ tmp /中创建了两个文件puppet-test和test.txt.在我执行命令的服务器节点中puppet apply site.pp,它也成功执行并创建了两个文件.但是,终端输出两条警告信息:

warning: Could not retrieve fact fqdn
warning: Host is missing hostname and/or domain: uys0115
Run Code Online (Sandbox Code Playgroud)

当我更改代码/etc/puppet/manifests/site.pp如下:

import "test"
node "uys0119" {
        include "test1"
}
Run Code Online (Sandbox Code Playgroud)

并puppet apply site.pp在服务器节点执行命令,输出错误消息失败:

warning: Could not retrieve fact fqdn
warning: Host is missing hostname and/or domain: uys0115
warning: Host is missing hostname and/or domain: uys0115
Could not find default node or by name with 'uys0115' on node uys0115
Run Code Online (Sandbox Code Playgroud)

但客户端节点也可以成功执行命令puppet agent --test --server uys0115.任何人都可以解释一下吗?如果我想要服务器节点发送一些repuests到客户端节点并驱动一些客户端节点响应服务器并产生结果.使用木偶时该怎么办?有人能举个例子吗?非常感谢!!!

dal*_*ang 4

服务器 puppet 既充当 puppet master 又充当 puppet 节点。

当您编辑 site.pp 时,如下所示:

import "test"
node default {
    include "test1"
}
Run Code Online (Sandbox Code Playgroud)

连接到 puppet master 的所有 puppet 节点都将执行类“test1”中定义的操作。所以你在uys0115and中找到了两个文件uys0119(视为傀儡节点)。

将您的 site.pp 更改为以下内容时:

import "test"
node "uys0119" {
        include "test1"
}
Run Code Online (Sandbox Code Playgroud)

puppet 节点uys0115无法在 site.pp 中找到其定义(因为它只定义uys0119),并且 puppet master 输出错误信息如下:

Could not find default node or by name with 'uys0115' on node uys0115
Run Code Online (Sandbox Code Playgroud)

这里修改一下site.pp可以消除这个错误:

import "test"
node "uys0119" {
        include "test1"
}
node "uys0115" {
        include "test1"
}
Run Code Online (Sandbox Code Playgroud)

在puppet master/slave模式下,最好使用fqdn,例如uys0115.localdomain,这样就不会出现以下警告

warning: Host is missing hostname and/or domain: uys0115
Run Code Online (Sandbox Code Playgroud)