web-dev-qa-db-ja.com

ansibleのHostファイルでユーザー名を指定する方法

私は以下のようにホストファイルを使用しています、

[qa-workstations]
10.39.19.190 ansible_user=test ansible_ssh_pass=test

以下のコマンドを使用してホストで「whoami」コマンドを実行しています

root@Svr:~/ansible# ansible all -a "whoami" -i /etc/ansible/Host
10.39.19.190 | success | rc=0 >>
root

デフォルトでは、ログインしたユーザー名、つまりホストファイルで指定したテストユーザーの代わりにrootを使用しようとする

Ansible cliコマンドでユーザー名を渡そうとすると、正常に動作します

root@Svr:~/ansible# ansible all -a "whoami" -i /etc/ansible/Host -u test
10.39.19.190 | success | rc=0 >>
test

しかし、異なるホストが異なるユーザー名を使用するため、CLIで毎回ユーザー名を渡すことはできません。また、ホストマシンは頻繁に変化し続けるため、各ホストに対して生成されたキーペアはありません。

使用したバージョン:

 ansible 1.5.4 
 Ubuntu 14.04 LTS
12

プレイブックディレクトリにansible.cfgを作成するか、「グローバル」なansible.cfgを変更します

注:1つの構成ファイルのみが処理されます。以下のリストで最初の方が勝ちます。 http://docs.ansible.com/ansible/intro_configuration.html

  • ANSIBLE_CONFIG(環境変数)
  • ansible.cfg(現在のディレクトリ内)
  • .ansible.cfg(ホームディレクトリ内)
  • /etc/ansible/ansible.cfg
[defaults]
remote_user=test
8
chrism

Ansibleの最近のバージョンでは、ホスト定義でansible_userパラメーターを使用できます。

たとえば、ホストmysql-Host.mydomainでは、接続に必要なユーザーはmysqlです。

[docker-hosts]
mysql-Host.mydomain ansible_user=mysql

ただし、古いバージョンのansibleを使用しているため、代わりにansible_ssh_userを使用する必要がある場合があります

http://docs.ansible.com/ansible/faq.html#how-do-i-handle-different-machines-needing-different-user-accounts-or-ports-to-log-in-あり

20
Johnride