Score:0

Ansible ล้มเหลวในการเชื่อมต่อ ssh กับโฮสต์ EC2 ที่สร้างขึ้นแบบไดนามิก

ธง cn
TSG

สคริปต์ 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
flowerysong avatar
th flag
หมายเหตุสองสามข้อ: "โชคไม่ค่อยดี" ไม่ใช่คำอธิบายที่ดีของปัญหาที่คุณพบใน `add_host` หากเป็นไปได้ คุณควรเปลี่ยนไปใช้ `ec2_instance` แทนการใช้ `ec2` โมดูลนี้เลิกใช้งานแล้วเนื่องจากไลบรารีที่สร้างขึ้น (boto) ไม่ได้รับการบำรุงรักษาตั้งแต่ปี 2018 สุดท้ายนี้ การใช้ `delegate_to: localhost` แทน 'local_action' เป็นสิ่งที่ดีกว่า เนื่องจากต้องการให้ผู้ดูแลเรียนรู้ไวยากรณ์น้อยลงและทำให้ เห็นได้ชัดว่าสิ่งนี้ทำงานในลักษณะเดียวกับการมอบหมายไปยังเป้าหมายอื่น ๆ
Score:0
ธง th

คุณสามารถตั้งค่าตัวแปรในงาน บล็อก หรือเล่นโดยใช้ วาร์ คำสำคัญ.

- ชื่อ: รอให้ SSH ปรากฏขึ้น
  delegate_to: "{{ ec2.instances[0].public_dns_name }}"
  wait_for_connection:
    ล่าช้า: 60
    นอน: 15
    หมดเวลา: 40
  วาร์:
    ansible_user: centos

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา