如何强制 Ansible 中的变量只有 3 个字符或只有数字?
How to force a variable in Ansible to be only 3 CHARS or only numbers?
我在 Ansible 中有以下任务:
- name: Run multiple queries
community.general.hana_query:
sid: "{{ sid | default('HDB') | upper }}"
instance: "{{ instance | default('01') }}"
变量 sid
必须是 3 个字符。
变量 instance
可以是 01
和 99
之间的任何数字。
我如何在脚本中强制执行它?
您是否希望任务仅在变量为 3 个字符或仅为数字时 运行 执行,否则跳过?
如果是这种情况,那么您可以简单地在 when 条件下进行检查并使用 length
和 int
过滤器。
- name: Run multiple queries
community.general.hana_query:
sid: "{{ sid | upper }}"
instance: "{{ instance }}"
when:
- sid | length == 3
- instance | int
当变量不是 3 个字符或只有数字时,您是否希望 playbook 失败?
如果是这样,那么你可以在任务之前做一个断言。
- name: Check if variables are legit
assert:
that:
- sid | length == 3
- instance | int
或者您想 trim 变量以使其符合您的要求?
您可以用[:3]
选择sid
的前3个字符。
并执行 regex_replace
以删除 instance
中的所有非数字字符,然后选择前 2 个 [:2]
。
- name: Run multiple queries
community.general.hana_query:
sid: "{{ (sid | upper)[:3] }}"
instance: "{{ (instance | regex_replace('[^0-9]+', ''))[:2] }}"
我在 Ansible 中有以下任务:
- name: Run multiple queries
community.general.hana_query:
sid: "{{ sid | default('HDB') | upper }}"
instance: "{{ instance | default('01') }}"
变量 sid
必须是 3 个字符。
变量 instance
可以是 01
和 99
之间的任何数字。
我如何在脚本中强制执行它?
您是否希望任务仅在变量为 3 个字符或仅为数字时 运行 执行,否则跳过?
如果是这种情况,那么您可以简单地在 when 条件下进行检查并使用 length
和 int
过滤器。
- name: Run multiple queries
community.general.hana_query:
sid: "{{ sid | upper }}"
instance: "{{ instance }}"
when:
- sid | length == 3
- instance | int
当变量不是 3 个字符或只有数字时,您是否希望 playbook 失败? 如果是这样,那么你可以在任务之前做一个断言。
- name: Check if variables are legit
assert:
that:
- sid | length == 3
- instance | int
或者您想 trim 变量以使其符合您的要求?
您可以用[:3]
选择sid
的前3个字符。
并执行 regex_replace
以删除 instance
中的所有非数字字符,然后选择前 2 个 [:2]
。
- name: Run multiple queries
community.general.hana_query:
sid: "{{ (sid | upper)[:3] }}"
instance: "{{ (instance | regex_replace('[^0-9]+', ''))[:2] }}"