У меня есть скрипт python внутри ansible playbook:
---
- hosts: localhost
become: yes
become_method: sudo
become_user: root
gather_facts: false
tasks:
- name: execute script
command: ./qwe.py
register: python_output
- debug:
var: python_output.stdout_lines
qwe.py:
#!/usr/bin/python
import subprocess
import os
import json
import ssl
import platform
from requests import get
#import psutil
data = subprocess.Popen(['uname', '-r'], stdout = subprocess.PIPE)
output = str(data.communicate())
a = output[2:len(output)-10]
if "3.10.0-1062.9.1.el7.x86_64" == a:
print(json.dumps({"status":"pass", "kernelVersion":a}))
else:
print(json.dumps({"status":"fail", "kernelVersion":a}))
b = ssl.OPENSSL_VERSION
if "OpenSSL 1.0.2k-fips 26 Jan 2017" == b:
print(json.dumps({ "status":"pass","OpenSSLVersion":b}))
else:
print(json.dumps({"status":"fail", "OpenSSLVersion":b}))
Мне нужно передать этот список значений, например: «OpenSSL 1.0.2k-fips 26 января 2017 года», «3.10.0-1062.9.1.el7.x86_64» извне скрипта вместо того, чтобы его кодировать. Таким образом, У меня есть 15 значений, которые мне нужно передать.
Как мы можем этого добиться? Спасибо за вашу помощь и время !!
У вас много возможностей.
.py
файла с вашим vars / config и импортируйте его.command: a.py {{ some_ansible_var | to_json|b64encode }}
.environment
)Поскольку я уверен, что это всего лишь простой пример, я не уверен, какая идея лучше всего подойдет для вашего случая.
Имейте в виду, что если все ваше программное обеспечение установлено через систему управления пакетами дистрибутива, вы, вероятно, сможете получить все, что вам нужно, просто из package_facts модуль. Здесь вы можете заново изобретать колесо.