我正在尝试使用Boxen来设置dev环境。我们有很多的回复,我们想要拉下来,并运行一个脚本开始。我们有一个约定: repos有一个scripts/目录,其中包含一个需要运行的bootstrap脚本。
看起来,使用exec命令是可能的。但是为了告诉它要运行什么,我必须访问回购程序的目录。其他脚本使用$repo_dir或${boxen::config:srcdir}/${name}。我尝试过每一种方法,以及许多不同风格的exec,但都没有效果。
宣言
class projects::hero {
include ruby
boxen::project { 'hero':
ruby => '2.0.0',
source => 'myorg/hero'
}
->
Exec {
command => '$repo_dir/scripts/echo'
}
->
notify {'hero is running at $srcdir':}
}这比规定的目标简单得多。脚本需要在它们所在的目录中运行。因此,我的第一个(也希望是最终的)清单对于exec步骤会有类似的内容:
->
exec { 'running bootstrap on hero':
command => '$repo_dir/scripts/bootstrap',
cwd => '$repo_dir/scripts'
}脚本
现在,scripts/echo非常简单:
#!/bin/bash
echo "Echo File!"
touch `date`由于输出不会被真正看到,所以我们用日期创建了一个文件,这样我们就可以观察到这个副作用,并且知道脚本实际运行了。
叫boxen
我直接从manifests目录调用这个项目:
Chris:manifests chris$ boxen hero输出量
Warning: Scope(Class[Boxen::Environment]): Setting up 'hero'. This can be made permanent by having 'include projects::hero' in your personal manifest.
Error: Could not find resource 'command => $repo_dir/scripts/echo' for relationship from 'Boxen::Project[hero]' on node chris.local
Error: Could not find resource 'command => $repo_dir/scripts/echo' for relationship from 'Boxen::Project[hero]' on node chris.local如果我尝试使用${boxen::config::srcdir},这也是正确的。看看其他的例子,这些变量被使用了,并且看起来很有效。我是不是说错了?我应该使用不同的变量吗?
发布于 2014-02-09 08:26:25
我注意到你的清单上有两个错误:
->
Exec {
command => '$repo_dir/scripts/echo'
}
->第一种情况是,你把主管的第一个字母大写了。在傀儡语言中,这意味着您要为所有后续的exec资源定义(文档)指定默认值。这本身并不是一个资源定义,因此不能应用资源排序,因此出现了错误。
另一个错误是将单引号与变量结合使用。单引号字符串被解释为文字。换句话说,'$repo_dir'被字面上解释为$repo_dir,而"$repo_dir"被解释为变量$repo_dir (文档)的内容。
希望这能帮上忙
祝好运
https://stackoverflow.com/questions/21611091
复制相似问题