2015-09-09 34 views
6

do testowania ansibl, mam założyć Vagrant VM, który może być zaopatrzony z vagrant provision, zważywszyUstaw nazwę hosta dla Vagrant VM w ansibl

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

w Vagrantfile. Działa to kiedy ustawić hosts do all,

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

Alternatywnie, plik

.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory 

który jest generowany przez samą Vagrant mówi

default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 

co oznacza, że ​​nazwa Vagrant VM default. Dlatego też robię to, co chcę.Jednak chciałbym mieć bardziej konkretną nazwę maszyny wirtualnej (na przykład vagrant).

Czy istnieje sposób na zmianę tej nazwy na coś innego?

Odpowiedz

8

Sztuką jest określić VM (tutaj z 2 maszyn wirtualnych production i 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 

Następnie włóczęga generuje następujący inwentarz:

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

Zobacz także this answer.

1

Możesz przeczytać The inventory file z Vagrant doc

Jeśli chcesz zmienić nazwę maszyny wirtualnej, można mieć coś podobnego

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

która będzie produkować plik zapasami

# Generated by Vagrant 

host1 ansible_ssh_host=... 

Należy zauważyć, że włóczęga zaproponował również opcję static inventory, która pozwoli ci napisać własny plik inwentaryzacji i odwołać się do inventory_path opcja

+0

to tylko zmienia tylko 'hostname' wewnątrz maszyny wirtualnej, a nie zawartość'.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory' a zatem nie nazwa "Ansible" odnosi się do. –

3

Aby zmienić tylko nazwę hosta w inwentaryzacji.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory, zastosowanie:

config.vm.define "myvm" 

To wygeneruje następujący:

# Generated by Vagrant 
myvm ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 

Zatem ansibl inventory_hostname staną myvm.

Jeśli chcesz również zmienić nazwę hosta urządzenia, zastosowanie:

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