我们的开发环境包括运行查询到云中较大的共享资源的本地VM。
它的设置方式是将本地用户的登录名作为属性传递给Chef角色,用于定义SSH和DB连接。
我们目前在Vagrantfile中使用Ruby来取消登录,并使用vm.provision在来宾VM的文件系统上创建/ tmp文件。我们的本地VM的Chef角色读取该文件的内容并将值传递给属性。
Vagrantfile:
# -*- mode: ruby -*-
# vi: set ft=ruby :
(snip)
require 'etc'
user = Etc.getlogin
(snip)
analytics.vm.provision :shell, inline: "echo #{user} > /tmp/remote_user"
在Chef运行期间,/ tmp / remote_user的内容由以下内容读取:
remote_user = File.open("/tmp/remote_user", "r").read.strip
sandbox = "_#{remote_user}"
default_attributes "remote_user" => remote_user,
"sandbox" => sandbox,
有没有更好的方法将当前用户的登录名作为属性添加到本地Chef运行?
如果没有,我怎样才能在.kitchen.yml中复制旧版Vagrant文件中的功能?
答案 0 :(得分:2)
通过ERB测试Kitchen处理.kitchen.yml
,所以你只需在ERB文件中输入这样的内容即可:
attributes:
foo: <%= ENV['STUFF'] %>
然后node['foo']
将包含$STUFF
。在您的情况下将STUFF切换到USER。