我如何在Ansible任务中注册python变量

时间:2019-10-15 19:16:17

标签: python json ansible

我正在尝试从python脚本响应中提取变量,基本上我有一个执行python脚本的任务,我需要获取该响应的变量,此python脚本解析json并将响应放入不同的变量中

(((python脚本)

import json


with open('dd.json') as f:
 data = json.load(f)




for item in data['service-nat-pool-information'][0]['sfw-per-service-set-nat-pool']:  
   ifname = [b['data'] for b in item['interface-name']]
   for q in item['service-nat-pool']:
    name = [a['data'] for a in q['pool-name']]
    rang = [n['data'] for n in q['pool-address-range-list'][0]['pool-address-range']] #linea agregada de stack
  # ports = item['pool-port-range'][0]['data']
  # use= item['pool-ports-in-use'][0]['data']
    block= [j['data'] for j in q['effective-port-blocks']]
    mblock= [m['data'] for m in q['effective-ports']]
    maxp =[d['data'] for d in q['port-block-efficiency']]
    print("|if-name",ifname,"|name:",name,"|ip-range:",rang,"|Effective-port-blocks:",block[0],"|Effective-port:",mblock[0],"|Port-Block-Efficiency:",maxp[0])

可播放的剧本

---
- name: Parse
  hosts: localhost
  connection: local
  vars:
      pool: "{{ lookup('file','/etc/ansible/playbook/dd.json') | from_json }}"

  tasks:

   - name: Execute Script
     command: python3.7 parsetry.py

我期望ansible中的任务能够在python脚本中获取变量并将其存储在ansible变量中

1 个答案:

答案 0 :(得分:0)

您必须使用register。如果您修改脚本以输出json,这可能会简化您的工作。

- name: Execute Script
  command: python3.7 parsetry.py
  register: script_run

- name: Degug output
  debug:
    msg: "{{ script_run.stdout | from_json }}"

如果您想在自己的手指下保持完整的python功能,还可以考虑使用custom modulecustom filter转换脚本(如果有必要的话)。

相关问题