знижка на vagrant’и: дві коробки за ціною однієї

| комп'ютери, windows, linux, vagrant

продовжую вивчати vagrant методом «наукового тику» (насправді ні): запропонований в підготовчому розділі «ansible up and running» варіант запускати одну тестову машину мені не підійшов — ansible не працює на windows (це не зовсім правда, але…), тож мені потрібно дві тестових віртуалки: одна як сервер, на другій ansible. як це зробити з vagrant?

multi-machine

виявляється, все передбачено. додаємо преконфігурацію приватної мережі зі статичними адресами та переадресування портів — і маємо Vagrantfile (див. далі), який піднімає дві «коробки»:
  • server (192.168.8.1, порт 22 <- 8122 на хості)
  • ansible (192.168.8.2, порт 22 <- 8222 на хості)
до кожної можна за-ssh-тися двома способами (з теки з Vagrantfile’ом):

vagrant ssh <назва>

або

ssh vargant@127.0.0.1 -p 8x22 -i .\.vagrant\machines\<назва>\virtualbox\private_key

інфраструктура як код

тут x — 1 або 2, а <назва> — server або ansible, див. Vagrantfile:

Vagrant.configure("2") do |config|
config.vm.define "server" do |server|
server.vm.box = "debian/stretch64"
server.vm.network "private_network", ip: "192.168.8.1"
server.vm.network :forwarded_port, guest: 22, host: 8122
server.vm.provision :shell, inline: "Machine «server» is up..."
end

config.vm.define "ansible" do |ansible|
ansible.vm.box = "debian/stretch64"
ansible.vm.network "private_network", ip: "192.168.8.2"
ansible.vm.network :forwarded_port, guest: 22, host: 8222
ansible.vm.provision :shell, inline: "Machine «ansible» is up..."
end
end

трохи чітерства і питання

імена машин (hostname) я міняв руками на ті ж таки server та ansible вже через ssh:

(sudo) hostnamectl set-hostname <назва>

але як це зробити vagrant'ом на етапі створення машини? мої тестові рядки provision, здається, не працюють як слід — не впетраю, чому. хтось підкаже?