【发布时间】:2019-09-17 08:38:53
【问题描述】:
我正在尝试使用 serial 元素构建具有滚动更新用例(顺序执行)的剧本。由于我必须在剧本中的多个位置使用序列值,因此我想将其用作变量,可用于在某处定义为组变量。
库存文件
[all]
webserver1 ansible_host=10.1.1.1 ansible_user=root
webserver2 ansible_host=10.1.1.2 ansible_user=root
webserver3 ansible_host=10.1.1.3 ansible_user=root
dbserver1 ansible_host=10.1.2.1 ansible_user=root
[webserver]
webserver1
webserver2
webserver3
[dbserver]
dbserver1
[app-stack:children]
webservers
dbservers
[app-stack:vars]
app_stack_serial_value=1
手册
- hosts: app-stack
serial: "{{ app_stack_serial_value }}"
tasks:
- name: debug
debug:
msg: "Ansible Host - {{ ansible_host }}"
错误
错误! 'serial' 字段的值无效,其中包括未定义的变量。错误是:“app_stack_serial_value”未定义
如果我在像serial: 1 这样的序列字段中指定值,这将起作用。但我想将此值用作变量。有什么想法吗??
Ansible 版本:ansible 2.7.10
python 版本 = 3.7.2(默认,2019 年 1 月 13 日,12:50:01)[Clang 10.0.0 (clang-1000.11.45.5)]
【问题讨论】:
-
AFAIK 这是github.com/ansible/ansible/issues/33382 中报告的错误,这里的所有解决方法都非常丑陋。
-
您可以将其作为额外变量传入:
-e 'app_stack_serial_value=1' -
@jack 我知道这会很好地工作,但我想在变量文件的某个地方配置它。我必须根据组名定义多个序列值。我不能把所有这些变量都作为额外的变量。
标签: serialization ansible ansible-inventory ansible-role