Ansible set_fact local и использовать на удаленных хостах - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь получить версию на локальном компьютере и использовать ее как переменную на других удаленных хостах

Использование модуля set_fact в ansible

На локальном

    - 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

На пульте дистанционного управления

    - name: test code version
      debug:
        msg: code version is " {{ code_version }} "

Получение следующей ошибки: The task includes an option with an undefined variable. The error was: 'code_version'

Есть ли способ достичь этого ??

Ответы [ 2 ]

2 голосов
/ 25 сентября 2019

Вы можете получить доступ к переменным, определенным на других хостах, с помощью переменной hostvars.

Например:

- debug:
    msg: "{{ hostvars['localhost']['code_version'] }}"
0 голосов
/ 25 сентября 2019

Вы можете использовать приведенный ниже общий метод, чтобы зарегистрировать переменную для сохранения между играми в Ansible - Разные целевые хосты

На локальном

- 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: Register dummy host with variable
  add_host:
    name: "DUMMY_HOST"
    code_version: "{{ shell_output.stdout }}"

На пульте дистанционного управления

- name: test code version
  debug:
    msg: code version is " {{ hostvars['DUMMY_HOST']['code_version'] }} "

Работает.

...