Рейтинг:0

Ansible не может подключиться по ssh к динамически созданному хосту EC2

флаг cn
TSG

Мой сценарий Ansible создает машину AWS, а затем пытается подключиться к ней. В зависимости от образа, который я создаю, имя пользователя по умолчанию для входа по SSH — либо «centos», либо «ubuntu» и т. д.

Мой приведенный ниже сценарий завершается с ошибкой wait_for_connection с ошибкой «Отказано в доступе». я предполагать это потому, что ssh использует неправильное имя пользователя; узел управления запускает сценарий как «userx». (Я подтвердил, что мой открытый ключ находится на удаленной машине, а соответствующий закрытый ключ доступен на управляющем узле).

Как мне настроить мой скрипт, чтобы ansible использовал правильное имя пользователя? Я не могу указать его в инвентаре, так как хост только что создан, а имя пользователя зависит от типа экземпляра. Для wait_for_connection нет опции «имя пользователя».

Мой сценарий:

- имя: Создать одну машину AWS
  местное_действие:
    модуль: ec2
    aws_access_key: "{{ aws_access_key }}"
    aws_secret_key: "{{ aws_secret_key }}"
    имя_ключа: "{{ имя_ключа }}"
    group_id: "{{ security_group_id }}"
    instance_type: "{{ instance_type }}"
    изображение: "{{ ami_id }}"
    подождите: правда
    регион: "{{ aws_region }}"
    зона: "{{ aws_zone}}"
    vpc_subnet_id: "{{ aws_vpc_subnet }}"
    assign_public_ip: да
  регистр: ec2

- имя: Подождите, пока SSH подойдет
  делегат_то: "{{ ec2.instances[0].public_dns_name }}"
  ждать_для_соединения:
    задержка: 60
    сон: 15
    тайм-аут: 40

Я попытался установить пользователя и ключевой файл прямо перед wait_for_connection, как показано ниже, но ansible по-прежнему сообщает о подключении от имени пользователя NONE, а ключевые файлы не отображают мой ключевой файл (/root/.ssh/mykey):

- имя: Подготовьтесь к подключению к новому узлу
  set_fact:
    ansible_user: 'центос'
    ansible_ssh_private_key_file: "{{ private_key_file }}"        

и часть возможного вывода:

<ec2-34-27-194-74.compute-1.amazonaws.com> УСТАНОВИТЬ SSH-СОЕДИНЕНИЕ ДЛЯ ПОЛЬЗОВАТЕЛЯ: Нет
debug1: файл идентификации /root/.ssh/id_ecdsa тип -1
flowerysong avatar
флаг th
Несколько замечаний: "не повезло" - это не очень хорошее описание проблемы, с которой вы столкнулись при использовании `add_host`. Если это вообще возможно, вы должны переключиться на ec2_instance вместо использования ec2; этот модуль устарел, потому что библиотека, на которой он построен (boto), не поддерживается с 2018 года. очевидно, что это работает так же, как делегирование любой другой цели.
Рейтинг:0
флаг th

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

- имя: Подождите, пока SSH подойдет
  делегат_то: "{{ ec2.instances[0].public_dns_name }}"
  ждать_для_соединения:
    задержка: 60
    сон: 15
    тайм-аут: 40
  вары:
    ansible_user: центрос

Ответить или комментировать

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