Как сохранить пользовательскую переменную среды в переменной ansible? - PullRequest
1 голос
/ 20 июня 2020

Совершенно новый для ansible.

Я хотел бы прочитать определенную пользователем переменную среды (с целевого хоста) и впоследствии использовать ее в playbook.

Я определил следующая переменная в .bash_profile на целевой машине.

export ORACLE_PATCH_DIR = / u1 / patches

Ниже приведен план пьесы.

- 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 голосов
/ 20 июня 2020

Любые предложения, как я могу сделать ansible, чтобы прочитать все мои переменные env?

Да, источник этого файла и отображение переменной

tasks:
- shell: |
    . /home/oracob/.bash_profile
    echo $ORACLE_PATCH_DIR
  register: patch_dir_cmd
- set_fact:
    ORACLE_PATCH_DIR: '{{ patch_dir_cmd.stdout }}' 
0 голосов
/ 20 июня 2020

Для доступа к переменным среды целевого хоста вы можете использовать ansible_env, как показано ниже:

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

ansible_env: обычно заполняется путем сбора фактов (M (gather_facts)) и значения переменные зависят от пользователя, выполнившего сбор. Если вы измените remote_user / стать_user, вы можете в конечном итоге использовать неправильные значения для этих переменных.

Также см. как получить доступ к переменным среды дополнительная информация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...