환경 당 SSH 자격 증명 구성


10

Ansible을 사용하여 프로덕션 및 준비 환경에 대해 SSH 자격 증명을 별도로 구성하는 방법을 알아 내려고합니다. -ior --inventory-file인수를 ansible-playbook명령 에 전달하여 다른 인벤토리 파일을 사용하여 서버 IP 주소와 호스트 이름을 개별적으로 구성 할 수 있음을 이해합니다 . 그러나에 대한 해당 옵션이 없습니다 ansible.cfg. 현재 자격 증명은 다음 /etc/ansible/ansible.cfg과 같습니다.

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

프로덕션 용과 스테이징 용으로 여러 SSH 자격 증명을 구성하려면 어떻게해야합니까?


환경간에 어떤 변화가 있습니까? 키 파일 또는 remote_user / sudo_user?
tedder42

@ tedder42 SSH 개인 키 및 remote_user.
user369450

.ssh / config에서 다루지 않겠습니까?
udondan

@udondan 여러 호스트에 대해 단일 키를 한 번 지정하는 방법이 .ssh/config있습니까?
user369450

네, 그렇게 할 수 있습니다. 명시적인 호스트 이름 또는 패턴으로 여러 그룹을 만들 수 있습니다. 답변에 예를 게시하겠습니다.
udondan

답변:


16

첫 번째 답변이 완전히 정확하지 않은 것 같습니다. 물론 .ssh/config아래 설명과 같이 해결할 수는 있지만 Ansibles Behavioral Inventory Parameters 로도 가능합니다 .

(문서에 따라) 호스트 또는 그룹별로 인벤토리에서 키 파일과 사용자를 정의 할 수 있어야합니다.

그룹당 정의 :

[some_hosts]
host1.foo
host2.foo

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

호스트 당 정의 :

[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

그러나 이미 여러 호스트 그룹을 정의 할 수 .ssh/config있으며 각 그룹은 키 및 사용자에 대한 별도의 설정을 가질 수 있습니다.

다음은 간단한 예입니다

#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

또한 기본값을 정의하고 나중에 더 자세한 설정으로 재정의 할 수 있습니다.

Host *
  user defaut_username

Host somehost
  user special_username
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.