从人偶执行bash脚本失败

nad87563

我一直试图将驻留在人偶主计算机中的shell脚本复制并执行到我的人偶代理中

这是我的代码

[[email protected]****** manifests]# cat site.pp
class mymodule::myklass{
  file {'my_bash_script':
      ensure => 'file',
      source => '/etc/puppet/modules/mymodule/my_bash_script.sh',
      path   => '/home/ec2-user/my_bash_script.sh',
      owner  => 'root',
      mode   => '755',
      notify => Exec['run_my_script'],
  }
  exec { 'run_my_script':
    command => '/home/ec2-user/my_bash_script.sh',
  }
}
include mymodule::myklass

我的脚本:

[[email protected]********* mymodule]# cat my_bash_script.sh
#!/bin/sh
mv /usr/bin/node /usr/bin/bnode
ln -s /usr/local/bin/node /usr/bin/node
mv /usr/bin/npm /usr/bin/bnpm
ln -s /usr/local/bin/npm /usr/bin/npm

我收到以下错误:

[[email protected]*********** /]# puppet agent -t
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Caching catalog for ip*****************8
Info: Applying configuration version '1472235841'
Error: /Stage[main]/Mymodule::Myklass/File[my_bash_script]: Could not evaluate: Could not retrieve information from environment production source(s) puppet:///modules/mymodule/my_bash_script.sh
Notice: /Stage[main]/Mymodule::Myklass/Exec[run_my_script]: Dependency File[my_bash_script] has failures: true
Warning: /Stage[main]/Mymodule::Myklass/Exec[run_my_script]: Skipping because of failed dependencies
Notice: Finished catalog run in 0.08 seconds

谁能帮我解决这个错误?

马特·舒查德(Matt Schuchard)

如果file资源位于module/files目录中,必须使用人偶模块URI来获取资源

file {'my_bash_script':
  ensure => 'file',
  source => 'puppet:///modules/mymodule/my_bash_script.sh',
  path   => '/home/ec2-user/my_bash_script.sh',
  owner  => 'root',
  mode   => '755',
  notify => Exec['run_my_script'],
}

请在此处注意文档:https : //docs.puppet.com/puppet/latest/reference/types/file.html#file-attribute-source

如果仍然由于该错误而失败,则意味着文件已丢失,$modulepath/mymodule/files/my_bash_script.sh因此您需要将其放置在该位置。

此外,您的bash脚本可以转换为固有的Puppet DSL,奇怪的是,您在其末尾包含了一个类。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章