如何使用本地命令设置在ansible任务中使用的多个变量

我有一个部署手册,我想查看正在部署的工件的一些信息。为此,我创建了以下任务

- name: Print application info
  debug:
    msg: "Version to be deployed is {{ app_version }} built on {{ app_build_date }}. Jar md5 is {{ app_md5 }}"
    verbosity: 1

定义所有这些变量的值的最佳方法是什么?要部署的工件可以在控制节点中本地访问。我不想创建一个任务来通过command模块设置(注册)每个变量。我还研究了本地事实,但是IIUC意味着我需要创建另一个单独的游戏来收集事实,而且解决方案也不是独立的,因为我需要在控制节点中管理/etc/ansible/facts.d中的本地文件在ansible的控制范围之外。

有没有一种方法可以由ansible自己控制/管理?

dandick 回答:如何使用本地命令设置在ansible任务中使用的多个变量

  

Q:“定义所有这些变量的值的最佳方法是什么?我不想创建一个任务来通过命令模块设置(注册)每个变量。”

A:创建一个任务来设置所有变量。使命令在单独的一行上分别返回所有变量['version','build_date','md5'],注册结果并创建字典。例如

- set_fact:
    app: "{{ dict(['version','build_date','md5']|
                  zip(result.stdout_lines)) }}"
- debug:
    msg: "Version {{ app.version }} built {{ app.build_date }} md5 {{ app.md5 }}"

(未经测试)

请参见zip

本文链接:https://www.f2er.com/3032805.html

大家都在问