
.::ОБНОВЛЕНИЕ-РЕШЕНО::.
С помощью @wirap теперь все работает. Я сделал симлинк на каталог скрипта /etc/salt/states/scripts
и с помощью этой test.sls
конфигурации все теперь работает.
/root/bin/updater/scripts/pam-setup-access:
file.managed:
- name: /tmp/pam-setup-access
- source: salt://scripts/pam-setup-access
- mode: 0700
run_script:
cmd.run:
- name: /tmp/pam-setup-access
file.absent:
- name: /tmp/pam-setup-access
Я новичок в salt-ssh и ищу некоторую информациюздесьотносительно того, как запустить скрипт, который находится на моем административном компьютере ( /root/bin/updater/scripts/pam-setup-access
), на удаленном узле, к которому у меня также есть права root.
Я создал state
файл (ниже), но не уверен, куда его поместить. Salt-sshдокументытолько упоминание /etc/salt/master
, поэтому я поискал это, ноэти документыпохоже, они специфичны для Vagrant и установки пакетов.
add script:
file.managed:
- name: pam-setup-access
- source: /root/bin/updater/scripts/pam-setup-access
run script:
cmd.run:
- name: pam-setup-access
Наконец, я попробовал просто запустить файл состояния из текущего каталога, как показано в первой ссылке, но это только раздражает его. Что я упускаю?
# salt-ssh '*' state.apply test.sls
nod0:
[CRITICAL] Unable to import msgpack or msgpack_pure python modules
Function state.apply is not available
nod1:
[CRITICAL] Unable to import msgpack or msgpack_pure python modules
Function state.apply is not available
.:: ОБНОВЛЯТЬ ::.
Мне нужно использовать salt-ssh, так как несколько "minions" находятся в сети, отдельной от master (DMZ). Насколько я понимаю, традиционная настройка salt требует, чтобы minions подключались к salt master.
После публикации я установил salt-ssh изрепозиторий saltstackчто, похоже, избавило от msgpack
ошибки выше. Я также изменил некоторые примеры из ссылки, специфичной для vagrant, выше, добавив master
файл и states
каталог в /etc/salt
. Я поместил файл состояния (выше) в /etc/salt/states/test.sls
. Результаты ниже.
Я добавил подчеркивания между add script
и run script
, как предложил @wirap. Это продвинуло меня дальше, как показано ниже. Кажется, есть какая-то ошибка, связанная с путем скрипта на клиенте или сервере. Пока не уверен. Кажется, мне нужно вызвать только state.apply
имя файла .sls
(без расширения .sls).
/etc/salt/master:
file_roots:
base:
- /etc/salt/states
Когда я сейчас запускаю salt-ssh, я получаю:
# salt-ssh '*' state.apply test
nod0:
----------
ID: add_script
Function: file.managed
Name: pam-setup-access
Result: False
Comment: Specified file pam-setup-access is not an absolute path
Started: 11:53:50.237379
Duration: 0.602 ms
Changes:
----------
ID: run_script
Function: cmd.run
Name: pam-setup-access
Result: False
Comment: Command "pam-setup-access" run
Started: 11:53:50.238629
Duration: 8.297 ms
Changes:
----------
pid:
1037
retcode:
127
stderr:
/bin/bash: pam-setup-access: command not found
stdout:
Summary for nod0
------------
Succeeded: 0 (changed=1)
Failed: 2
------------
Total states run: 2
Total run time: 8.899 ms
nod1:
----------
ID: add_script
Function: file.managed
Name: pam-setup-access
Result: False
Comment: Specified file pam-setup-access is not an absolute path
Started: 11:53:50.476743
Duration: 0.555 ms
Changes:
----------
ID: run_script
Function: cmd.run
Name: pam-setup-access
Result: False
Comment: Command "pam-setup-access" run
Started: 11:53:50.477906
Duration: 7.5 ms
Changes:
----------
pid:
30772
retcode:
127
stderr:
/bin/bash: pam-setup-access: command not found
stdout:
Summary for nod1
------------
Succeeded: 0 (changed=1)
Failed: 2
------------
Total states run: 2
Total run time: 8.055 ms
решение1
- Вы уверены, что хотите использовать salt-ssh («Выполнять команды и состояния salt через ssh без установки salt-minion»). Вам нужно сделать это таким образом, только если вы не можете установить salt-minion на своих minions
- Где вы разместили свои состояния? Обычно в конфигурации /etc/salt/master вы пишетепуть, где должны находиться ваши файлы состояния
- Не используйте штат, указанный в примере, дословно. Я уверен, что в нем не может быть пробела.декларация идентификатора(
add script:
). - Ваше сообщение об ошибке мне неизвестно. Эта темаздесьделает следующее предложение:«Ошибка msgpack вводит в заблуждение, поскольку она совершенно не связана с чем-либо. Кажется, один из ваших файлов server.conf имеет недопустимую кодировку utf-8 на одном из миньонов, а на другом файл не существует?»Я сильно подозреваю, что пробел (' ') в вашем идентификаторе штата. По моему опыту, SaltStack может выдавать довольно вводящие в заблуждение сообщения об ошибках, если в ваших файлах штата или столбце есть недопустимые символы.
Дополнительные подсказки:
- Смотретьздесьдля получения информации о том, как настроить дерево состояний.
- Может быть, использовать предустановленную установку SaltStack (docker, Vagrant ?), которая уже работает, чтобы узнать, как это работает. Поскольку UtahDave довольно активен в SaltStack, я бы выбрал егодемо(Отказ от ответственности: сам не проверял!)
Обновлять: При использовании file.managed:
- Параметр
source
—file.managed
это путь на вашем главном сервере (относительно вашего пути состояния), а не цель. - вам необходимо указать путь к цели, поэтому вы получаете ошибку:«Указанный файл pam-setup-access не является абсолютным путем»
Пример:
/root/bin/updater/scripts/pam-setup-access
file.managed:
- source: salt://files/pam-setup-access
такой же как:
some-arbitrary-id
file.managed:
- name: /root/bin/updater/scripts/pam-setup-access
- source: salt://files/pam-setup-access
https://docs.saltstack.com/en/develop/ref/states/all/salt.states.file.html#module-salt.states.file
То же самое касается cmd.run.
ПрочитайтеобщийУчебник SaltStack. При проектировании состояний не имеет значения, используете ли вы salt-ssh или salt. Не позволяйте этому сбивать вас с толку.