]> git.apps.os.sepia.ceph.com Git - ceph-ansible.git/commit
ceph-mon: fix the loop in `secure the cluster' task 914/head
authorAlexey Sheplyakov <asheplyakov@mirantis.com>
Fri, 29 Jul 2016 10:30:21 +0000 (13:30 +0300)
committerAlexey Sheplyakov <asheplyakov@mirantis.com>
Fri, 29 Jul 2016 11:08:12 +0000 (14:08 +0300)
commit76a3d876ee35d939ac3b5c10847b1ee90dfda867
tree6c19c3611919fce0275bf41d8c60671129886618
parent7c745cba920c61dfcd294cd3689fefc889b89ee5
ceph-mon: fix the loop in `secure the cluster' task

Deployment fails when the ``secure_cluster`` is false:

TASK [ceph-mon : secure the cluster]
*******************************************
fatal: [saceph-mon.vm.ceph.asheplyakov]: FAILED! => {"failed": true, "msg": "'dict object' has no attribute 'stdout_lines'"}
fatal: [saceph-mon2.vm.ceph.asheplyakov]: FAILED! => {"failed": true, "msg": "'dict object' has no attribute 'stdout_lines'"}
fatal: [saceph-mon3.vm.ceph.asheplyakov]: FAILED! => {"failed": true, "msg": "'dict object' has no attribute 'stdout_lines'"}

A conditional include evaluates all included tasks with the (additional)
conditional applied to every task [1]. Thus all tasks from `secure_cluster.yml'
are always evaluated (with an additional 'when: secure_cluster' condition).
The `secure the cluster' task iterates over ``ceph_pools.stdout_lines``
even if ``secure_cluster`` is false: in loops ansible applies conditional
to every item (by design) [2]. However the `collect all the pools' task
is skipped if the very same condition evaluates to false, which leaves
the ``ceph_pools`` undefined, so the `secure the cluster' task fails:

Provide the default (empty) list to avoid the problem.

[1] http://docs.ansible.com/ansible/playbooks_conditionals.html#applying-when-to-roles-and-includes
[2] http://docs.ansible.com/ansible/playbooks_conditionals.html#loops-and-conditionals

Closes: #913
Signed-off-by: Alexey Sheplyakov <asheplyakov@mirantis.com>
roles/ceph-mon/tasks/secure_cluster.yml