【发布时间】:2014-03-03 21:09:32
【问题描述】:
我正在尝试使用 Boxen 来设置我们的开发环境。我们有许多我们想要拉下并运行脚本以开始的存储库。我们达成了一个约定:repos 有一个 scripts/ 目录和一个需要运行的 bootstrap 脚本。
使用exec 命令似乎可以做到这一点。但是为了告诉它要运行什么,我必须访问 repo 的目录。其他脚本使用$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},这也是正确的。查看其他示例,这些变量被使用并且似乎有效。我叫错了吗?我应该使用其他变量吗?
【问题讨论】: