【ansible】关于remote_user参数的优先级指定

得出结论

    • 以下の通り(左項で設定した値が優先される)。

 

    • playbook > コマンドパラメータ > ansible.cfg

 

    • ansible-playbookコマンドで -u (“remote_user”を指定するオプション) が効かなかったため、コードリーディングしたところ気がついた1。公式ドキュメントをよく読めば書いてあるかもしれない。

 

    playbookとコマンドパラメータどちらでも指定可能なその他の値についても、同様の動作をするはず。

确认操作

版本信息

$ ansible-playbook --version
ansible-playbook 1.9.3

确认步骤

    ansible.cfg及びplaybookにて、remote_user->root を指定
$ grep remote_user /etc/ansible/ansible.cfg
remote_user = root
$ head -5 test.yml
---
- hosts: all
  vars:
  remote_user: root
  sudo: yes
    ansible-playbookコマンドを実行すると、-u オプションで指定したユーザではなく、rootユーザでssh接続しようとして失敗する(キーペアの不一致)
$ sudo ansible-playbook test.yml -l xxx.xxx.xxx.xxx -u ansibleuser --private-key="xxx.id_rsa" -vvv

PLAY [all] ********************************************************************

GATHERING FACTS ***************************************************************
<xxx.xxx.xxx.xxx> ESTABLISH CONNECTION FOR USER: root ★
<xxx.xxx.xxx.xxx> REMOTE_MODULE setup
<xxx.xxx.xxx.xxx> EXEC ssh -C -tt -v -o ControlMaster=auto -o ControlPersist=60s -o ControlPath= ...
        :
fatal: [xxx.xxx.xxx.xxx] => SSH Error: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
        :
xxx.xxx.xxx.xxx            : ok=0    changed=0    unreachable=1    failed=0
    playbookにて、remote_user行をコメントアウト
$ head -5 test.yml
---
- hosts: all
  vars:
# remote_user: root
  sudo: yes
    あらためてansible-playbookコマンドを実行すると、-u オプションで指定したユーザでssh接続に成功する
$ sudo ansible-playbook test.yml -l xxx.xxx.xxx.xxx -u ansibleuser --private-key="xxx.id_rsa" -vvv

PLAY [all] ********************************************************************

GATHERING FACTS ***************************************************************
<xxx.xxx.xxx.xxx> ESTABLISH CONNECTION FOR USER: ansibleuser ★
<xxx.xxx.xxx.xxx> REMOTE_MODULE setup
<xxx.xxx.xxx.xxx> EXEC ssh -C -tt -v -o ControlMaster=auto -o ControlPersist=60s -o ControlPath= ...
        :
ok: [xxx.xxx.xxx.xxx]
        :
xxx.xxx.xxx.xxx            : ok=1    changed=0    unreachable=0    failed=0

我所感受到的

    • roleにまとめてうまいことやってくれという設計思想かもしれないが、ちょっとしたオペレーションをansibleで書きたい、既存環境がぐちゃぐちゃ、等の理由により、適宜コマンドパラメータで”remote_user”を指定したい場面はあると思う。

 

    そのため、ちょっとしたplaybookには”remote_user”を指定しないほうが融通がきいていいかなと思った。

关于”remote_user”的信息请点击此处↩
广告
将在 10 秒后关闭
bannerAds