สคริปต์ Ansible ของฉันสร้างเครื่อง AWS จากนั้นพยายามเชื่อมต่อ ขึ้นอยู่กับภาพที่ฉันสร้าง ชื่อผู้ใช้เริ่มต้นสำหรับการเข้าสู่ระบบ SSH คือ 'centos' หรือ 'ubuntu' เป็นต้น
สคริปต์ด้านล่างของฉันล้มเหลวใน wait_for_connection โดยมีข้อผิดพลาด 'การอนุญาตถูกปฏิเสธ' ฉัน สมมติ นี่เป็นเพราะ ssh ใช้ชื่อผู้ใช้ผิด โหนดควบคุมกำลังเรียกใช้สคริปต์เป็น 'userx' (ฉันยืนยันว่ารหัสสาธารณะของฉันอยู่บนเครื่องระยะไกล และรหัสส่วนตัวที่ตรงกันของฉันมีอยู่บนโหนดควบคุม)
ฉันจะปรับสคริปต์ของฉันเพื่อทำให้สามารถใช้ชื่อผู้ใช้ที่ถูกต้องได้อย่างไร ฉันไม่สามารถระบุในคลังได้เนื่องจากเพิ่งสร้างโฮสต์ และชื่อผู้ใช้ขึ้นอยู่กับประเภทของอินสแตนซ์ ไม่มีตัวเลือก 'ชื่อผู้ใช้' สำหรับ wait_for_connection
สคริปต์ของฉัน:
- ชื่อ: สร้างเครื่อง AWS หนึ่งเครื่อง
local_action:
โมดูล: ec2
aws_access_key: "{{ aws_access_key }}"
aws_secret_key: "{{ aws_secret_key }}"
คีย์_ชื่อ: "{{ คีย์_ชื่อ }}"
group_id: "{{ security_group_id }}"
instance_type: "{{ ชนิดของอินสแตนซ์ }}"
รูปภาพ: "{{ ami_id }}"
รอ: จริง
ภูมิภาค: "{{ aws_region }}"
โซน: "{{ aws_zone}}"
vpc_subnet_id: "{{ aws_vpc_subnet }}"
assign_public_ip: ใช่
ลงทะเบียน: ec2
- ชื่อ: รอให้ SSH ปรากฏขึ้น
delegate_to: "{{ ec2.instances[0].public_dns_name }}"
wait_for_connection:
ล่าช้า: 60
นอน: 15
หมดเวลา: 40
ฉันลองตั้งค่าผู้ใช้และไฟล์คีย์ก่อน wait_for_connection ดังที่แสดงด้านล่าง แต่ยังคงรายงานว่าเชื่อมต่อเป็นผู้ใช้ NONE และไฟล์คีย์ที่พยายามไม่มีรายการคีย์ไฟล์ของฉัน (/root/.ssh/mykey):
- ชื่อ: เตรียมเชื่อมต่อกับโหนดใหม่
set_fact:
ansible_user: 'centos'
ansible_ssh_private_key_file: "{{ private_key_file }}"
และส่วนหนึ่งของเอาต์พุต ansible:
<ec2-34-27-194-74.compute-1.amazonaws.com> สร้างการเชื่อมต่อ SSH สำหรับผู้ใช้: ไม่มี
debug1: ไฟล์ข้อมูลประจำตัว /root/.ssh/id_ecdsa ประเภท -1