Можно ли отложить подключение Дженкинса к ведомому устройству до запуска сценария облачной инициализации

У меня есть сценарий облачной инициализации

#cloud-config
package_upgrade: true

packages:
 - openjdk-8-jdk
 - apt-transport-https
 - git
 - jq

groups:
  - docker

users:
 - default
 - name: jenkins
   groups: docker
   homedir: /var/lib/jenkins
   lock_passwd: true
   ssh_authorized_keys:
     - ssh-rsa xyz

Это предоставляется плагину jenkins ec2 при запуске ubuntu 18.04 AMI.

Когда Дженкинс пытается подключиться к экземпляру, журналы показывают:

ИНФОРМАЦИЯ: проверка: java -fullversion sh: 1: java: not found

01 ноября 2018 г. 20:22:10 null ИНФОРМАЦИЯ: Установка: sudo yum install -y java-1.8.0-openjdk.x86_64 sudo: нет tty и не указана программа askpass

01 ноября 2018 г. 20:22:10 null ПРЕДУПРЕЖДЕНИЕ: не удалось установить: sudo yum install -y java-1.8.0-openjdk.x86_64

sh: 1: java: not found ОШИБКА: невозможно запустить агент для Ubuntu 18.04 (i-xxx) java.io.EOFException: неожиданное завершение потока

Если я попытаюсь снова подключиться к агенту вручную по прошествии некоторого времени (2/3 минуты), все будет в порядке:

Агент успешно подключился и онлайн

Следует ли запускать сценарий cloud-init до подключения по SSH?

У меня никогда не было этой проблемы при использовании AMI Amazon Linux, где я устанавливаю java 8 таким же образом (через сценарий облачной инициализации). Это что-то специфическое для того, как amazon linux запускает сценарии облачной инициализации по сравнению с ubuntu?


person David    schedule 01.11.2018    source источник


Ответы (1)


В конце концов, я решил, что проще установить java и создать новый AMI, чтобы полностью избежать этой проблемы.

Я думаю, что, возможно, мои ожидания, что облачная инициализация будет полностью запущена перед подключением, могут быть неверными, в основном из-за этого комментария в документация

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

Возможно, один из подходов, который поможет решить эту проблему, может заключаться в том, чтобы остановить sshd в командах запуска во время установки, а затем запустить его снова, когда все будет сделано. Надеюсь, Дженкинс подключится только тогда, когда все будет готово.

person David    schedule 05.11.2018