将shell脚本从puppet master复制到puppet agent,并在puppet agent上执行

将shell脚本从puppet master复制到puppet agent,并在puppet agent上执行,puppet,Puppet,我正在尝试将一个shell脚本从木偶主机复制到木偶客户端 这是我关于木偶大师的shell脚本: cat /etc/puppetlabs/code/environments/production/modules/mymodule/mybash.sh echo hi hello cat /etc/puppetlabs/code/environments/production/manifests/site.pp notify{"Message : I am a message from puppe

我正在尝试将一个shell脚本从木偶主机复制到木偶客户端

这是我关于木偶大师的shell脚本:

cat /etc/puppetlabs/code/environments/production/modules/mymodule/mybash.sh
echo hi hello
cat /etc/puppetlabs/code/environments/production/manifests/site.pp

notify{"Message : I am a message from puppet master": }

class myfile {
  file { '/home/myserver/mybash.sh':
    mode   => '0755',
    owner  => 'root',
    source => 'puppet:///modules/mymodule/mybash.sh',
    notify => Exec['run_my_script'],
  }
  exec { 'run_my_script':
    command => '/home/npatel/mybash.sh',
  }
}
notify{"Message : new msg test": }
我还在
/home/myserver/mybash.sh
中复制了相同的shell脚本

这是puppet master上的my site.pp文件:

cat /etc/puppetlabs/code/environments/production/modules/mymodule/mybash.sh
echo hi hello
cat /etc/puppetlabs/code/environments/production/manifests/site.pp

notify{"Message : I am a message from puppet master": }

class myfile {
  file { '/home/myserver/mybash.sh':
    mode   => '0755',
    owner  => 'root',
    source => 'puppet:///modules/mymodule/mybash.sh',
    notify => Exec['run_my_script'],
  }
  exec { 'run_my_script':
    command => '/home/npatel/mybash.sh',
  }
}
notify{"Message : new msg test": }
这是puppet agent的输出:

myclient:~$ sudo /opt/puppetlabs/bin/puppet agent --test
Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for myclient.test.com
Info: Applying configuration version '1483393652'
Notice: Message : I am a message from puppet master
Notice: /Stage[main]/Main/Notify[Message : I am a message from puppet master]/message: defined 'message' as 'Message : I am a message from puppet master'
Notice: Message : new msg test
Notice: /Stage[main]/Main/Notify[Message : new msg test]/message: defined 'message' as 'Message : new msg test'
Notice: Applied catalog in 0.20 seconds
看起来只有带有
notify{“Message:
的行在puppet代理上执行,而不是它们之间的行

我没有看到文件部分提到的
mybash.sh
/home/my client
路径中被复制,也没有日志来确保文件是否被复制


我是否遗漏了源代码值中的任何内容?

在Puppet中,定义类并不会自动将其包含在配置中,它只是让它可以被声明。定义类类似于用Ruby、Python或C等语言定义函数。函数只有在被调用时才有效。类似地,Puppet类定义在我们宣布之前,这些条款没有任何效力

如果您想实际使用该类,可以使用
include
函数声明它。这会告诉Puppet评估该类并管理其中声明的所有资源

除了
include
函数外,还可以使用
class{'myfile':}
语法等资源

因此,在代码中,如果要声明类,必须执行以下操作:

/etc/puppetlabs/code/environments/production/manifests/site.pp 我还建议您直接将类代码放入模块清单,然后将该类包含在
site.pp
文件中:

/etc/puppetlabs/code/environments/production/modules/mymodule/init.pp 然后在
站点中声明类。pp

node default {
  include myclass
} 

在Puppet中,定义一个类不会自动将其包含在配置中,它只是让它可以被声明。定义一个类类似于用Ruby、Python或C这样的语言定义一个函数。该函数只有在被调用时才有效。同样,直到我们声明它之前,Puppet类定义没有任何效果哼哼

如果您想实际使用该类,可以使用
include
函数声明它。这会告诉Puppet评估该类并管理其中声明的所有资源

除了
include
函数外,还可以使用
class{'myfile':}
语法等资源

因此,在代码中,如果要声明类,必须执行以下操作:

/etc/puppetlabs/code/environments/production/manifests/site.pp 我还建议您直接将类代码放入模块清单,然后将该类包含在
site.pp
文件中:

/etc/puppetlabs/code/environments/production/modules/mymodule/init.pp 然后在
站点中声明类。pp

node default {
  include myclass
} 

谢谢彼得的简洁回答!我能够解决问题。谢谢彼得的简洁回答!我能够解决问题。