Vagrant 在Ansible中为流浪VM设置主机名

Vagrant 在Ansible中为流浪VM设置主机名,vagrant,ansible,vagrantfile,Vagrant,Ansible,Vagrantfile,为了测试Ansible,我设置了一个Vagrant VM,它可以通过Vagrant provision进行配置,如下所示 config.vm.provision "ansible" do |ansible| ansible.playbook = "site.yml" end 在文件中。当我将hosts设置为all时,此功能会起作用 - hosts: all sudo: true roles: - common - ssl - webserver 或者,文件

为了测试Ansible,我设置了一个Vagrant VM,它可以通过
Vagrant provision
进行配置,如下所示

config.vm.provision "ansible" do |ansible|
  ansible.playbook = "site.yml"
end
文件中
。当我将
hosts
设置为
all
时,此功能会起作用

- hosts: all
  sudo: true
  roles:
    - common
    - ssl
    - webserver
或者,文件

.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory
这是由流浪者自己说的

default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222
这意味着流浪VM的名称是
default
。因此,

- hosts: default
也做我想做的。但是,我希望对VM有一个更具体的名称(例如,
vagrant

有没有办法把这个名字改成别的名字?

你可以从流浪汉医生那里读到

如果要更改虚拟机的名称,可以使用以下命令

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还提出了一个选项,允许您编写自己的库存文件,并使用该选项进行引用。诀窍是定义VM(这里有两个VM
production
staging
):

然后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
另请参见。

若要仅更改
中的目录主机名。vagrant/provisioners/ansible/inventory/vagrant\u ansible\u inventory
,请使用:

config.vm.define "myvm"
这将产生以下结果:

# Generated by Vagrant
myvm ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222
因此,ansible
inventory\u主机名
将变成
myvm

如果要同时更改计算机的主机名,请使用:

config.vm.define "myvm" do |myvm|
  myvm.vm.hostname = "myvm.example.com"
end

这只会更改虚拟机内的主机名,而不会更改.vagrant/provisioners/ansible/inventory/vagrant\u ansible\u inventory的内容,因此ansible所指的名称不会更改。
config.vm.define "myvm" do |myvm|
  myvm.vm.hostname = "myvm.example.com"
end