我正在尝试将具有当前日期和时间的变量传递给剧本。目标是在所有受影响的主机上创建一个DIR进行部署,包括当前日期和时间(以秒为单位)。主机数量为12,我在剧本中使用“ serial:2”选项仅在2台主机上同时运行作业,因此我需要进行6次运行才能完成整个作业。我在AWX的“模板”属性页上的“额外变量”字段中传递变量-datetime:“ {{ansible_date_time}}”,但是此变量的值在每次串行播放时都会更改,因此在不同的主机上创建的DIR名称不同。
现在,我在Roles中的main.yml中使用以下代码进行调试:
- name: Debug date and time
debug:
msg: "{{datetime.iso8601_basic_short}}"
我得到的是什么
TASK [Gathering Facts] *********************************************************
ok: [server1]
ok: [server2]
TASK [dqtestrole : Debug date and time] ****************************************
ok: [server1] => {
"msg": "20190717T094151"
}
ok: [server2] => {
"msg": "20190717T094151"
}
PLAY [Deploy WAR-file for Tomcat] **********************************************
TASK [Gathering Facts] *********************************************************
ok: [server3]
ok: [server4]
TASK [dqtestrole : Debug date and time] ****************************************
ok: [server3] => {
"msg": "20190717T094155"
}
ok: [server4] => {
"msg": "20190717T094155"
}
...
我也尝试过:
在剧本YML文件中分配值
在“ AWX-Settings-Jobs-Extra环境变量”中分配值,然后通过lookup('env','datetime')访问
因此,我确定存在正确的方法,但是在谷歌搜索并尝试了几天之后,我仍然找不到它。有人有什么建议吗?预先感谢。
添加
Pouyan的带有预任务的想法以相同的方式工作。
- name:
hosts: dc1
serial: 2
pre_tasks:
- name: Get time and date
set_fact:
date_time: "{{datetime.iso8601_basic_short}}"
roles:
main.yml:
msg: "{{datetime.iso8601_basic_short}}, {{date_time}}"
结果:
ok: [server1] => {"msg": "20190717T114204, 20190717T114204"}
ok: [server2] => {"msg": "20190717T114204, 20190717T114204"}
......
ok: [server3] => {"msg": "20190717T114208, 20190717T114208"}
ok: [server4] => {"msg": "20190717T114207, 20190717T114207"}
答案 0 :(得分:0)
您是否尝试过将其设置为剧本中的pre_task变量。就像这样:
branch_filter