тому що infrastructure as code!

ще трохи про створення віртуальних машин за допомогою vagrant. перейдімо до автоматизованої конфігурації (provisioning)… як?

іх єсть у мєня. себто, вичитав і пробую:

config.vm.define "ansible" do |ansible|
ansible.vm.box = BOX_BASE
ansible.vm.hostname = "ansible"
ansible.vm.network "private_network", ip: "192.168.8.10"
ansible.vm.network :forwarded_port, guest: 22, host: 8022

# Provisioning:
# ...install ansible
ansible.vm.provision "ansible", type: "shell", path: "scripts/setup_ansible.sh"
# ...install some useful tools: lf file manager and micro text editor
ansible.vm.provision "tools", type: "shell", path: "scripts/setup_tools.sh"
end

два простеньких скрипти bash лежать на хості, але запускаються на віртуалці ansible одразу після старту:
  • scripts/setup_ansible.sh — зовсім примітивний, встановлює ansible із залежностями з репозиторіїв debian;
  • scripts/setup_tools.sh — не набагато складніший, затягує бінарники двох маленьких софтин, без яких незручно: lf (файловий менеджер) та micro (текстовий редактор).
навіщо два? бо тренувався запускати окремо, наприклад:

> vagrant provision ansible --provision-with tools

але навіщо все це — ти ж вивчав мережі!? тому що infrastructure as code кермує, і все рухається до цього — навіть cisco.

p.s. скрипт setup_tools.sh, собі на згадку (далеко не ідеально, але працює):