Расширенная конфигурация VagrantFile
Хотелось бы представить конфигурацию для vagrant с расширенными опциями.
Отключение общих (shared) папок.
config.vm.synced_folder ".", "/vagrant", id: "vagrant-root", disabled: true
Изменить число выделенных процессоров.
Если используете VirtualBox в качестве виртуализации:
config.vm.provider "virtualbox" do |v| v.customize ["modifyvm", :id, "--cpus", "8"] end
Если используете VMware Fusion в качестве виртуализации:
config.vm.provider "vmware_fusion" do |v| v.vmx["numvcpus"] = "6" end
Изменить объем отведенной оперативной памяти (RAM).
Если используете VirtualBox в качестве виртуализации:
config.vm.provider "virtualbox" do |v| v.customize ["modifyvm", :id, "--memory", "1024"] end
Если используете VMware Fusion в качестве виртуализации:
config.vm.provider "vmware_fusion" do |v| v.vmx["memsize"] = "4096" end
Добавить Host Only Unconfigured NIC.
Если используете VirtualBox в качестве виртуализации:
config.vm.provider "virtualbox" do |v| v.customize ["modifyvm", :id, "--nic2", "intnet"] end
Если используете VMware Fusion в качестве виртуализации:
config.vm.provider "vmware_fusion" do |v| v.vmx["ethernet1.present"] = "TRUE" v.vmx["ethernet1.connectionType"] = "hostonly" v.vmx["ethernet1.addressType"] = "generated" v.vmx["ethernet1.virtualDev"] = "e1000" end
Приведу пример моего файла:
# cat Vagranfile
Мой vagrantfile выглядит следующим образом:
# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# set to false, if you do NOT want to check the correct VirtualBox Guest Additions version when booting this box
#if defined?(VagrantVbguest::Middleware)
#config.vbguest.auto_update = true
#end
config.vm.box = "Vagrant"
config.vm.box_url = "https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.2/vagrant-centos-7.2.box"
config.vm.boot_timeout = 300
#################################################################
# NETWORK
# https://www.vagrantup.com/docs/networking/public_network.html
#################################################################
config.vm.network "public_network", type: "dhcp", bridge: "en0: Wi-Fi (AirPort)"
#STATIC: ip: "192.168.0.17"
#DHCP: use_dhcp_assigned_default_route: true
#DEFAULT NETWORK INTERFACE: public_network: "wlan0"
config.vm.network 'private_network', ip: "192.168.130.10", auto_config: "false"
# Static IP: ip: "192.168.50.4"
#name: "VirtualBox Host-Only Ethernet Adapter"
#virtualbox__intnet: "mynetwork"
#nic_type: "virtio"
#virtualbox__intnet: "mynetwork"
#auto_config: false
config.vm.network 'private_network', ip: "192.168.130.20", auto_config: "false"
config.vm.network 'private_network', ip: "192.168.130.30", auto_config: "false"
config.vm.network 'private_network', ip: "192.168.130.40", auto_config: "false"
#config.vm.network :forwarded_port, guest: 5601, host: 5601
#config.ssh.port = 2222
#config.ssh.host = "192.168.130.10"
#config.vm.network :forwarded_port, guest: 22, host: 2222, id: "ssh", auto_correct: true
config.vm.provision :shell, :inline => 'sudo service network restart'
#################################################################
# SSH
#################################################################
config.ssh.forward_agent = true
config.ssh.shell = "bash -c 'BASH_ENV=/etc/profile exec bash'" # avoids 'stdin: is not a tty' error.
config.vm.hostname = "vagrant-ansible"
#config.ssh.username = "vagrant"
#confg.ssh.password = "vagrant"
#config.ssh.private_key_path = ["~/.vagrant.d/insecure_private_key"]
#config.ssh.private_key_path = './keys/ansible.rsa'
#config.ssh.insert_key = false
#config.vm.provision "file", source: "./keys", destination: "~/.ssh/"
#config.vm.provision :shell, :inline => 'sed -i -e "s/PasswordAuthentication no/PasswordAuthentication yes/g" /etc/ssh/sshd_config'
#config.vm.provision :shell, :inline => 'sudo service sshd restart'
#config.vm.provision "shell", inline: <<-EOC
# sudo sed -i -e "\\#PasswordAuthentication no# s#PasswordAuthentication no#PasswordAuthentication yes#g" /etc/ssh/sshd_config
# sudo service ssh restart
# EOC
#
##################################################################
# VIRTUALBOX conficurations
##################################################################
config.vm.provider :virtualbox do |vb|
# Don't boot with headless mode
vb.gui = false
vb.name = "vagrant-ansible"
#v.linked_clone = true
#v.linked_clone = true if Vagrant::VERSION =~ /^1.8/
vb.customize ["modifyvm", :id, "--memory", "1024"]
vb.customize ["modifyvm", :id, "--vram", "128"]
vb.customize ["modifyvm", :id, "--cpus", "2"]
vb.customize ["modifyvm", :id, "--cpuexecutioncap", "75"]
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
vb.customize ["modifyvm", :id, "--ioapic", "on"]
vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
#unless File.exist?(disk)
#vb.customize ['createhd', '--filename', disk, '--variant', 'Fixed', '--size', 1 * 1024]
##vb.customize ['createhd', '--filename', disk, '--size', 500 * 1024]
#end
#vb.customize ['storageattach', :id, '--storagectl', 'SATA Controller', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', disk]
end
##################################################################
# RSYNCd
##################################################################
# config.vm.synced_folder ".", "/home/vagrant/test", create: "./test", owner:"captain", group:"staff", mount_options:["dmode=776", "fmode=775"], disabled: true
#
#config.vm.synced_folder ".", "/home/vagrant", type: "rsync", rsync__exclude: ["Vagrantfile", ".vagrant", "keys"], dest_port: 2222
#config.vm.synced_folder ".", "/home/vagrant", type: "rsync",
# rsync__args: [
# "--verbose", "--archive", "-z", "--copy-links", # defaults
# "--ignore-existing", "--include=test2.txt", "--exclude='*'"
# ]
##################################################################
# ANSIBLE
##################################################################
config.vm.provision "shell", inline: <<-SHELL
yum --disablerepo=* --enablerepo=epel list
yum update -y && yum upgrade -y
yum install epel-release htop net-tools -y &> /dev/null
yum install ansible -y
SHELL
config.vm.provision "ansible" do |ansible|
ansible.sudo = true
ansible.verbose = "vvv"
ansible.playbook = "./ansible/setup.yml"
ansible.inventory_path = "./ansible/inventory"
ansible.host_key_checking = "false"
ansible.limit = "all"
end
##################################################################
# SHELL scripts
##################################################################
config.vm.provision "shell", inline: <<-SHELL
echo "HELLO";
#service network restart
SHELL
config.vm.provision :shell, :path => "shell/test.sh"
#################################################################
# another VM
#################################################################
#config.vm.define "web" do |web|
# web.vm.box = "apache"
#end
#################################################################
end
Он не сильно сложный для понимания, и у меня больше нечего добавить. Статья «Расширенная конфигурация VagrantFile» завершена.