Ansible Tower - Как получить список переменных среды - PullRequest
0 голосов
/ 11 апреля 2019

В Tower есть много опций для добавления переменных окружения перед выполнением.Я установил некоторые переменные, которые включаются в скрипт инвентаризации Python.Однако скрипт отвечает с ошибкой.Я думаю, что код Python не получает значения или значения не в правильном формате.

Я хотел бы посмотреть, как переменные окружения подвергаются скрипту python.Есть ли способ добавить их в выходные данные отладки в журнале заданий?

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

Проблема была в том, что я не выполнял сборник пьес. Я выполнял пользовательский скрипт инвентаризации Python, и мне нужно было видеть, как Ansible загружал переменные, чтобы можно было выяснить, почему скрипт не загружал переменные. Я добавил код в скрипт python, чтобы отправить мне электронное письмо со списком переменных среды. Вы также можете записать это в файл на диске, но если вы используете tower, вы должны указать расположение папки в настройках администратора -> Задания -> пути для показа. Я решил, что будет проще получить электронное письмо во время тестирования.

import smtplib
import datetime
import time
ts = time.time()
st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
output = ""
output +=('Time Start {} \r\n '.format(st))
for a in os.environ:
output +=('Var: {} Value: {} \r\n'.format(a, os.getenv(a)))
def send_email(addr_from, addr_to, contents):
svr = smtplib.SMTP('smtp.mail.local', 25)

msg = 'Subject: Subject goes here.\n\n{0}'.format(contents)
svr.sendmail(addr_from, addr_to, msg) 
send_email('addr_from@mail.com','addr_to@mail.com',output)

Вот изображение переменных

tower environmental variables

Тогда вот изображение сценария.

bad script

Но это не сработало. Вот код, который работал.

good code

Проблема заключалась в том, что когда вы запрашиваете переменную окружения в python, если это словарь, он будет возвращаться с одинарными кавычками, и вам придется преобразовать его в двойные кавычки и json.loads, чтобы он загружался как словарь.

С этим решено несколько проблем. Я надеюсь, что это поможет другим, которым нужно устранять неполадки в Ansible с Python.

0 голосов
/ 11 апреля 2019

Просто используйте debug вместе с поиском 'env'. Ниже home - переменная окружения.

- name: Show env variable
  debug:
    msg: "{{ lookup('env','HOME') }}"

https://docs.ansible.com/ansible/latest/plugins/lookup/env.html

...