如何将用户定义的环境变量存储在ansible变量中?

时间:2020-06-20 14:31:21

标签: ansible environment-variables environment

ansible的新手。

我想(从目标主机上)读取用户定义的环境变量,然后在剧本中使用它。

我已经在目标计算机上的.bash_profile中定义了以下变量。

导出ORACLE_PATCH_DIR = / u1 /补丁

以下是剧本的概要。

- hosts: oradb
  gather_facts: true
  vars:
    patch_dir:  $ORACLE_PATCH_DIR ??? <--- Don't know how to handle this
  tasks:
    - name: Printing Oracle Patch Directory location      
  debug: 
    var: {{ patch_dir }}

我为含糊不清表示歉意。

谢谢。

FR

2 个答案:

答案 0 :(得分:0)

要访问目标主机的环境变量,可以使用ansible_env,如下所示:

gather_facts: true
vars:
  patch_dir: "{{ ansible_env.ORACLE_PATCH_DIR }}"

ansible_env:通常由事实收集(M(gather_facts))填充,变量的值取决于执行收集操作的用户。如果您更改remote_user / become_user,则可能会为这些变量使用错误的值。

另请参考how to access environment variables

答案 1 :(得分:0)

关于如何使我能够读取所有环境变量的任何建议?

是的,提供该文件并回显该变量

tasks:
- shell: |
    . /home/oracob/.bash_profile
    echo $ORACLE_PATCH_DIR
  register: patch_dir_cmd
- set_fact:
    ORACLE_PATCH_DIR: '{{ patch_dir_cmd.stdout }}' 
相关问题