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

How to set multiple variables to be used in an ansible task using local commands

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

- 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 self-contained/managed的方法?

Q: "What is the best way to define the value of all those variables? I don't want to have to create one task to set (register) each variable via the command module."

A​​:创建一个任务来设置所有变量。使命令 return 所有变量 ['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 and dict