Chef:如何根据环境使用不同的OS默认用户(Vagrant,EC2)?

时间:2013-10-07 09:20:33

标签: amazon-ec2 chef vagrant environment

我正在写一本将在Ubuntu上运行的食谱。它将在默认用户的家中创建一个目录。

directory "/home/<default-user>/my-directory" do
  owner <default-user>
end

问题是,这个默认用户在不同环境中是不同的:

  • 使用 Vagrant 在虚拟机上运行时 vagrant
  • EC2 实例上运行时 ubuntu

解决此类问题的好习惯是什么?怎么做?

谢谢!

2 个答案:

答案 0 :(得分:1)

为用户提供属性并根据您的环境进行设置。

directory "/home/#{node[:my_app][:default_user]}/my-directory" do
  owner node[:my_app][:default_user]
end

然后,在attributes/default.rb文件中:

default[:my_app][:default_user] = 'ubuntu'

Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.provision "chef_solo" do |chef|
    # ...

    chef.json = {
      "my_app" => {
        "default_user" => "vagrant"
      }
    }
  end
end

这会将您的默认用户设置为ubuntu,但在Vagrant VM中运行时会覆盖该用户。

答案 1 :(得分:0)

签出配置条目config.ssh.usernamehttp://docs-v1.vagrantup.com/v1/docs/config/ssh/username.html