タイトルの通りですが、Ansible の authorized_key モジュールで lookup プラグインを使う時にユーザー名を変数で指定したかったのですが、方法をなかなか見つけることができなかったのでブログに残しておきます。
環境
- Ubuntu 14.04 (Trusty Tahr) Server
- Ansible 1.5.4
- まずはうまくいかない場合ですが、以下のような Playbook を用意します。
$ cat test_playbook.yml - hosts: all sudo: yes vars: user: worker tasks: - authorized_key: user={{ user }} key="{{ lookup('file', '/home/{{ user }}/.ssh/id_rsa.pub') }}"
lookup プラグインの中で user 変数をネストしてます。
- ansible-playbook を実行すると以下のようにエラーになります。
$ ansible-playbook --ask-pass --ask-sudo-pass -i hosts test_playbook.yml SSH password: sudo password [defaults to SSH password]: PLAY [all] ******************************************************************** GATHERING FACTS *************************************************************** ok: [test_host] ERROR: /home/{{user}}/.ssh/id_rsa.pub does not exist
- Playbook を以下のようにするとうまくいきました。
$ cat test_playbook.yml - hosts: all sudo: yes vars: user: worker tasks: - authorized_key: user={{ user }} key="{{ lookup('file', '/home/' + user + '/.ssh/id_rsa.pub') }}"
+ で文字列として結合してます。
0 件のコメント:
コメントを投稿