Используем бродягу для тестов, он же vagrant
Как то обошел меня "бомж" стороной, давно видел на хабре статьи но не приходилось использовать, а тут недавно пришлось оценить для тестов.
И еще начал я на тазиках своих рабочих/домашних использовать manjaro, поэтому инструкция для него и arch'a плюс он у меня через virtualbox, однако существует возможность работать с lxc, libvirt и другими.
Устанавливаем:
vagrantfile
vagrantfile
Устанавливаем:
# pacman -S vagrant virtualboxСледующим шагом дергаем сервис который подгружает модули
# systemctl restart systemd-modules-load.serviceДальше ставим модули самого vagrant'a
$ vagrant plugin install vagrant-vbguest vagrant-share vagrant-disksizeДобавляем пользователя user в группу
# gpasswd -a user vboxusersСоздаем файл который выкатит нам 4 виртуалки и закинет туда ключи:
vagrantfile
Vagrant.configure(2) do |config| config.vm.box = "ubuntu/xenial64" config.vm.define :node1 do |node1| node1.vm.host_name = "node1" node1.disksize.size = '50GB' node1.vm.network "private_network", ip:"192.168.35.10" node1.vm.provider :virtualbox do |vb| vb.customize ["modifyvm", :id, "--memory", "2048"] vb.customize ["modifyvm", :id, "--cpus", "1"] end end config.vm.define :node2 do |node2| node2.vm.host_name = "node2" node2.disksize.size = '50GB' node2.vm.network "private_network", ip:"192.168.35.11" node2.vm.provider :virtualbox do |vb| vb.customize ["modifyvm", :id, "--memory", "2048"] vb.customize ["modifyvm", :id, "--cpus", "1"] end end config.vm.define :node3 do |node3| node3.vm.host_name = "node3" node3.disksize.size = '50GB' node3.vm.network "private_network", ip:"192.168.35.12" node3.vm.provider :virtualbox do |vb| vb.customize ["modifyvm", :id, "--memory", "2048"] vb.customize ["modifyvm", :id, "--cpus", "1"] end end config.vm.define :node4 do |node4| node4.vm.host_name = "node4" node4.disksize.size = '50GB' node4.vm.network "private_network", ip:"192.168.35.13" node4.vm.provider :virtualbox do |vb| vb.customize ["modifyvm", :id, "--memory", "2048"] vb.customize ["modifyvm", :id, "--cpus", "1"] end end id_rsa_ssh_key_pub = File.read(File.join(Dir.home, ".ssh", "id_rsa.pub")) config.vm.provision :shell, :inline => "echo 'Copying local public SSH Key to VM auth_key' && echo '\n' >> /home/ubuntu/.ssh/authorized_keys && echo '#{id_rsa_ssh_key_pub }' >> /home/ubuntu/.ssh/authorized_keys && chmod 600 /home/ubuntu/.ssh/authorized_keys" config.vm.provision :shell, :inline => "apt-get update -y && apt-get install aptitude -y && aptitude safe-upgrade -y && aptitude install net-tools bind-utils mc htop iftop -y" # need for git clone repo config.ssh.forward_agent = "true" endТак же это можно сократить используя цикл:
vagrantfile
$num = 4 Vagrant.configure("2") do |config| config.vm.provider "virtualbox" do |vb| vb.memory=2048 vb.cpus=1 config.vm.box="ubuntu/xenial64" end (1..$num).each do |i| config.vm.define "node#{i}" do |node| node.vm.network "private_network", ip: "192.168.35.#{9+i}" node.vm.hostname = "node#{i}" node.disksize.size = '50GB' end end id_rsa_ssh_key_pub = File.read(File.join(Dir.home, ".ssh", "id_rsa.pub")) config.vm.provision :shell, :inline => "echo 'Copying local public SSH Key to VM auth_key' && echo '\n' >> /home/ubuntu/.ssh/authorized_keys && echo '#{id_rsa_ssh_key_pub }' >> /home/ubuntu/.ssh/authorized_keys && chmod 600 /home/ubuntu/.ssh/authorized_keys" config.vm.provision :shell, :inline => "apt-get update -y && apt-get install aptitude -y && aptitude safe-upgrade -y && aptitude install net-tools bind-utils mc htop iftop -y" # need for git clone repo config.ssh.forward_agent = "true" endПосле делаем
vagrant upИ наблюдаем сетап, если все хорошо на выходе получаем 4 хоста которые можно использовать, тестить рольки и прочее. И да если кто не заметил то пользователь под которым необходимо заходить на свежевыкатаные хосты - ubuntu