Định cấu hình thông tin đăng nhập SSH cho mỗi môi trường


10

Tôi đang cố gắng tìm ra cách định cấu hình thông tin đăng nhập SSH riêng cho môi trường sản xuất và dàn dựng với Ansible. Tôi hiểu rằng bạn có thể định cấu hình các địa chỉ IP máy chủ và tên máy chủ riêng biệt bằng cách sử dụng các tệp kiểm kê khác nhau bằng cách chuyển -ihoặc --inventory-fileđối số cho ansible-playbooklệnh. Tuy nhiên, tôi thấy không có lựa chọn như vậy cho ansible.cfg. Hiện tại, thông tin đăng nhập có /etc/ansible/ansible.cfgdạng:

[defaults]
private_key_file=/home/caleb/.ssh/staging_key.pem
remote_user=ubuntu
sudo_user=root
gathering=explicit

Làm cách nào tôi có thể định cấu hình nhiều thông tin SSH, một cho sản xuất và một cho dàn dựng?


những gì thay đổi giữa các môi trường của bạn? Chỉ là tệp chính, hoặc cũng là remote_user / sudo_user?
tedder42

@ tedder42 Khóa riêng SSH và remote_user.
dùng369450

Tại sao bạn không bao gồm nó trong .ssh / config của bạn?
udondan

@udondan Có cách nào để chỉ định một khóa một lần cho nhiều máy chủ .ssh/configkhông?
dùng369450

Đúng, bạn có thể làm điều đó. Bạn có thể tạo nhiều nhóm với tên máy chủ hoặc mẫu rõ ràng. Hãy để tôi gửi một ví dụ trong một câu trả lời.
udondan

Câu trả lời:


16

Có vẻ như câu trả lời đầu tiên của tôi không hoàn toàn chính xác. Mặc dù tất nhiên có thể giải quyết nó .ssh/configgiống như được mô tả dưới đây, nhưng dường như cũng có thể thực hiện được với Thông số kiểm kê hành vi của Ansibles .

Bạn nên (theo tài liệu) có thể xác định keyfile và người dùng trong kho của bạn, trên mỗi máy chủ hoặc mỗi nhóm.

Định nghĩa mỗi nhóm:

[some_hosts]
host1.foo
host2.foo

[some_hosts:vars]
ansible_ssh_user=ubuntu
ansible_ssh_private_key_file=/home/caleb/.ssh/staging_key.pem

Định nghĩa trên mỗi máy chủ:

[some_hosts]
host1.foo     ansible_ssh_user=ubuntu          ansible_ssh_private_key_file=/home/caleb/.ssh/staging_key.pem
host2.foo     ansible_ssh_user=another_user    ansible_ssh_private_key_file=/home/caleb/.ssh/production_key.pem

Nhưng bạn có thể xác định nhiều nhóm máy chủ đã có trong .ssh/configvà mỗi nhóm có thể có các cài đặt riêng về khóa và người dùng.

Đây là một ví dụ nhanh

#Example with a wildcard
Host *.foo.com
  user ubuntu
  IdentityFile /home/caleb/.ssh/staging_key.pem

#Example with multiple hostnames
Host hostname.one hostname.two hostname.three
  user other_user
  IdentityFile /home/caleb/.ssh/production_key.pem

Cũng như bạn có thể xác định một mặc định và ghi đè nó sau với các cài đặt chi tiết hơn.

Host *
  user defaut_username

Host somehost
  user special_username
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.