如何在ansible中从外部命令设置变量



作为可行剧本的一部分,我正在脚本操作的机器上编写日志文件。由于ansible文件位于git存储库中,因此知道在运行期间签出的是哪个版本是相关的。现在我在命令行上添加

--extra-vars "git_version=$(git rev-parse --short HEAD)" 

这给了我想要使用的信息,但这也意味着这必须在剧本的任何运行中手动添加。我尝试使用shell:命令作为任务,

- name: Read git commit  
shell: /usr/bin/git rev-parse --short HEAD
register: git_version

,但这当然失败了,因为它是在客户端上执行的,而不是在服务器上。那么,如何在服务器上运行git命令(或任何其他命令)来将信息存储在一个可见变量中呢?

delegate_to: localhostrun_once: true就是你要找的。例如,

- hosts: all
tasks:
- command: git rev-parse --short HEAD
register: git_version
delegate_to: localhost
run_once: true
- debug:
var: git_version.stdout
run_once: true

:

  • 控制任务运行的位置:委托和本地操作

  • 使用run_once在单机上运行

注意:"…使用run_once,结果将应用于所有主机。">因此,在第一个任务中注册的变量git_version将对剧中的所有主机可用。

相关内容

  • 没有找到相关文章