Puppet Bolt не передает параметры в сценарий Bash, работающий как задача

Для меня acpid.service уже работал. Я использую Debian 9 (stretch ), так что это может быть не для всех.

/var/run/acpid.socket— расположение по умолчанию. Проверка состояния systemd acpid.socketпоказывает, где находится фактически используемый файл сокета.

$ systemctl status acpid.socket 
● acpid.socket - ACPID Listen Socket
   Loaded: loaded (/lib/systemd/system/acpid.socket; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2019-03-25 18:33:04 CET; 41min ago
   Listen: /run/acpid.socket (Stream)

Просто создайте символическую ссылку на местоположение сокета по умолчанию, и все готово:

sudo ln -s /run/acpid.socket /var/run/acpid.socket

Либо укажите, какой сокет вы хотите использовать:

acpi_listen -s /run/acpid.socket
0
07.10.2020, 10:52
1 ответ

Примечание :Это было опубликовано как часть исходного вопроса, поэтому я (terdon )вместо этого публикую его как ответ CW .


Итак, я нашел решение этого вопроса еще до публикации. Я просто хотел сделать пост, так как потратил на это время, хотя он задокументирован:

If the script isn't installed, or you want to make it into a cohesive task so that you can manage its version with code management tools, add code to your script to check for the environment variables, prefixed with PT_, and read them instead of arguments.

Я пытаюсь запустить скрипт на удаленной машине, изначально думая, что могу передавать параметры в скрипт bask через стандартный ввод как $1, $2 и т. д. Эти переменные получают значения, введенные после запуска скрипта в Bash, например:./scriptTakeInUserAndGroup группа пользователей(В которой echo $1 будет печатать пользователя , так как его первый параметр передан ).

Это не работало в Puppet Bolt. Puppet Bolt имеет два варианта метода ввода _, когда речь идет о Unix:stdin и окружении . Мне пока не удавалось использовать параметр stdin, но я обнаружил, что переменная среды работает, как только вы обнаружите, что она путается с именем ваших переменных:

bolt task run --targets localhost madeUpModule::scriptTakeInUserAndGroup user='testuser' group='testgroup'

Эти переменные не передаются по имени, которое вы называете в метаданных JSON.

Если вы поместите printenv | grep userв сценарий, вы увидите следующее в своей среде:PT_user=testuser.

Довольно раздражает добавление PT_перед именем вашей переменной. Итак, скрипт bash, который вы запустили с помощью $user, ломается

Если вы измените свой сценарий для использования $PT_user, он будет работать нормально.

1
18.03.2021, 23:00

Теги

Похожие вопросы