Проблема была в том, что я не выполнял сборник пьес. Я выполнял пользовательский скрипт инвентаризации 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)
Вот изображение переменных
Тогда вот изображение сценария.
Но это не сработало. Вот код, который работал.
Проблема заключалась в том, что когда вы запрашиваете переменную окружения в python, если это словарь, он будет возвращаться с одинарными кавычками, и вам придется преобразовать его в двойные кавычки и json.loads, чтобы он загружался как словарь.
С этим решено несколько проблем. Я надеюсь, что это поможет другим, которым нужно устранять неполадки в Ansible с Python.