私は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か所で構成できますか?これらのパラメータを持つファイルはありますか?
次のセクションをインベントリファイルに追加できます。
[all:vars]
ansible_connection=ssh
ansible_user=vagrant
ansible_ssh_pass=vagrant
注: Ansible 2.0より前のansible_user
はansible_ssh_user
でした。
すべてのホストに適用する変数を設定するには、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
_でパスワードを要求させることができます。
プル全体のすべてのサーバーにsshキーのインストールを使用する方が良いと思います。ノードごとにのみssh-copy-idを実行し、あらゆる場所にsshキーをインストールして、Ansibleがsshキーを使用してログインできるようにする必要があります。プレイブック/インベントリにパスワードを保存しないほうが安全です。
これを行うには、 sshキーペアを生成 し、その後、すべてのサーバーに対してssh-copy-idを実行する必要があります。
以下をホストのインベントリに追加します。
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
免責事項:私はこれを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'
_