将变量传递给AWX或Ansible Tower中的连续剧

时间:2019-07-17 06:53:10

标签: ansible ansible-tower ansible-awx

我正在尝试将具有当前日期和时间的变量传递给剧本。目标是在所有受影响的主机上创建一个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"}  

1 个答案:

答案 0 :(得分:0)

您是否尝试过将其设置为剧本中的pre_task变量。就像这样:

branch_filter