# ansible は全くの初心者なので、もし的外れだったらゴメンなさい。。
「sudoパスワードが未指定という変数」は取得できそうにないので、「sudoに失敗」したらスキップするという代替案を考えてみました。
一例として、下記ファイルは sudo
に失敗すると cat
できないので
-r--r----- 1 root wheel 1275 9 10 2014 /etc/sudoers
以下のように playbook を記載してみました。
$ cat test.yaml
- hosts: 127.0.0.1
gather_facts: no
tasks:
- name: check sudo authentication
sudo: yes
ignore_errors: yes
shell: sudo cat /etc/sudoers >/dev/null 2>&1
#shell: ( sudo cat /etc/sudoers >/dev/null 2>&1; echo $? )
register: result
- name: Task1
debug: msg={{ 'Task1' }}
- name: Task2
debug: msg={{ 'Task2' }}
when: result|success
#when: ( result.stdout == '0' )
- name: Task3
debug: msg={{ 'Task3' }}
$
1)パスワードが正しく指定された場合
$ ansible-playbook -i /etc/ansible/hosts test.yaml -K
SUDO password:
PLAY [127.0.0.1] **************************************************************
TASK: [check sudo authentication] *********************************************
changed: [127.0.0.1]
TASK: [Task1] *****************************************************************
ok: [127.0.0.1] => {
"msg": "Task1"
}
TASK: [Task2] *****************************************************************
ok: [127.0.0.1] => {
"msg": "Task2"
}
TASK: [Task3] *****************************************************************
ok: [127.0.0.1] => {
"msg": "Task3"
}
PLAY RECAP ********************************************************************
127.0.0.1 : ok=4 changed=1 unreachable=0 failed=0
$
2)パスワードが指定されなかった場合
$ ansible-playbook -i /etc/ansible/hosts test.yaml
PLAY [127.0.0.1] **************************************************************
TASK: [check sudo authentication] *********************************************
failed: [127.0.0.1] => {"failed": true, "parsed": false}
[sudo via ansible, key=ibhxzsmzkqrgnjypykcxbljzklzidljk] password:
...ignoring
TASK: [Task1] *****************************************************************
ok: [127.0.0.1] => {
"msg": "Task1"
}
TASK: [Task2] *****************************************************************
skipping: [127.0.0.1]
TASK: [Task3] *****************************************************************
ok: [127.0.0.1] => {
"msg": "Task3"
}
PLAY RECAP ********************************************************************
127.0.0.1 : ok=3 changed=0 unreachable=0 failed=0
$
この方式のメリットは、パスワードが未指定の場合だけでなく、指定されたパスワードが間違っていた場合もスキップしてくれる点です。
記載方法等、根本的に違っている部分もあるかもしれませんが、なにせ初心者なのでご容赦ください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/06 15:31
2015/08/07 01:55
2015/08/07 02:09