Ale*_*rin 16 yaml jinja2 ansible
我正在使用Ansible来部署webapp.我想通过检查给定页面返回具有给定键/值的JSON来等待应用程序运行.
我希望在失败之前尝试几次任务.因此我使用了until
/ retries
/ delay
keybwords 的组合.
问题是,我想要retries
从变量中获取数量.如果我写:
retries: {{apache_test_retries}}
Run Code Online (Sandbox Code Playgroud)
我陷入了通常的Yaml Gotcha(http://docs.ansible.com/YAMLSyntax.html#gotchas).
相反,如果我写:
retries: "{{apache_test_retries}}"
Run Code Online (Sandbox Code Playgroud)
我被说是价值不是整数.
ValueError:int()的基数为10的无效文字:'{{apache_test_retries}}'
这是我的完整代码:
- name: Wait for the application to be running
local_action:
uri
url=http://{{webapp_url}}/health
timeout=60
register: res
sudo: false
when: updated.changed and apache_test_url is defined
until: res.status == 200 and res['json'] is defined and res['json']['status'] == 'UP'
retries: "{{apache_test_retries}}"
delay: 1
Run Code Online (Sandbox Code Playgroud)
关于如何解决这个问题的任何想法?谢谢.
ibl*_*vic 20
我有完全相同的问题,并尝试了一些不起作用的事情,所以有一段时间我没有变量运行,但找到答案所以每个拥有它的人.
Daniels解决方案确实应该工作:
retries: "{{ apache_test_retries | int }}"
Run Code Online (Sandbox Code Playgroud)
但是,如果你运行的是较小版本的ansible,它将无法工作.因此,请确保您更新了我在1.8.4上测试过的ansible,并且它可以工作,而不是1.8.2
这是ansible的原始错误:https: //github.com/ansible/ansible/issues/5865
您应该能够使用int过滤器将其转换为整数:
retries: "{{ apache_test_retries | int }}"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
38335 次 |
最近记录: |