Создаём виртуальные машины с Ubuntu Trusty, Debian 11 и Centos 7 с использованием Vagrant

В этой статье рассмотрим создание трёх (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, которые используем позже для дальнейших опытов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *