สองตัวเลือก - ตัวแรกอย่างที่คุณพูดในคำตอบของคุณคือการตั้งค่าตัวแปรสภาพแวดล้อมANSIBLE_HOST_KEY_CHECKING
เป็นเท็จ
วิธีที่สองในการตั้งค่าคือการใส่ไว้ในไฟล์ ansible.cfg และเป็นตัวเลือกที่มีประโยชน์จริง ๆ เพราะคุณสามารถตั้งค่าแบบโกลบอล (ในระดับระบบหรือผู้ใช้ใน/etc/ansible/ansible.cfg
หรือ~/.ansible.cfg
) หรือในไฟล์ปรับแต่งในไดเรกทอรีเดียวกัน ในฐานะ playbook ที่คุณใช้งาน
หากต้องการทำเช่นนั้นให้สร้างansible.cfg
ไฟล์ในหนึ่งในสถานที่เหล่านั้นและรวมถึงสิ่งนี้:
[defaults]
host_key_checking = False
คุณยังสามารถตั้งค่าเริ่มต้นที่มีประโยชน์อื่น ๆ อีกมากมายเช่นมีการรวบรวมข้อเท็จจริงในช่วงเริ่มต้นของการเล่นหรือไม่ว่าจะรวมแฮชที่ประกาศไว้ในหลาย ๆ ที่หรือจะแทนที่ด้วยอีกอันหนึ่งเป็นต้น มีรายการใหญ่ทั้งตัวเป็นที่นี่ในเอกสารเบิ้ล
แก้ไข: บันทึกความปลอดภัย
การตรวจสอบความถูกต้องของคีย์โฮสต์ SSH เป็นเลเยอร์ความปลอดภัยที่มีความหมายสำหรับโฮสต์แบบต่อเนื่อง - หากคุณกำลังเชื่อมต่อกับเครื่องเดียวกันหลายครั้งมันมีประโยชน์ที่จะยอมรับรหัสโฮสต์ภายในเครื่อง
สำหรับอินสแตนซ์ EC2 ที่มีอายุการใช้งานนานขึ้นจะเหมาะสมที่จะยอมรับคีย์โฮสต์ที่มีงานที่เรียกใช้เพียงครั้งเดียวในการสร้างอินสแตนซ์เริ่มต้น:
- name: Write the new ec2 instance host key to known hosts
connection: local
shell: "ssh-keyscan -H {{ inventory_hostname }} >> ~/.ssh/known_hosts"
ไม่มีค่าความปลอดภัยสำหรับการตรวจสอบคีย์โฮสต์ในอินสแตนซ์ที่คุณยืนขึ้นแบบไดนามิกและลบทันทีหลังจากการดำเนินการกับ playbook แต่มีค่าความปลอดภัยในการตรวจสอบคีย์โฮสต์สำหรับเครื่องที่มีอยู่ ดังนั้นคุณควรจัดการการตรวจสอบคีย์โฮสต์แตกต่างกันตามสภาพแวดล้อมแบบลอจิคัล
- ปล่อยให้การตรวจสอบเปิดใช้งานตามค่าเริ่มต้น (ใน
~/.ansible.cfg
)
- ปิดการใช้งานการตรวจสอบคีย์โฮสต์ในไดเรกทอรีการทำงานสำหรับ playbooks ที่คุณทำงานกับอินสแตนซ์ชั่วคราว (
./ansible.cfg
ข้าง playbook สำหรับการทดสอบหน่วยกับ VMs พเนจรระบบอัตโนมัติสำหรับอินสแตนซ์ ec2 อายุสั้น)