продовжую вивчати 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, здається, не працюють як слід — не впетраю, чому. хтось підкаже?

9 коментар(ів):

Disfinder сказав...

Не пробував ансібл у cygwin запускати?
За великим рахунком, має бути достатньо пайтона на сервер- машині

tivasyk сказав...

@disfinder ще не пробував. ansible на windows — це як сідло на корові, нмсд: теоретично можна, але результат не гарантовано, та й навіщо, якщо підняти віртуалку з linux — справа трьох хвилин для vagrant'а?

tivasyk сказав...

@disfinder от зацікавив ти мене тим cygwin’ом… я про нього читав, але ніколи раніше не пробував. час настав =)

tivasyk сказав...

@disfinder знайшов непогану підказку щодо встановлення ansible/cygwin на windows, але там є й таке: «If you would like to use Ansible as a provisioner for Vagrant, you can try, but after a day's worth of frustration (to the point of trying to add custom .bat files, changing Windows' and Linux' %PATH%/$PATH multiple times, and doing a hundred other things besides), I would recommend using Linux or a Mac to use Vagrant + Ansible together». це, плюс складність встановлення і налаштування в порівнянні з простотою на linux… змушують задуматися: навіщо? звідси питання: якщо ти користуєшся cygwin «в реальному житті» — для яких задач?

tivasyk сказав...

@disfinder овва! на windows 10 навіть cygwin не потрібен?! мікрософтівці тихенько затулили до своєї системи щось подібне і назвали це windows subsystem for linux

Disfinder сказав...

Мій останній досвід із цигвіном був більше 5 років тому, і звісно, вимушений - я його використовував як ссш-клієнт до лінуксів, бо зручно мати автодоповнення, ну і греп по логам та пайтон мене влаштовували.
Пізніше пересів на лінукс, а ще пізніше на мак.
Оця сабсистема в 10ці пару тижнів назад змусила нас із колегою шукати проблему, де її не було - плейбука чудово працювала на лінуксі і макос, але видавала якусь дику помилку на тому псевдолінуксі.

Disfinder сказав...

Сьогодні якби я мав запускати ансібл на віндовсі, я би спробував зібрати собі для того Докер контейнер на базі чогось, хоч убунту, хоч чого, і ним би користувався.

Disfinder сказав...

config.vm.hostname (string) - The hostname the machine should have. Defaults to nil. If nil, Vagrant will not manage the hostname. If set to a string, the hostname will be set on boot. If set, Vagrant will update /etc/hosts on the guest with the configured hostname.

tivasyk сказав...

@disfinder цього не було в підказці «ansible up and running», але я дуже швидко сам дочитався до vm.hostname =) дякую!

Дописати коментар

увага!
коментарі не модерую, проте спам видаляю нещадно. посилання на інші сайти/блоги за темою допису вітаю.

додаткові можливості розмітки (кутики набрати з клавіатури):
  ‹b›жирний шрифт‹/b›
  ‹i›похилий шрифт‹/i›
  ‹a href="http://tivasyk.info"›посилання‹/a›