November 20, 2024

Ноды через Ansible

Собственно эта вся история будет начинаться с удобства для вас и в целом, это просто кайфушечка - установим WSL (делаем все это на винде, если вы хотите все это сделать на Unix системе то вам ниже)


1. Включение WSL на Windows

  • Откройте Панель управления -> Программы -> Включение или отключение компонентов Windows
  • Найдите и включите:
    • Подсистема Windows для Linux (Windows Subsystem for Linux)
    • Платформа виртуальной машины (Virtual Machine Platform)
Чтобы вы не запутались джупсики
    • Или сделайте это через PowerShell от имени администратора:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
На те, раскумарьтесь
  • Перезагрузите комп, чтобы изменения вступили в силу

2. Установка WSL 2 как основной версии

  • Также введите команду в Powershell чтобы WSL 2 был основной версией:
wsl --set-default-version 2
  • Проверьте, поддерживает ли ваша система WSL 2:
wsl --list --verbose
У вас должно быть так, дебиан и убунта будут ждать ниже
  • Если версия ядра Linux не соответствует WSL 2, вам может понадобиться установить последнюю версию ядра. Для этого:

3. Установка Debian через Microsoft Store

  • Откройте Microsoft Store.
  • Найдите Debian и установите его(можете выбрать любой Unix дистрибутив)
У меня уже установлен, но думаю ничего сложного тут нет, да....?

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

Для MacOS:

brew install ansible

2. Проверка установки

После установки проверьте версию Ansible:

ansible --version

3. Базовая настройка

Создание файла inventory

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

Создайте файл playbook.yml:

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 файла
        

Запустите playbook:

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.sh

Запустите playbook:

ansible-playbook -i inventory.ini playbook.yml

Финалочка

Это было сделано для примера, но если реально сделаете несколько нод по моему гуиду я буду очень рад! В целом данный статейка получилась полу-гайдовая, полу-познавательная, чтобы вы чуть-чуть сами разобрались с Ansible, за одну статью прям фул информацию не накидать, да и вам впадлу будет столько читать, так что ставьте, учитесь и делайте разницу вместе с Logovo_DAO

Ну а над статьей работал - Я (Канал меня - viclicucli)