1

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

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

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

  • 当使用Vagrant在虚拟机上运行时,它是vagrant
  • 在EC2实例上运行时它是ubuntu 。

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

谢谢!

4

2 回答 2

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 中运行时将被覆盖。

于 2013-10-09T14:13:20.560 回答
0

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

于 2013-10-08T00:45:43.357 回答