这是我的问题
我在詹金斯上运行了一个带有额外变量的剧本,我想在我的剧本中测试变量是否定义
ansible [核心 2.12.1],jenkins 插件 1.1
这是来自詹金斯的命令:
ansible-playbook create_user.yml -i hosts -e Site=UK -e BU=Test -e date_exp=
我的测试代码如下
- name: Set expiration date
when : not date_exp
set_fact:
date_exp: "01/01/2024"
- name: Expiration date
debug:
msg:
- "{{ date_exp}}"
尝试了很多东西:不是,是未定义的,==“”都没有用
答案1
测试字符串的长度
when: date_exp|length == 0
完整测试剧本的示例
shell> cat pb.yml
- hosts: localhost
gather_facts: false
tasks:
- debug:
var: date_exp
- debug:
var: date_exp|type_debug
- debug:
msg: var is empty
when: date_exp|length == 0
shell> ansible-playbook pb.yml -e date_exp=
PLAY [localhost] ******************************************************************************
TASK [debug] **********************************************************************************
ok: [localhost] =>
date_exp: ''
TASK [debug] **********************************************************************************
ok: [localhost] =>
date_exp|type_debug: str
TASK [debug] **********************************************************************************
ok: [localhost] =>
msg: var is empty
PLAY RECAP ************************************************************************************
localhost: ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
shell> ansible-playbook pb.yml -e date_exp=xxx
PLAY [localhost] ******************************************************************************
TASK [debug] **********************************************************************************
ok: [localhost] =>
date_exp: xxx
TASK [debug] **********************************************************************************
ok: [localhost] =>
date_exp|type_debug: str
TASK [debug] **********************************************************************************
skipping: [localhost]
PLAY RECAP ************************************************************************************
localhost: ok=2 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0