我无法传递变量ansible
这是我的python脚本
import csv
import json
data=
file = 'splunkapps.csv'
json_file = 'output_file_name.json'
def read_CSV(file, json_file):
csv_rows = []
with open(file) as csvfile:
reader = csv.DictReader(csvfile)
field = reader.fieldnames
for row in reader:
csv_rows.extend([{field[i]:row[field[i]] for i in range(len(field))}])
convert_write_json(csv_rows, json_file)
def convert_write_json(data, json_file):
with open(json_file, "w") as f:
f.write(json.dumps(data, sort_keys=False, indent=4, separators=(',', ': ')))
read_CSV(file,json_file)
with open('output_file_name.json') as json_file:
data = json.load(json_file)
for p in data:
print('AppName: ' + p['AppName'])
print('Host: ' + p['Host'])
print('SealID: ' + p['SealID'])
print('')
我的Ansible脚本是
Yaml文件:
---
- name: Onboard app
hosts: localhost
gather_facts: false
tasks:
- name:
script: spl.py
register: result
- debug:
msg: "{{ result.stdout_lines }}"
with_items: "{{ modules }}"
- name: print user name and password
shell: |
echo {{ modules['AppName'] }}
echo {{ modules['Host'] }}
我必须使用2.3版本的ansible,目前我正在使用2.7版本的py
Q:“从Py脚本传递变量到Ansible”
A:可以使用lookup,pipe,from_yaml并将脚本的输出分配给变量。例如带有脚本
$ cat my_script
#!/bin/sh
printf 'AppName: my_AppName\n'
printf 'Host: my_Host\n'
printf 'SealID: my_SealID\n'
剧本
- hosts: localhost
vars:
my_var: "{{ lookup('pipe', 'my_script')|from_yaml }}"
tasks:
- debug:
var: my_var
- debug:
msg: "AppName [{{ my_var.AppName }}]"
给予
ok: [localhost] =>
my_var:
AppName: my_AppName
Host: my_Host
SealID: my_SealID
ok: [localhost] =>
msg: AppName [my_AppName]
注意
没有变量modules
。这可能是错误
- debug:
msg: "{{ result.stdout_lines }}"
with_items: "{{ modules }}"
注册的输出应该简单地打印
- debug:
msg: "{{ result.stdout_lines }}"