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

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

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

sudo apt install salt-ssh=3006.4

или

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

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

  1. Cоздайте файл конфигурации сервера управления (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)

Если вы используете режим мульти-мастер с автоматическим переключением (failover), необходимо распространить ключи на все сервера управления (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

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

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

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

    sudo systemctl status sshd

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

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

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

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

    Для проверки прав пользователя, а также права запускать команды через sudo без ввода пароля используйте команды:

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

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

    admin@minion-no-1:~$ sudo --list --other-user=salt-ssh
    User salt-ssh may run the following commands on minion-no-1:
        (ALL) NOPASSWD: /usr/bin/apt, /usr/bin/dpkg

    Где:

    Пользователь salt-ssh имеет право выполнять только команды, связанные с управлением пакетами, такие как apt и dpkg, без необходимости вводить пароль. Это ограничение позволяет использовать salt-ssh для автоматизации установки и обновления пакетов без дополнительных запросов на ввод пароля.

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

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

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

      sudo apt install htop -y

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

  3. Откройте или создайте файл /home/salt-ssh/.ssh/authorized_keys для редактирования, где /home/salt-ssh — это домашний каталог пользователя, под которым будет производиться удаленная установка:

    sudo vi /home/salt-ssh/.ssh/authorized_keys
  4. Вставьте в файл публичный ключ, скопированный ранее в буфер обмена, например:

    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCdAzMz56BL2XLxsayXA4LyEuFcBVKgU2MHOJltcR6AAMio4Sb8y2cvRhe3io9jhpl/8zsYjzpIRFpXJMK5W1INeVGs5x+MzpucrrcrvNzBdPWYXsEvyYgdzmpjB89X/66hr1qQZ6G/UXkFpdvpRfhE8yefYjZnIhj+dAiUF0ZhRm7oX7QYX2hOLLwGAZ3M9aOmqT+T9XmqF0yrf+KotREEvSlWtR0SJ3c67vqLxPXcn4hlrjAHrl6agvlGyHMVA1S9/cyDwh/3Q+WDS/M3TfHBiJWqXJQPC9rDtUOfJl9HT0RbkBif8wYOSkUO995iMarSj+hPL9pZ8a6u2+9EiSlNwIrAwj19OUvJl/ydek+49VhOvTqXO+UqeD+Yqlb0nEp4tip5XcSihUG2xl9c6GPVvNk8B4WWh2XHzxrEQpL2OXqcY1kbkguisaBUtFOmN3OaqGkoqdVAaIFiq1FJaF4b0yD4gmF5Ni5EaYPkApdHQO1Bu6jItnsXApVIywNpCGE= salt-ssh
  5. Убедитесь, что файл имеет правильные права доступа и владельца, выполнив команду:

    sudo chmod 600 /home/salt-ssh/.ssh/authorized_keys

    При необходимости отредактируйте данные, выполнив команду:

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

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

Чтобы настроить пакетный менеджер APT на целевых хостах, использующих Debian-подобные дистрибутивы:

  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=1000(admin) gid=1000(admin) группы=1000(admin),27(sudo)