Meu script Ansible cria uma máquina AWS e tenta conectar-se a ela. Dependendo da imagem que estou criando, o nome de usuário padrão para login SSH é ‘centos’ ou ‘ubuntu’ etc.
Meu script abaixo falha em wait_for_connection com um erro de 'permissão negada'. EUpresumirisso ocorre porque o ssh está usando o nome de usuário errado; o nó de controle está executando o script como 'userx'. (Confirmei que minha chave pública está na máquina remota e minha chave privada correspondente está disponível no nó de controle).
Como ajusto meu script para fazer com que o ansible use o nome de usuário correto? Não consigo especificá-lo no inventário porque o host acabou de ser criado e o nome de usuário depende do tipo de instância. Não há opção de 'nome de usuário' para wait_for_connection
Meu roteiro:
- name: Create one AWS machine
local_action:
module: ec2
aws_access_key: "{{ aws_access_key }}"
aws_secret_key: "{{ aws_secret_key }}"
key_name: "{{ key_name }}"
group_id: "{{ security_group_id }}"
instance_type: "{{ instance_type }}"
image: "{{ ami_id }}"
wait: true
region: "{{ aws_region }}"
zone: "{{ aws_zone}}"
vpc_subnet_id: "{{ aws_vpc_subnet }}"
assign_public_ip: yes
register: ec2
- name: Wait for SSH to come up
delegate_to: "{{ ec2.instances[0].public_dns_name }}"
wait_for_connection:
delay: 60
sleep: 15
timeout: 40
Tentei definir o usuário e o arquivo-chave logo antes de wait_for_connection como mostrado abaixo, mas o ansible ainda relata como conexão como usuário NONE, e os arquivos-chave tentaram não listar meu arquivo-chave (/root/.ssh/mykey):
- name: Prepare to connect to new node
set_fact:
ansible_user: 'centos'
ansible_ssh_private_key_file: "{{ private_key_file }}"
e parte da saída ansible:
<ec2-34-27-194-74.compute-1.amazonaws.com> ESTABLISH SSH CONNECTION FOR USER: None
debug1: identity file /root/.ssh/id_ecdsa type -1
Responder1
Você pode definir variáveis em qualquer tarefa, bloco ou jogo usando a vars
palavra-chave.
- name: Wait for SSH to come up
delegate_to: "{{ ec2.instances[0].public_dns_name }}"
wait_for_connection:
delay: 60
sleep: 15
timeout: 40
vars:
ansible_user: centos