Init, SSH
Завдання
- Встановити Ansible на Linux машину або на VM (Debian, Ubuntu, Fedora, Arch, etc.) яка буде виступати в ролі
controlnode. Запускати від окремо створеного користувача ansible, з правами sudo. - Створити ssh ключі для користувача
ansible - Налаштувати другу VM (Debian, Ubuntu, Fedora, Arch, etc.), яка буде виступати в ролі
server. Створити користувача ansible з правами sudo. Між двома машинами має бути встановлено мережеве з’єднання на рівні L2. - Додати на сервер публічний ssh ключ користувача
ansible з VM controlnode - Виконати успішно
ping сервера з машини керування за допомогою ansible
Проект
- Згідно завдання розгорнемо віртуальну машину
debian у віртуальному середовищі VirtualBox. Для наглядного відображення виконуваних операцій зробимо це за допомогою Vagrant.
# -*- mode: ruby -*-
# Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
Vagrant.configure("2") do |config|
config.ssh.forward_agent = true
config.vm.provision "shell", inline: <<-SHELL
apt-get update && apt-get install -y sudo git net-tools python3 python3-pip curl wget \
python3-apt python3-venv python3-wheel python3-setuptools && \
groupadd -g 1001 ansible && \
useradd -M -s /bin/bash -d /home/ansible -u 1001 -g 1001 ansible && \
echo "ansible ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/ansible && \
chmod 0440 /etc/sudoers.d/ansible && \
mkdir -p /home/ansible/.ssh && \
chmod 700 /home/ansible/.ssh && \
curl https://github.com/conqueror-mrpl.keys | tee -a /home/ansible/.ssh/authorized_keys && \
chmod 600 /home/ansible/.ssh/authorized_keys && \
chown -R ansible:ansible /home/ansible
SHELL
config.vm.define "controlnode" do |controlnode|
controlnode.vm.box = "debian/bookworm64"
controlnode.vm.hostname = "controlnode"
controlnode.vm.network "private_network", ip: "192.168.129.29"
controlnode.vm.network "forwarded_port", host: 443, guest: 10000, host_ip: "127.0.0.29"
controlnode.vm.synced_folder ".", "/home/ansible/#{File.basename(Dir.getwd)}", owner: "1001", group: "1001", mount_options: ['dmode=750,fmode=640']
controlnode.vm.synced_folder "./ansible/inventory/", "/home/ansible/#{File.basename(Dir.getwd)}/ansible/inventory", owner: "1001", group: "1001", mount_options: ['dmode=750,fmode=750']
controlnode.vm.provision "shell", inline: <<-SHELL
apt-get install -y ansible
# ansible-playbook -i /home/ansible/ansible/
SHELL
controlnode.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
vb.cpus = 2
vb.name = "controlnode"
end
# === Дозволяємо символічні посилання для VirtualBox ===
controlnode.vm.provider "virtualbox" do |v|
# Назва синхронізованої папки зазвичай збігається з назвою папки проекту на вашому комп'ютері
# Vagrant автоматично замінить `.` на правильну назву.
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/.", "1"]
end
end
end
Links