Hai tùy chọn - đầu tiên, như bạn đã nói trong câu trả lời của riêng bạn, đang đặt biến môi trường ANSIBLE_HOST_KEY_CHECKING
thành Sai. Cách thứ hai để đặt nó là đặt nó vào một tệp ansible.cfg, và đó là một lựa chọn thực sự hữu ích bởi vì bạn có thể thiết lập toàn cầu (ở mức hệ thống hoặc người dùng, trong /etc/ansible/ansible.cfg
hoặc ~/.ansible.cfg
), hoặc trong một tệp cấu hình trong cùng thư mục với sách bạn đang chạy.
Để làm điều đó, tạo một file ansible.cfg
tại một trong những địa điểm, và bao gồm này:
[defaults]
host_key_checking = False
Bạn cũng có thể đặt rất nhiều giá trị mặc định có ích khác ở đó, như có hay không để thu thập sự kiện tại bắt đầu một vở kịch, cho dù hợp nhất các băm được khai báo ở nhiều nơi hay thay thế bằng một vị trí khác, v.v. Có một danh sách lớn các tùy chọn here trong tài liệu Ansible.
Chỉnh sửa: ghi chú về bảo mật.
Xác thực khóa máy chủ SSH là lớp bảo mật có ý nghĩa cho máy chủ liên tục - nếu bạn đang kết nối với cùng một máy nhiều lần, bạn nên chấp nhận khóa máy chủ cục bộ.
Đối với EC2 còn sống, nó sẽ làm cho tinh thần để chấp nhận chìa khóa máy với một nhiệm vụ chạy chỉ một lần trên tạo ban đầu của dụ:
- name: Write the new ec2 instance host key to known hosts
connection: local
shell: "ssh-keyscan -H {{ inventory_hostname }} >> ~/.ssh/known_hosts"
Không có giá trị bảo đảm cho việc kiểm tra host key trên các trường hợp bạn đứng lên động và xóa ngay sau khi thực thi playbook, nhưng có giá trị bảo mật trong việc kiểm tra các khóa máy chủ cho các máy liên tục. Vì vậy, bạn nên quản lý việc kiểm tra khóa máy chủ khác nhau theo môi trường logic.
- Để lại việc kiểm tra được kích hoạt theo mặc định (trong
~/.ansible.cfg
)
- Disable chính chủ kiểm tra trong thư mục làm việc cho playbooks bạn chạy chống lại các trường hợp phù du (
./ansible.cfg
cùng với playbook cho unit tests chống lại lang thang máy ảo, tự động hóa cho ngắn ngủi eC2)
Bất kỳ ai biết thực hành tốt nhất là những gì ở đây? Ví dụ, bạn có thể chạy một kịch bản định kỳ để đặt lại các máy chủ đã biết của bạn, điều này sẽ an toàn hơn (trừ khi bị tấn công MITM làm mờ cửa sổ đó). Bỏ qua tính xác thực theo mặc định loại bỏ một trong các cơ chế bảo mật chính của SSH – TonyH
Tôi thích mẫu mà nhóm của tôi sử dụng: chúng tôi đặt các tệp ansible.cfg vô hiệu hóa kiểm tra khóa máy chủ trong các thư mục hoạt động cho sách chơi chúng tôi chạy chống lại các phiên bản tạm thời (các kiểm tra đơn vị chạy trên máy ảo lang thang) , AWS ec2 trường hợp, vv) và để kiểm tra được kích hoạt ở cấp hệ thống. – nikobelia
Bằng cách đó, bạn có thể quản lý việc kiểm tra khóa máy chủ * trên mỗi môi trường logic *. Không có giá trị bảo mật nào để kiểm tra các khóa máy chủ trên các cá thể mà bạn đứng lên động và xóa ngay sau khi thực thi playbook, nhưng có giá trị bảo mật trong việc kiểm tra các khóa máy chủ cho các máy liên tục. Vì vậy, bạn nên có các mặc định khác nhau cho các trường hợp sử dụng khác nhau. – nikobelia