在 Ansible 中为 Vagrant VM 设置主机名
Set host name for Vagrant VM in Ansible
为了测试 Ansible,我设置了一个可以使用 vagrant provision
提供的 Vagrant VM,给定
config.vm.provision "ansible" do |ansible|
ansible.playbook = "site.yml"
end
在Vagrantfile
。这在我将 hosts
设置为 all
、
时有效
- hosts: all
sudo: true
roles:
- common
- ssl
- webserver
或者,文件
.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory
这是由 Vagrant 自己生成的
default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222
表示 Vagrant VM 的名称是 default
。因此,
- hosts: default
也做我想做的。但是,我想为 VM 取一个更具体的名称(例如 vagrant
)。
有没有办法将该名称更改为其他名称?
您可以从 vagrant 文档中阅读 The inventory file
如果你想更改 VM 的名称,你可以使用
Vagrant.configure("2") do |config|
config.vm.define "host1"
config.vm.provision "ansible" do |ansible|
ansible.playbook = "site.yml"
这将生成清单文件
# Generated by Vagrant
host1 ansible_ssh_host=...
请注意,vagrant 还提出了一个 static inventory option which will allow you to write your own inventory file and reference with the inventory_path
选项
诀窍是定义 VM(这里有 2 个 VM production
和 staging
):
config.vm.define "production" do |production|
production.vm.hostname = "production.example.com"
end
config.vm.define "staging" do |staging|
staging.vm.hostname = "staging.example.com"
end
然后vagrant生成如下库存:
production ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222
staging ansible_ssh_host=127.0.0.1 ansible_ssh_port=2200
另见 this answer。
要在 .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory
中仅更改 清单主机名 ,请使用:
config.vm.define "myvm"
这将生成以下内容:
# Generated by Vagrant
myvm ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222
因此,ansible inventory_hostname
将变为 myvm
。
如果您想也更改机器的主机名,请使用:
config.vm.define "myvm" do |myvm|
myvm.vm.hostname = "myvm.example.com"
end
为了测试 Ansible,我设置了一个可以使用 vagrant provision
提供的 Vagrant VM,给定
config.vm.provision "ansible" do |ansible|
ansible.playbook = "site.yml"
end
在Vagrantfile
。这在我将 hosts
设置为 all
、
- hosts: all
sudo: true
roles:
- common
- ssl
- webserver
或者,文件
.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory
这是由 Vagrant 自己生成的
default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222
表示 Vagrant VM 的名称是 default
。因此,
- hosts: default
也做我想做的。但是,我想为 VM 取一个更具体的名称(例如 vagrant
)。
有没有办法将该名称更改为其他名称?
您可以从 vagrant 文档中阅读 The inventory file
如果你想更改 VM 的名称,你可以使用
Vagrant.configure("2") do |config|
config.vm.define "host1"
config.vm.provision "ansible" do |ansible|
ansible.playbook = "site.yml"
这将生成清单文件
# Generated by Vagrant
host1 ansible_ssh_host=...
请注意,vagrant 还提出了一个 static inventory option which will allow you to write your own inventory file and reference with the inventory_path
选项
诀窍是定义 VM(这里有 2 个 VM production
和 staging
):
config.vm.define "production" do |production|
production.vm.hostname = "production.example.com"
end
config.vm.define "staging" do |staging|
staging.vm.hostname = "staging.example.com"
end
然后vagrant生成如下库存:
production ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222
staging ansible_ssh_host=127.0.0.1 ansible_ssh_port=2200
另见 this answer。
要在 .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory
中仅更改 清单主机名 ,请使用:
config.vm.define "myvm"
这将生成以下内容:
# Generated by Vagrant
myvm ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222
因此,ansible inventory_hostname
将变为 myvm
。
如果您想也更改机器的主机名,请使用:
config.vm.define "myvm" do |myvm|
myvm.vm.hostname = "myvm.example.com"
end