0

我是 ansible 的新手,我正在编写一个小剧本,它必须从目标主机收集事实值并将其用作剧本中的变量。有人可以帮我怎么做。

---
- hosts: all
  gather_facts: True
  become: true
  become_method: sudo
  become_user: root
  vars:
    BUILD_PATH: /opt/services/dev


  pre_tasks:
   - setup:
      filter: ansible_env
   - set_fact:
       tag: "{{ ansible_env.DATA_AGGREGATOR_ENV }}"
   - debug: var=ENV

  tasks:
    - name: Copy to Build to DATA
      shell: cp -pr {{ BUILD_PATH }} {{ ENV }}

注意:DATA_AGGREGATOR_ENV 是在所有服务器中定义的环境变量,值因服务器而异。

4

1 回答 1

0

您设置了变量tag,但您使用了变量ENV

ENV如果要使用变量,则必须设置ENV变量。

- set_fact:
    ENV: "{{ ansible_env.DATA_AGG_ENV }}"

或者tag,如果您设置了变量,则必须使用该tag变量。

    shell: cp -pr {{ BUILD_PATH }} {{ tag }}

顺便说一句:该filter行缺少空格。

于 2017-09-13T08:15:09.833 回答