web-dev-qa-db-ja.com

SSH接続のデフォルトのAnsibleユーザー名/パスワードを設定する方法

私はAnsibleを使用していて、私のインベントリ/すべてにこの構成があります:

[master]
192.168.1.10 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant

[slave]
192.168.1.11 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
192.168.1.12 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant

[app]
192.168.1.13 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant

[all:children]
master
slave

新しいインスタンスごとにすべてのパラメーターを繰り返したくありません。どうすれば1か所で構成できますか?これらのパラメータを持つファイルはありますか?

71
Robert

次のセクションをインベントリファイルに追加できます。

[all:vars]
ansible_connection=ssh
ansible_user=vagrant
ansible_ssh_pass=vagrant

注: Ansible 2.0より前のansible_useransible_ssh_userでした。

96
Alexey Labzov

グループ変数

すべてのホストに適用する変数を設定するには、Ansibleの ベストプラクティス ドキュメントで指定された playbook layout を使用して、_group_vars/all_ファイルを作成します defineそれら

_---
# file: group_vars/all
ansible_connection: ssh 
ansible_ssh_user: vagrant 
ansible_ssh_pass: vagrant
_

[編集]でも、あなたがやろうとしていることに戸惑っています。インベントリでAnsibleユーザーまたはパスワードを指定する必要はありません。 Vagrantを使用している場合は絶対に使用せず、コマンドラインからAnsibleを呼び出す場合は、_--user=vagrant_でユーザーを指定し、_--ask-pass_でパスワードを要求させることができます。

24
Philip Wilson

プル全体のすべてのサーバーにsshキーのインストールを使用する方が良いと思います。ノードごとにのみssh-copy-idを実行し、あらゆる場所にsshキーをインストールして、Ansibleがsshキーを使用してログインできるようにする必要があります。プレイブック/インベントリにパスワードを保存しないほうが安全です。

これを行うには、 sshキーペアを生成 し、その後、すべてのサーバーに対してssh-copy-idを実行する必要があります。

5
podarok

以下をホストのインベントリに追加します。

Ansible <2.0の場合:

[all:vars]
ansible_connection=ssh
ansible_ssh_user=vagrant 
ansible_ssh_pass=vagrant

Ansible> = 2. の場合:

[all:vars]
ansible_connection=ssh # actually default mode smart is OK
ansible_user=vagrant
ansible_pass=vagrant # or ansible_ssh_pass=vagrant
4
Mithril

免責事項:私はこれをOSXでのみテストしました。さまざまなドキュメントに基づいて、他のプラットフォームでも動作することを期待しています。

「プロジェクトディレクトリ」は、Vagrantプロジェクトのベースディレクトリ、つまりVagrantfileを含むディレクトリを指します。

Anagible InventoryファイルはVagrantによって自動生成されます:

Vagrant インベントリファイルを作成します デフォルトのAnsible接続変数を使用します。 _<project directory>/.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory_で探してください。

このファイルは必要に応じてVagrantによって再生成されるため、手動での編集は上書きされます。ただし、Vagrantのドキュメントによると、Vagrantfileで複数のマシン、グループ変数などを指定でき、それらはこのインベントリファイルに追加されます。

このインベントリファイルにデフォルトで設定するようにAnsibleを構成します:

このファイルをプロジェクトディレクトリ(ホスト上)にいるときにansibleコマンドで使用されるデフォルトにするには、プロジェクトディレクトリにこれらの内容を含む_ansible.cfg_ファイルを追加し、パスを次のように変更します。必要:

_[defaults]
inventory = ./path/to/inventory
_

このインベントリファイルが使用されていることを確認するには、ansibleによって報告されたデフォルトとしてそれを探します。

(プロジェクトディレクトリ内から)

$ ansible | grep inventory ERROR! Missing target hosts -i INVENTORY, --inventory-file=INVENTORY specify inventory Host path (default=./.vagrant/provis ioners/ansible/inventory/vagrant_ansible_inventory) or

ホストを確認するには:

$ ansible all --list-hosts hosts (2): master slave

これらのホストでのAnsibleの使用:

プロジェクトディレクトリ内から、ansibleで定義したホストで通常どおりVagrantfileを使用できるようになります。

例えば:

_ansible slave -a 'hostname'
_
2
kentr