我正在尝试运行puppet来提供虚拟机。失败的命令是Exec。
exec { 'configure openssl-arm':
logoutput => on_failure,
loglevel => verbose,
command => '/opt/openssl-1.0.1g/Configure dist --prefix=/opt/openssl-1.0.1g/armbuild',
cwd => '/opt/openssl-1.0.1g',
user => root,
environment => 'CC=arm-axis-linux-gnueabi-gcc'
}
我很有信心这更像是一个木偶问题。
我试图运行的命令是通过exec。如果我迁移ssh,我可以手动运行该命令。
木偶:/opt/openssl-1.0.1g/configure dist——prefix=/opt/openssl-1.0.1g/armbuild返回1而不是[0]中的一个在/tmp/vagant -puppet-6/manifest/default.pp:36
手册:
local> vagrant ssh
vagrant@precise32 > sudu su
root@precise32 > export CC=arm-axis-linux-gnuabi-gcc
root@precise32 > /opt/openssl-1.0.1g/Configure dist --prefix=/opt/openssl-1.0.1g/armbuild
....
.... lots of output
....
root@precise32 > echo $?
0
sudo puppet apply
debug: /Schedule[hourly]: Skipping device resources because running on a host
debug: Exec[configure openssl-arm](provider=posix): Executing '/opt/openssl-1.0.1g/Configure dist --prefix=/opt/openssl-1.0.1g/armbuild'
debug: Executing '/opt/openssl-1.0.1g/Configure dist --prefix=/opt/openssl-1.0.1g/armbuild'
err: /Stage[main]//Exec[configure openssl-arm]/returns: change from notrun to 0 failed: /opt/openssl-1.0.1g/Configure dist --prefix=/opt/openssl-1.0.1g/armbuild returned 1 instead of one of [0] at /tmp/build.pp:1
debug: /Schedule[never]: Skipping device resources because running on a host
debug: /Schedule[weekly]: Skipping device resources because running on a host
debug: /Schedule[puppet]: Skipping device resources because running on a host
debug: Finishing transaction -613771238
<<p> 的流浪汉框/strong>https://drive.google.com/file/d/0B7B7RIseycQkTGxXczRqVGdDVGs/edit?usp=sharing 听起来需要更多的环境变量来运行脚本,而这些变量在木偶运行期间不存在;我曾经在使用Maven构建脚本时遇到过同样的问题。在构建命令之前编辑Exec命令以获取概要文件,因此最终的"脚本"运行看起来像:
#!/bin/bash
source $HOME/.bash_profile
export CC=arm-axis-linux-gnuabi-gcc
/opt/openssl-1.0.1g/Configure dist .......
所以,在木偶术语中:
exec { 'configure openssl-arm':
command => 'source $HOME/.bash_profile; /opt/openssl-1.0.1g/Configure dist --prefix=/opt/openssl-1.0.1g/armbuild',
cwd => '/opt/openssl-1.0.1g',
user => root,
environment => 'CC=arm-axis-linux-gnueabi-gcc'
}
另外,不要忘记检查脚本返回的实际值。也许它运行得很好,但是由于一些神秘的原因返回非零。这不是我第一次使用Puppet部署包,由于"状态"命令实现得很糟糕,服务初始化脚本需要一些后期调优。