在Ansible中设置Vagrant VM的主机名

时间:2015-09-09 15:56:01

标签: vagrant ansible vagrantfile

为了测试Ansible,我设置了一个Vagrant VM,可以配置vagrant provision,给定

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)。

有没有办法将该名称更改为其他名称?

2 个答案:

答案 0 :(得分:3)

要在.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

答案 1 :(得分:1)

您可以阅读vagrant doc

中的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选项,允许您使用inventory_path选项编写自己的库存文件和参考