Amazon ec2 厨师长:如何根据环境(Vagrant,EC2)使用不同的操作系统默认用户?

Amazon ec2 厨师长:如何根据环境(Vagrant,EC2)使用不同的操作系统默认用户?,amazon-ec2,chef-infra,vagrant,environment,Amazon Ec2,Chef Infra,Vagrant,Environment,我正在写一本烹饪书,它将在Ubuntu上运行。它将在默认用户的主页中创建一个目录 directory "/home/<default-user>/my-directory" do owner <default-user> end directory”/home//my directory“do 所有者 结束 问题是,此默认用户在不同环境中是不同的: 当使用vagrant在虚拟机上运行时,它是vagrant 在EC2实例上运行时,它是ubuntu 解决这类问题的

我正在写一本烹饪书,它将在Ubuntu上运行。它将在默认用户的主页中创建一个目录

directory "/home/<default-user>/my-directory" do
  owner <default-user>
end
directory”/home//my directory“do
所有者
结束
问题是,此默认用户在不同环境中是不同的:

  • 当使用vagrant在虚拟机上运行时,它是vagrant
  • EC2实例上运行时,它是ubuntu
解决这类问题的好方法是什么?怎么做呢


谢谢大家!

签出配置条目
config.ssh.username

签出配置条目
config.ssh.username

使用户成为一个属性,并根据您的环境进行设置

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'
在您的
文件中:

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

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

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

将用户设置为属性,并根据您的环境进行设置

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'
在您的
文件中:

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

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

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

shawnzhu,谢谢。该配置似乎无法解决问题,因为:(1)我设置了
config.ssh.username=“ubuntu”
,但当我ssh到虚拟机并发出whoami命令时,我得到了“vagrant”。(2) 我正在寻找一个解决方案,我可以使用相同的食谱,用户仍然是“流浪”的虚拟机,它是“ubuntu”运行EC2 instanceshawnzhu,谢谢你。该配置似乎无法解决问题,因为:(1)我设置了
config.ssh.username=“ubuntu”
,但当我ssh到虚拟机并发出whoami命令时,我得到了“vagrant”。(2) 我正在寻找一个解决方案,我可以使用相同的食谱,用户仍然是“流浪”的虚拟机,它是“ubuntu”运行与EC2实例你应该提供更多的信息。什么是“默认”用户?它在你的食谱中是如何使用的?如果可能的话,分享一些代码。你好,cbl,我在原始问题中添加了更多信息。谢谢。你应该提供更多的信息。什么是“默认”用户?它在你的食谱中是如何使用的?如果可能的话,分享一些代码。你好,cbl,我在原始问题中添加了更多信息。谢谢。嘿,cbl,你的解决方案对我很有效!实际上,通过使用环境,我做的有点不同:
local
环境,其中
default\u user
vagrant
ec2
用户所在的环境
ubuntu
。我在Vagrantfile
中使用了
chef.environment
。非常感谢你!是的,你的解决方案看起来也不错。我很乐意帮忙。如果你不介意的话,请把我的回答标为接受。这既增加了我的分数,也帮助其他可能遇到这个问题的人直接找到工作答案。谢谢嘿,cbl,你的解决方案对我很有效!实际上,通过使用环境,我做的有点不同:
local
环境,其中
default\u user
vagrant
ec2
用户所在的环境
ubuntu
。我在Vagrantfile
中使用了
chef.environment
。非常感谢你!是的,你的解决方案看起来也不错。我很乐意帮忙。如果你不介意的话,请把我的回答标为接受。这既增加了我的分数,也帮助其他可能遇到这个问题的人直接找到工作答案。谢谢