2015-09-09 24 views
6

Per testare Ansible, ho creato una macchina virtuale Vagrant che può essere provisioning con vagrant provision, datoImposta nome host per Vagrant VM in Ansible

config.vm.provision "ansible" do |ansible| 
    ansible.playbook = "site.yml" 
end 

nel Vagrantfile. Questo funziona quando ho impostato hosts-all,

- hosts: all 
    sudo: true 
    roles: 
    - common 
    - ssl 
    - webserver 

In alternativa, il file

.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory 

che è generato da Vagrant si dice

default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 

il che significa che il nome del Vagrant VM è default. Quindi,

- hosts: default 

fa anche quello che voglio. Tuttavia, mi piacerebbe avere un nome più specifico per la VM (ad esempio vagrant, ad esempio).

C'è un modo per cambiare quel nome in qualcos'altro?

risposta

8

Il trucco è quello di definire la VM (qui con 2 macchine virtuali production e 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 

Poi vagabondo genera il seguente inventario:

production ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 
staging ansible_ssh_host=127.0.0.1 ansible_ssh_port=2200 

Vedi anche this answer.

1

Potete leggere The inventory file dal doc vagabonda

Se si desidera modificare il nome della macchina virtuale, si potrebbe avere qualcosa di simile

Vagrant.configure("2") do |config| 
    config.vm.define "host1" 
    config.vm.provision "ansible" do |ansible| 
    ansible.playbook = "site.yml" 

che produrrà il file di magazzino

# Generated by Vagrant 

host1 ansible_ssh_host=... 

Si noti che il vagabondo ha anche proposto un'opzione static inventory che consente di scrivere il proprio file di inventario e fare riferimento allo inventory_path opzione

+0

Questo solo cambia solo il 'hostname' all'interno della macchina virtuale, non il contenuto di'.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory' e quindi non si riferisce al nome Ansible. –

3

Per cambiare solo il nome host inventario in .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory, uso:

config.vm.define "myvm" 

Ciò genererà il seguente:

# Generated by Vagrant 
myvm ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 

Così, ansible inventory_hostname diventerà myvm.

Se si vuole anche cambiare il nome della macchina, l'uso:

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