Ansible set_fact 本地并在远程主机上使用

use*_*394 4 ansible ansible-facts ansible-inventory

我正在尝试获取本地版本并将其用作其他远程主机中的 var

在ansible中使用set_fact模块

在本地

    - name: Set code version
      shell:  wget -O - -o /dev/null wget -O - -o /dev/null https://repo1.maven.org/maven2/org/brutusin/wava/maven-metadata.xml | grep -Po '(?<=<version>)([0-9\.]+(-SNAPSHOT)?)' | sort --version-sort -r| head -n 1
      register: shell_output

    - name: set version
      set_fact:
        code_version: "{{ shell_output.stdout }}"
        debug: var=code_version
        run_once: true
Run Code Online (Sandbox Code Playgroud)

远程操作

    - name: test code version
      debug:
        msg: code version is " {{ code_version }} "
Run Code Online (Sandbox Code Playgroud)

出现以下错误:The task includes an option with an undefined variable. The error was: 'code_version'

如果有什么方法可以实现这一点?

Ala*_*aye 5

您可以使用变量访问其他主机中定义的变量hostvars

例如:

- debug:
    msg: "{{ hostvars['localhost']['code_version'] }}"
Run Code Online (Sandbox Code Playgroud)