udo*_*dan 8 ansible ansible-playbook
我有一个将redis集群和胡桃夹子设置为代理的剧本.哪些主机可以播放每个组定义的角色.我想在运行任务之前添加一个完整性检查,即:
我已经有了一个解决方案,虽然我觉得它很丑陋,并且认为必须有更好的东西,但我找不到它.我目前运行一个本地任务,再次使用--list-hosts参数调用该剧本并检查输出.
- name: Make sure there is only one proxy defined
shell: ansible-playbook -i {{ inventory_file }} redis-cluster.yml --tags "redis-proxy" --list-hosts
register: test
failed_when: test.stdout.find("host count=1\n") == -1
changed_when: 1 == 2
Run Code Online (Sandbox Code Playgroud)
这有用但是没有一种简单的方法来检查没有这个额外呼叫的组中的主机数量?
waz*_*azy 24
(免责声明:我觉得我遇到类似的问题并弄清楚我应该纠正这里给出的其他答案.)
Woodham提到的使用Jinja2过滤器的内容是正确的,但使用不当.它们可以在剧本中使用,但你应该以这种方式使用它们:
vars:
num_hosts: "{{ groups['redis-proxy'] | length }}"
Run Code Online (Sandbox Code Playgroud)
如您所见,我们可以轻松地以这种方式链接过滤器,稍后我们可以检查此变量:
- name: Validate Number of Nodes
fail: msg="The number of nodes must be exactly 1!"
when: num_hosts | int != 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12532 次 |
| 最近记录: |