ansible为变量分配一个事实值
我是一个新手,我正在编写一个小型手册,它必须从目标主机收集事实值,并将其用作播放中的变量。有人可以帮助我如何做到这一点。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是在所有的服务器中定义的环境变量和值而变化从一个服务器到另一个。
您设置变量tag
,但您使用变量ENV
。
如果要使用ENV
变量,则必须设置ENV
变量。
- set_fact:
ENV: "{{ ansible_env.DATA_AGG_ENV }}"
或者你必须使用tag
变量,如果你已经设置了tag
变量。
shell: cp -pr {{ BUILD_PATH }} {{ tag }}
BTW:在filter
线缺乏空间。
感谢您的回复我试图与上述变化,我得到这个错误失败“失败=> {!”“:真正的‘味精’:”外地‘ARGS’的值无效,这似乎包含一个变量,是不确定的。错误是:“字典对象”没有属性“DATA_AGGREGATOR_ENV” \ n \ n错误似乎一直在“/u1/jenkins/workspace/Deploy_DAGG_Services/ecom-deploy/test.yml”:线15,第6列,但\ n \ n此错误行似乎是:\ n \ n filter:ansible_env \ n - set_fact:\ n^here \ n“}” – suru1432002
DATA_AGGREGATOR_ENV!= DATA_AGG_ENV – ceving
巨峰遗憾实际环境变量是DATA_AGGREGATOR_ENV。这是完整的输出。的ansible_env “ ”ansible_facts“:{ ”ansible_env“:{ ”DAGG_HOME“: ”/选择/服务的/ dev/ECOM-数据聚合器“, ”DATA_AGGREGATOR_ENV“: ”舞台“, ”DPS_ENV“:” 舞台“, ”PWD“:”/ home/ansible“, ”SHELL“:”/ bin/bash“, ”TERM“:”xterm-256color“, ”USER“:”ansible“, ”_“ :“/ bin/sh” } }, “changed”:false }“ – suru1432002
问题是什么? –
您可以直接使用由设置任务 – papey
创建的var,因为@papey表示您可以直接在剧本中使用事实,只需“{{ansible_env.DATA_AGG_ENV}}”当然“gather_facts”应该为true,这是默认的 – itiic