Ссылки
1 2 3 4 5 |
https://www.vagrantup.com/docs - документация https://www.vagrantup.com/downloads - загрузка установщика Linux \ Mac \ Windows https://learn.hashicorp.com/tutorials/vagrant/getting-started-boxes - быстрый старт https://app.vagrantup.com/boxes/search - все возможные боксы (образы ВМ) https://wiki.archlinux.org/title/Vagrant |
Команды
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
0. Создаем каталог и инициализируем vagrant mkdir primer0 - создали каталог primer0 cd primer0 - перешли в него vagrant init - выполнили инициализацию vagrant (Создался файл Vagrant) 1. Редактируем файл vim Vagrant 2. Управление vagrant up - запуск ВМ vagrant plugin install vagrant-libvirt - добавить плагин для libvirt #vagrant plugin install vagrant-vbguest vagrant-share - добавить плагин для vagrant plugin install vagrant-lxc - добавить плагин для lxc vagrant up --provider=libvirt - переназначаем провайдера (docker, virtualbox, vmware_fusion) vagrant shutdown - Остановка ВМ vagrant destroy - удалить ВМ vagrant ssh-config - показать параметры подключения (IP адрес ВМ) vagrant provision - выполнить provision (запуск скриптов ansible, bash) vagrant ssh - подключится к ВМ по ssh 3. Дополнительные возможности vagrant box add hashicorp/bionic64 - Скачать образ hashicorp/bionic64 (Ububntu 18.04) vagrant init hashicorp/bionic64 - Выполнили инициализацию с ВМ bionic (Ububntu 18.04) |
Vagrant ubuntu 16.04 (no offcial)
1 2 3 |
Vagrant.configure("2") do |config| config.vm.box = "generic/ubuntu1604" end |
Vagrant ubuntu 16.04 (official virtualbox only)
1 2 3 |
Vagrant.configure("2") do |config| config.vm.box = "ubuntu/xenial64" end |
Vagrant ubuntu 18.04 (no offcial)
1 2 3 |
Vagrant.configure("2") do |config| config.vm.box = "generic/ubuntu1804" end |
Vagrant ubuntu 20.04 (no offcial)
1 2 3 |
Vagrant.configure("2") do |config| config.vm.box = "generic/ubuntu2004" end |
Vagrant ubuntu 20.10 (no offcial)
1 2 3 |
Vagrant.configure("2") do |config| config.vm.box = "generic/ubuntu2010" end |
Vagrant debian 8
1 2 3 |
Vagrant.configure("2") do |config| config.vm.box = "debian/jessie64" end |
Vagrant debian 9
1 2 3 |
Vagrant.configure("2") do |config| config.vm.box = "debian/stretch64" end |
Vagrant debian 10
1 2 3 |
Vagrant.configure("2") do |config| config.vm.box = "debian/buster64" end |
Vagrant debian 11
1 2 3 |
Vagrant.configure("2") do |config| config.vm.box = "debian/bullseye64" end |
Vagrant CentOS 7
1 2 3 |
Vagrant.configure("2") do |config| config.vm.box = "centos/7" end |
Vagrant CentOS 8
1 2 3 |
Vagrant.configure("2") do |config| config.vm.box = "generic/centos8" end |
Vagrant Docker
1 2 3 4 5 |
Vagrant.configure("2") do |config| config.vm.provider "docker" do |d| d.image = "foo/bar" end end |
Vagrant пример №1 При развертывании есть возможность добавить копирование/синхронизацию каталога
1 2 3 4 |
Vagrant.configure("2") do |config| config.vm.box = "debian/jessie64" config.vm.synced_folder "app/", "/var/www/app" end |
Vagrant пример №2 При развертывании есть возможность настроить сеть например проброс портов
1 2 3 4 5 |
Vagrant.configure("2") do |config| config.vm.box = "debian/jessie64" config.vm.synced_folder "app/", "/var/www/app" config.vm.network "forward_port", guest: 8080, host:8081 end |
Vagrant пример №3 Запуск программ и скриптов
1 2 3 4 5 6 7 8 9 10 |
Vagrant.configure("2") do |config| config.vm.box = "debian/jessie64" config.vm.synced_folder "app/", "/var/www/app" config.vm.network "forward_port", guest: 8080, host:8081 config.vm.define "app" do |app| app.vm.provision "shell", line: "apt-get install -y nodejs npm" end end |
Vagrant пример №4 Запуск программ и скриптов
1 2 3 4 5 6 7 8 9 10 |
Vagrant.configure("2") do |config| config.vm.box = "debian/jessie64" config.vm.synced_folder "app/", "/var/www/app" config.vm.network "forward_port", guest: 8080, host:8081 config.vm.define "app" do |app| app.vm.provision "shell", line: "apt-get install -y nodejs npm" end end |
Vagrant пример №5 Запуск программ и скриптов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Vagrant.configure("2") do |config| config.vm.box = "debian/jessie64" config.vm.synced_folder "app/", "/var/www/app" config.vm.network "forward_port", guest: 8080, host:8081 config.vm.define "app" do |app| app.vm.provision "shell", line: "apt-get install -y nodejs npm" end $script - <<-SCRIPT apt-get install nodejs npm -y SCRIPT app.vm.provision "shell", inline: $script app.vm.provision "shell", path: "scripts/pre.sh" end |
Vagrant пример №6 Для настройки ВМ поддерживаются конфигурационные менеджеры, такие как Ansible, Chef, Puppet, Salt
1 2 3 4 5 6 7 |
Vagrant.configure("2") do |config| config.vm.box = "debian/jessie64" app.vm.provision "ansible_local" do |ansible| ansible.playbook = "playbooks/node.yaml" ansible.become = true ansible.become_user = "root" end |
Vagrant пример №7используем shell разворачиваем CentOS — gitlib
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
Vagrant.configure("2") do |config| config.vm.box = "centos/7" config.vm.hostname = "gitlab" config.vm.provider "libvirt" do |domain| domain.memory = "4096" domain.cpus = "4" end config.vm.provision "shell", inline: <<-SHELL yum -y update yum install -y curl policycoreutils-python openssh-server perl systemctl enable sshd systemctl start sshd firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https systemctl reload firewalld yum install postfix systemctl enable postfix systemctl start postfix curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash EXTERNAL_URL="https://gitlab.linux.local" yum install -y gitlab-ce SHELL end |
Vagrant пример №8 используем ansible provision разворачиваем Debian 10 и применяем test.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Vagrant.configure("2") do |config| config.vm.synced_folder ".", "/vagrant", disabled: true config.vm.box = "debian/buster64" config.vm.hostname = "superhost" # config.vm.network "public_network", # :dev => "br0", # :ovs => "true" config.vm.provider "libvirt" do |domain| domain.memory = "1024" domain.cpus = "2" end config.vm.provision "ansible" do |ansible| ansible.playbook = "test.yaml" end end |
Vagrant пример №9
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
Vagrant.configure(2) do |config| config.vm.box = "debian/bullseye64" config.vm.synced_folder ".", "/vagrant", disabled: true config.vm.define "sb" do |sb| sb.vm.hostname = "sb" sb.vm.network "private_network", ip: "192.168.200.200" config.vm.provider "libvirt" do |sb| #sb.name = "sb" sb.memory = "1024" sb.cpus = "1" end sb.vm.provision "ansible" do |ansible| ansible.playbook = "sb.yaml" end end config.vm.define "cb" do |cb| cb.vm.hostname = "cb" cb.vm.network "private_network", ip: "192.168.200.201" config.vm.provider "libvirt" do |cb| # cb.name = "cb" cb.memory = "1024" cb.cpus = "2" end cb.vm.provision "ansible" do |ansible| ansible.playbook = "cb.yaml" end end end |