Настройка опции удаленной установки агентов (minions)

Настройка удаленной установки агентов (minions) является опциональной.

Чтобы настроить возможность удаленной установки агента (minion), выполните действия:

Установка пакета salt-ssh

При установке модуля координации (SaltStack), после того как вы скачаете и распакуете архив, из дистрибутива установите пакет salt-ssh любым удобным способом.

Пример команды для установки пакетов из репозитория:

sudo apt install salt-ssh=3006.7.4

Пример команды для установки пакетов из архива:

sudo apt install ./inno-salt/salt-ssh_3006.7.4_amd64.deb

Конфигурация сервера управления (master)

  1. Создайте файл конфигурации сервера управления (master) /etc/salt/master.d/roster.conf:

    roster_defaults:
      sudo: True
      ssh_options:
        - "StrictHostKeyChecking=no"
        - "UserKnownHostsFile=/dev/null"

    Где:

    • roster_defaults — блок параметров, которые используются при управлении удаленными серверами:

      • sudo — параметр, указывающий на то, что при подключении к удаленному серверу через SSH команды выполняются от имени суперпользователя;

      • ssh_options — список опций SSH, которые применяются при подключении к удаленным серверам:

        • StrictHostKeyChecking — опция включения/выключения проверки хост-ключей (host key checking); возможные значения:

          • yes — SSH-клиент строго проверяет ключи хостов при подключении к новым серверам: если ключ хоста не найден в файле known_hosts, SSH-клиент выдает предупреждение и запрашивает разрешение на добавление этого ключа в файл known_hosts;

          • no — отключение проверки ключей хостов;

        • UserKnownHostsFile — опция, указывающая путь к файлу, в котором хранятся известные ключи хостов (known hosts); по умолчанию, SSH клиент сохраняет ключи хостов в файле ~/.ssh/known_hosts.

  2. Создайте файл конфигурации /etc/salt/roster (в формате, указанном в примере ниже) и укажите в нем список устройств, к которым должны применяться настройки ростера, заданные в файле /etc/salt/master.d/roster.conf.

    Пример файла:

    dev-osmax-vm0104.osmax.terra.inno.tech: {}
    dev-osmax-vm0105.osmax.terra.inno.tech: {}
    ...
    dev-osmax-vm0109.osmax.terra.inno.tech: {}

Настройка обмена SSH-ключами между сервером управления (master) и агентами (minions)

Настройки сервера управления (master)

Настройки, приведенные ниже, выполняются на хосте, на котором установлен сервер управления (master).

  1. Создайте директорию для хранения ключей, используемых salt-ssh, выполнив команду:

    sudo mkdir -p /etc/salt/pki/master/ssh/
  2. Создайте SSH-ключ, который позволит подключиться к хосту для последующей удаленной установки агента, выполнив команду:

    sudo ssh-keygen -b 3072 -t rsa -q -N '' -f /etc/salt/pki/master/ssh/salt-ssh.rsa -C "salt-ssh"
  3. Измените права доступа к файлу, выполнив команду:

    sudo chmod 600 /etc/salt/pki/master/ssh/salt-ssh.rsa
    Если сервер управления (master) запускается не под root-пользователем, может потребоваться смена владельца файла. Например, если сервер управления (master) запускается под пользователем с именем salt, выполните команду:
    sudo chown salt: /etc/salt/pki/master/ssh/salt-ssh.rsa
  4. Проверьте публичную часть созданного ключа и сохраните ее в буфер обмена для дальнейшего использования на удаленном хосте, выполнив команду:

    sudo cat  /etc/salt/pki/master/ssh/salt-ssh.rsa.pub

    Пример результата:

    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCdAzMz56BL2XLxsayXA4LyEuFcBVKgU2MHOJltcR6AAMio4Sb8y2cvRhe3io9jhpl/8zsYjzpIRFpXJMK5W1INeVGs5x+MzpucrrcrvNzBdPWYXsEvyYgdzmpjB89X/66hr1qQZ6G/UXkFpdvpRfhE8yefYjZnIhj+dAiUF0ZhRm7oX7QYX2hOLLwGAZ3M9aOmqT+T9XmqF0yrf+KotREEvSlWtR0SJ3c67vqLxPXcn4hlrjAHrl6agvlGyHMVA1S9/cyDwh/3Q+WDS/M3TfHBiJWqXJQPC9rDtUOfJl9HT0RbkBif8wYOSkUO995iMarSj+hPL9pZ8a6u2+9EiSlNwIrAwj19OUvJl/ydek+49VhOvTqXO+UqeD+Yqlb0nEp4tip5XcSihUG2xl9c6GPVvNk8B4WWh2XHzxrEQpL2OXqcY1kbkguisaBUtFOmN3OaqGkoqdVAaIFiq1FJaF4b0yD4gmF5Ni5EaYPkApdHQO1Bu6jItnsXApVIywNpCGE= salt-ssh
  5. (Опционально) если вы используете режим мульти-мастер с автоматическим переключением (failover), скопируйте файлы salt-ssh.rsa и salt-ssh.rsa.pub и поместите их в каталог /etc/salt/pki/master/ssh/ на каждом используемом сервере управления (master).

Настройки удаленного хоста (без агента)

Настройки, приведенные ниже, выполняются на удаленном хосте, на котором еще не установлен агент (minion).

  1. Убедитесь, что служба sshd запущена и работает, выполнив команду:

    sudo systemctl status sshd

    Ответ должен содержать значение Active: active (running).

  2. Создайте пользователя, под которым будет производиться удаленная установка агента и под этим пользователем можно подключиться по SSH.

    Ниже в качестве примера используется пользователь с именем salt-ssh.

    Пользователю необходимо предоставить root-права или права для выполнения административных действий, следуя описанным ниже шагам.

    В директории /etc/sudoers.d создайте файл salt-ssh и добавьте в него строку, которая позволит пользователю (salt-ssh) выполнять команды apt от имени root без запроса пароля:

    salt-ssh ALL=(root) NOPASSWD: /usr/bin/apt *

    Для проверки прав пользователя, а также списка доступных пользователю команд, выполните команды:

    id salt-ssh
    sudo --list --other-user=salt-ssh

    Пример вывода команды sudo --list --other-user=salt-ssh:

    User salt-ssh may run the following commands on minion-no-1:
    (ALL) NOPASSWD: /usr/bin/apt

    Где пользователь salt-ssh имеет право выполнять только команды, связанные с управлением пакетами, такие как apt, без необходимости вводить пароль.

    Для проверки работоспособности команд, связанных с apt, используйте следующие команды от имени пользователя salt-ssh:

    1. Зайдите в систему под пользователем salt-ssh.

    2. Обновите список доступных пакетов:

      sudo apt update
    3. Установите тестовый пакет (например, htop) без запроса подтверждения:

      sudo apt install htop -y

    Если обе команды выполняются успешно, это подтверждает, что пользователь salt-ssh имеет необходимые права для выполнения команд управления пакетами через sudo.

  3. Создайте каталог домашний каталог пользователя, под которым будет производиться удаленная установка? /home/salt-ssh/.ssh для хранения конфигурационных файлов и ключей SSH (Secure Shell), выполнив команду:

    mkdir  /home/salt-ssh/.ssh
  4. Откройте или создайте файл /home/salt-ssh/.ssh/authorized_keys для редактирования.

  5. Вставьте в файл публичный ключ, скопированный ранее в буфер обмена.

  6. Убедитесь, что файл имеет правильные права доступа и владельца и при необходимости отредактируйте данные, используя команды:

    sudo chmod 600 /home/salt-ssh/.ssh/authorized_keys
    sudo chown salt-ssh: /home/salt-ssh/.ssh/authorized_keys
  7. Выполните проверку доступов на хосте сервера управления (master), выполнив шаги, описанные в разделе ниже.

Конфигурация пакетного менеджера APT

Для удаленной установки агентов (minions) на целевых хостах с Debian-подобными дистрибутивами необходимо правильно настроить пакетный менеджер APT и добавить репозитории, содержащие пакеты SaltStack. Выполните шаги:

  1. Добавьте репозиторий, содержащий пакеты SaltStack, вставив следующую строку в файл /etc/apt/sources.list.d/osmax-astra-apt-packages.list:

    deb https://artifacts.inno.tech/repository/osmax-astra-apt-packages/ 1.7_x86-64 main
  2. Настройте учетные данные для аутентификации (если это требуется), вставив следующую строку в файл /etc/apt/auth.conf.d/osmax-astra-apt-packages.conf:

    machine artifacts.inno.tech/repository/osmax-astra-apt-packages/ login <username> password <password>

Проверка подключения на хосте сервера управления (master)

Чтобы выполнить проверку подключения к удаленному серверу с хоста сервера управления (master), выполните команду:

sudo ssh -i /etc/salt/pki/master/ssh/salt-ssh.rsa -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null "<имя_пользователя>@<имя_удаленного_хоста>" id

Где:

  • имя_удаленного_хоста — имя хоста, настройки которого были выполнены выше, и на который будет производиться установка агента (minion);

  • имя_пользователя — имя пользователя, под которым будет производиться подключение и запуск скриптов установки агента (minion) через Осмакс. В случае успешного подключения на удаленном хосте отображается идентификатор пользователя, например:

    uid=1001(salt-ssh) gid=1002(salt-ssh) groups=1002(salt-ssh),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),100(users)