测试厨房 - 如何将本地用户登录作为Chef属性?

时间:2014-12-09 20:16:27

标签: ruby vagrant chef vagrantfile test-kitchen

我们的开发环境包括运行查询到云中较大的共享资源的本地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文​​件中的功能?

1 个答案:

答案 0 :(得分:2)

通过ERB测试Kitchen处理.kitchen.yml,所以你只需在ERB文件中输入这样的内容即可:

attributes:
  foo: <%=  ENV['STUFF'] %>

然后node['foo']将包含$STUFF。在您的情况下将STUFF切换到USER。