В этой статье рассмотрим создание трёх (3-х) виртуальных машин в VirtualBox с помощью Vagrant. Deb-машины будем донастраивать с помощью отдельного скрипта bash, а Centos донастроим из vagrantfile.
Vagrant и VirtualBox установлены на Windows. У нас должна получиться такая вложенность файлов и папок в проекте Vagrant:
Содержимое vagrantfile будет следующим:
Vagrant.configure("2") do |config| config.vm.provider "virtualbox" do |vb| # определяем значения по умолчанию: vb.memory = "1024" # ОЗУ 1Гб vb.cpus = 1 # 1 процессор end ##### Install Ubuntu machine ##### config.vm.define "ubuntu" do |ubuntu| ubuntu.vm.box = "ubuntu/trusty64" # указываем, какой бокс используем для ВМ ubuntu.vm.network "public_network", ip: "192.168.88.21" # устанавливаем IP ubuntu.vm.hostname = "ubuntu.home.local" # устанавливаем имя ubuntu.vm.provision "shell", path: "scripts/pre.sh" # объявляем выполнение срипта после запуск ВМ end ##### Install Debian Bulseye machine ##### config.vm.define "bullseye" do |bullseye| bullseye.vm.box = "debian/bullseye64" bullseye.vm.box_check_update = false bullseye.vm.network "public_network", ip: "192.168.88.22" bullseye.vm.hostname = "bullseye.home.local" bullseye.vm.provider "virtualbox" do |vb| vb.cpus = 2 # а здесь переопределим количество процессоров vb.memory = "2048" # и объем ОЗУ end bullseye.vm.provision "shell", path: "scripts/pre.sh" end ##### Install CentOS 7 machine ##### config.vm.define "centos" do |centos| centos.vm.box = "centos/7" centos.vm.network "public_network", ip: "192.168.88.23" centos.vm.hostname = "centos.home.local" centos.vm.provision "shell", inline: <<-SHELL # начало команд bash setenforce 0 yum upgrade yum install -y curl wget mc policycoreutils-python openssh-server perl sshpass systemctl enable sshd systemctl start sshd useradd admin usermod -aG wheel admin echo 'admin ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers echo "admin:slozhnyiP@ss" | chpasswd sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config systemctl restart sshd SHELL # конец команд bash end end
Содержимое файда scripts/pre.sh, который будет применятся для Debian и Ubuntu, с комментариями:
#! /bin/sh setenforce 0 # отключим SELinux на всякий apt-get update # обновим список пакетов apt-get install -y sudo mc curl openssh-server perl sshpass ca-certificates htop python3# базовый софт для сервера # теперь добавим пользователя admin useradd -m admin -g sudo echo "admin:slozhnyiP@ss" | chpasswd usermod -s /bin/bash admin sh -c "echo 'admin ALL=NOPASSWD: ALL' >> /etc/sudoers.d/admin" # добавим пользователя в sudo sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config # установим вход по паролю для ssh service ssh restart # перезапуск sshd # имейте в виду, что systemctl restart не отрабатывает в Ubuntu Trusty!!!
Запустим проверку нашего vagrantfile:
vagrant validate
Если всё хорошо, то для запуска наших виртуалок выполним команду:
vagrant up
После выполнения команды, мы будем иметь три машины в VirtualBox, которые используем позже для дальнейших опытов.