Scriptul meu Ansible creează o mașină AWS, apoi încearcă să se conecteze la ea. În funcție de imaginea pe care o creez, numele de utilizator implicit pentru autentificare SSH este fie „centos”, fie „ubuntu”, etc.
Scriptul meu de mai jos eșuează la wait_for_connection cu o eroare „permisiune refuzată”. eu presupune acest lucru se datorează faptului că ssh folosește un nume de utilizator greșit; nodul de control rulează scriptul ca „userx”. (Am confirmat că cheia mea publică este pe mașina de la distanță și cheia mea privată corespunzătoare este disponibilă pe nodul de control).
Cum îmi ajustez scriptul pentru ca ansible să folosească numele de utilizator corect? Nu îl pot specifica în inventar, deoarece gazda tocmai a fost creată, iar numele de utilizator depinde de tipul instanței. Nu există opțiunea „nume de utilizator” pentru wait_for_connection
Scenariul meu:
- nume: creați o mașină AWS
local_action:
modul: 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 }}”
imagine: „{{ ami_id }}”
așteaptă: adevărat
regiune: „{{ aws_region }}”
zona: „{{ aws_zone}}”
vpc_subnet_id: „{{ aws_vpc_subnet }}”
assign_public_ip: da
registru: ec2
- nume: așteptați să apară SSH
delegate_to: „{{ ec2.instances[0].public_dns_name }}”
wait_for_connection:
întârziere: 60
somn: 15
timeout: 40
Am încercat să setez utilizatorul și fișierul cheie chiar înainte de wait_for_connection, așa cum se arată mai jos, dar ansible încă raportează ca utilizator NIMIC, iar fișierele cheie încercate nu listează fișierul meu cheie (/root/.ssh/mykey):
- nume: pregătiți-vă pentru a vă conecta la noul nod
set_fact:
ansible_user: „centos”
ansible_ssh_private_key_file: „{{ private_key_file }}”
și o parte a ieșirii ansible:
<ec2-34-27-194-74.compute-1.amazonaws.com> ESTABILIȚI CONEXIUNEA SSH PENTRU UTILIZATOR: Niciuna
debug1: fișier de identitate /root/.ssh/id_ecdsa tip -1