我正在尝试使用 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}
。查看其他示例,这些变量被使用并且似乎有效。我叫错了吗?我应该使用不同的变量吗?