Как загрузить переменные окружения на удаленной машине AIX через s sh при запуске сценария из конвейера Jenkin? - PullRequest
3 голосов
/ 01 мая 2020

Мы используем некоторые пользовательские модули в нашей Perl инфраструктуре автоматизации, которая проходит через конвейер Jenkin. Недавно мы получили сообщение об ошибке «Пакет не найден» для всех пользовательских модулей во время выполнения тестовых примеров на серверах AIX, поскольку там установлена ​​последняя версия Perl. Поэтому мы попытались добавить «PERL5LIB» в путь, указанный в документе

https://perlmaven.com/how-to-change-inc-to-find-perl-modules-in-non-standard-locations

Мы добавили «export PERL5LIB = / home / foobar / code» в / etc / profile сервера AIX и выполнение сценария без проблем при запуске с локального компьютера AIX.

Проблема:

Но у нас есть конвейер Jenkin для выполнения сценариев на сервере AIX с использованием s sh. Теперь, когда мы выполняем S SH для сервера AIX в сценарии конвейера, переменные, которые мы установили в / etc / profile, не загружаются, и мы получаем сообщение об ошибке пакета не найдено.

Вопрос: Как я могу загрузить профиль на сервере AIX при его запуске из конвейера? или есть другой способ справиться с этим. Перед выполнением сценария я хочу экспортировать PERL5LIB на удаленный сервер AIX через конвейер (только один раз), и я не должен получить ошибку «пакет не найден».

Ниже приведены решения, которые я пробовал:

Загрузить / etc / profile: s sh сервер AIX ./etc/profile (с использованием точки, так как источник не работает в AIX)

Добавление этой строки "export PERL5LIB = / home / foobar / code" в .ssh / environment на сервере AIX и установите PermitUserEnviorment yes

Оцените любую помощь по этому вопросу.

Ответы [ 2 ]

2 голосов
/ 02 мая 2020

Назначьте значения переменным обычным способом:

ssh user@host 'export PERL5LIB=/somepath; echo $PERL5LIB'
user@hosts's password:
/somepath

или

ssh user@host '. /etc/profile.local; echo $PERL5LIB'
user@hosts's password:
/somepath/from/profile

Редактировать: если вам нужно выполнить несколько команд, создайте сценарий и загрузите его на целевой компьютер Например:

SCRIPTNAME=/tmp/$$.$RANDOM.script
scp myscript.sh user@host:"$SCRIPTNAME"
ssh user@host "$SCRIPTNAME"
0 голосов
/ 07 мая 2020

Это решается с помощью следующих изменений.

Шаг 1: Редактировать ~ / .ssh / environment. Добавьте переменную PERL5LIB = "/ путь к модулю /"

Шаг 2: Отредактируйте / etc / ssh / sshd_config. Измените переменную PermitUserEnvironment с нет на да. Раскомментируйте, если прокомментируете. Это позволит получить доступ к переменным среды для S SH.

Шаг 3: Перезапустить службу SSHD. (Это имп. Я пробовал шаг 1 и 2 и раньше, но не перезапускал службу, поэтому решение не работало)

Мы можем создать сценарий и запустить его перед выполнением теста автоматизации из конвейера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...