Amazon ec2 厨师长:如何根据环境(Vagrant,EC2)使用不同的操作系统默认用户?
我正在写一本烹饪书,它将在Ubuntu上运行。它将在默认用户的主页中创建一个目录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 解决这类问题的
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
。非常感谢你!是的,你的解决方案看起来也不错。我很乐意帮忙。如果你不介意的话,请把我的回答标为接受。这既增加了我的分数,也帮助其他可能遇到这个问题的人直接找到工作答案。谢谢