環境ごとにSSH認証情報を構成する


10

Ansibleを使用して、本番環境とステージング環境でSSH認証情報を個別に構成する方法を理解しようとしています。コマンドに-ior --inventory-file引数を渡すことで、さまざまなインベントリファイルを使用してサーバーのIPアドレスとホスト名を個別に設定できることを理解していますansible-playbook。ただし、そのようなオプションはありませんansible.cfg。現在、認証情報は次の場所にあります/etc/ansible/ansible.cfg

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

本番用とステージング用に1つずつ、複数のSSH認証情報を設定するにはどうすればよいですか?


環境間でどのような違いがありますか?鍵ファイルだけ、またはremote_user / sudo_user?
tedder42 2015

@ tedder42 SSH秘密鍵とremote_user。
user369450

.ssh / configでそれをカバーしないのはなぜですか?
うどんだん2015

@udondanで複数のホストに対して単一のキーを一度指定する方法はあります.ssh/configか?
user369450

はい、できます。明示的なホスト名またはパターンで複数のグループを作成できます。回答の例を投稿しましょう。
うどんだん2015

回答:


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.