如何使用本地命令设置要在 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。
我有一个部署手册,我想查看正在部署的工件的一些信息。为此,我创建了以下任务
- 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。