Ноды через Ansible
Собственно эта вся история будет начинаться с удобства для вас и в целом, это просто кайфушечка - установим WSL (делаем все это на винде, если вы хотите все это сделать на Unix системе то вам ниже)
1. Включение WSL на Windows
- Откройте Панель управления -> Программы -> Включение или отключение компонентов Windows
- Найдите и включите:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
2. Установка WSL 2 как основной версии
wsl --set-default-version 2
wsl --list --verbose
- Если версия ядра Linux не соответствует WSL 2, вам может понадобиться установить последнюю версию ядра. Для этого:
- Качаем и установим обновление ядра WSL 2 с официального сайта Microsoft.
- После установки повторите команды выше
3. Установка Debian через Microsoft Store
4. Первоначальная настройка Debian
- После установки откройте приложение Debian (из меню "Пуск")
- Надо будет указать имя пользователя и пароль
Сам я уже все ввел, думаю бебриком вы себя сможете назвать
5. Установка дополнительных инструментов
Теперь вы можете настроить свою систему. Пример:
sudo apt update && sudo apt upgrade -y
sudo apt install build-essential curl wget nano git -y
Как введете команды, просто ждите пока все установиться и все
И так, после установки среды остался только Ansible и микроплейбук для него
1. Установка
Выполните все эти команды для Ubuntu/Debian:
sudo apt update sudo apt install -y software-properties-common sudo apt install -y ansible
brew install ansible
2. Проверка установки
После установки проверьте версию Ansible:
ansible --version
3. Базовая настройка
Ansible работает с inventory где хранит (список серверов, юзернейм к ним, пароли или приватные ключи).
Создайте в любом удобном месте файл inventory командой:
nano inventory
В примере ниже показаны два варианта, либо подключение через приватный ключ, либо через логин+пароль
[web_servers] 192.168.0.101 ansible_user=your_user ansible_ssh_private_key_file=/path/to/private/key 192.168.0.101 ansible_user=your_user ansible_password=your_password
Чтобы выйти надо будет нажать CTRL+X -> Y -> Enter. Команда ls выводит все файлы и директории по тому пути где вы находитесь
Используйте команду ping для проверки связи:
ansible all -i inventory -m ping
Если все правильно сделали, то получится так
4. Использование Ansible
Простой playbook
nano playbook.yml
Это содержимое просто копируете и вставляете в файл правой кнопкой мыши
- name: Copy a text file to remote server
hosts: all #тут вы можете выбрать хосты из inventory на которых хотите распространить работу плейбука
become: yes #это для того, чтобы задачи в плейбуке выполнялись с повышенными правами(аналогично sudo)
tasks:
- name: Create a text file locally
copy:
dest: /tmp/logovo.txt #это путь по которому вы хотите сохранить файл
content: "LogovoDAO" #а это само содержимое txt файла
ansible-playbook -i inventory.ini playbook.yml
Можете зайти на сервер и по этому пути /tmp/logovo.txt открыть файл. Собственно на скрине ниже видно как происходит процесс, свои серваки я замазал), если у вас тоже будет написано OK, то понятно что ничего не надо будет исправлять), а чуть ниже соответственно и результат - скрипт отправился на два сервера и в обоих написано LogovoDAO
Для более интересного примера возьмем установку ноды Berachain с помощью скрипта Nodes.Guru, спасибо им большое, думаю много кто знает этих ребят, они делают разницу
В самом плейбуке можно сделать множество тасков, но для пример используем 5 основных это:
Update package list: Обновляет кеш списка пакетов на сервере.
Upgrade all packages: Выполняет обновление всех установленных пакетов.
Install base packages: Устанавливает базовые пакеты (wget, curl, nano и git).
Download bera.sh script: Загружает скрипт bera.sh в папку /tmp с помощью модуля get_url.
Run bera.sh script: Запускает скрипт bera.sh с помощью модуля command.
- name: Set up servers with base packages and run bera.sh
hosts: all
become: yes
tasks:
- name: Update package list
apt:
update_cache: yes
- name: Upgrade all packages
apt:
upgrade: dist
- name: Install base packages
apt:
name:
- wget
- curl
- nano
- git
state: present
- name: Download bera.sh script
get_url:
url: https://api.nodes.guru/bera.sh
dest: /tmp/bera.sh
mode: '0755'
- name: Run bera.sh script
command: /tmp/bera.shansible-playbook -i inventory.ini playbook.yml
Финалочка
Это было сделано для примера, но если реально сделаете несколько нод по моему гуиду я буду очень рад! В целом данный статейка получилась полу-гайдовая, полу-познавательная, чтобы вы чуть-чуть сами разобрались с Ansible, за одну статью прям фул информацию не накидать, да и вам впадлу будет столько читать, так что ставьте, учитесь и делайте разницу вместе с Logovo_DAO
Ну а над статьей работал - Я (Канал меня - viclicucli)