3

我正在尝试使用该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)]

4

1 回答 1

0

据我所知,您不能在组变量中设置它。但是您可以在运行此剧本之前尝试设置 ENVSERIAL_NUMBER=1并设置串行参数,例如:

  serial: "{{lookup('env','SERIAL_NUMBER')|default(3, true)}}"
于 2021-08-16T03:01:24.463 回答