Настройка агентов Jenkins с зависимым от пользователя доступом по SSH - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть сервер Jenkins, который должен разгрузить выполнение более крупных тестов в кластер HPC:

enter image description here

Кластер предоставляет SSH-доступ своим пользователям.,Выполнение вычислений в кластере управляется диспетчером рабочей нагрузки , который определяет доступные вычислительные ресурсы каждого пользователя, а также приоритет его / ее заданий на основе того, что пользователь выполнил в кластере.до сих пор.

Необходимо использовать диспетчер рабочей нагрузки для выполнения заданий в кластере.

Я хотел соединить кластер с тестовым сервером Jenkins, поэтому я сгенерировал пару ключей SSH и скопировал открытый ключ jenkins в файл authorized_keys в кластере.На этом этапе я могу войти в систему из командной строки как пользователь кластера следующим образом:

/jenkinsserver/home/jenkins> whoami
jenkins
/jenkinsserver/home/jenkins> ssh clusteruser@clusterloginnode

Так что у пользователя jenkins нет проблем при входе в систему как clusteruser в кластере, используя открытый SSH-ключ сервера jenkins .

Это прекрасно, так как все, что я делаю в кластере, зависит от конфигурации кластера: clusteruser имеет свои собственные ресурсы и т. Д.

Теперь,если я хочу выполнить это в конвейере Дженкинса, все не работает.

Во-первых, просто используя

ssh clusteruser@clusterloginnode

в конвейере:

enter image description here

Соединение приводит к ошибке: «Псевдотерминал не будет выделен, потому что stdin не является терминалом», и для этого я нашел решение здесь .

Однако, когда я использую опцию "-tt",соединение висит, я вижу на выходе конвейера, что соединение установлено, и кластерная среда загружена, но она просто висит там.

Если я использую опцию "-T" для команды SSH, команда выполняется и завершается до того, как что-либо еще будет сделано, а затем я снова на главном узле Jenkins, поэтому я не выполняю командыкоторые отвечают за запуск теста.

Если я использую плагин Publish Over Ssh в Jenkins, он запрашивает имя пользователя на другом компьютере:

enter image description here

В моем случае это имеет смысл 0 , потому что я не настраиваю ни одного пользователя "jenkins" где-то на узле ремоделирования jenkins, я хочу, чтобы пользователи запрашивали SSH-соединение с кластером в своих сценариях SHELL, так как ониделайте обычно , используя свои имена пользователей кластера , чтобы они получали доступ к своим ресурсам в кластере (управляются менеджером рабочей нагрузки).

Что мне делать?

...