有没有办法从 Ansible playbook 调用 Python 脚本,并将输出作为变量再次传递给 Ansible playbook 以执行下一个任务?

问题描述 投票:0回答:2

我们正在尝试将防火墙事实(包含 1000 多个策略)的返回输出(JSON)传递给 Python 脚本,然后 Python 脚本将处理该输出(例如修改正确的防火墙策略)并将输出作为变量传递给 Ansible playbook再次返回执行下一个任务。

我们已经测试了此方法将 CSV 文件转换为 Excel。但不确定变量。

python ansible
2个回答
1
投票

问:“有没有办法从 Ansible playbook 调用 Python 脚本,并将输出作为变量再次传递给 Ansible playbook 以执行下一个任务?

是的,当然。

由于几乎没有任何信息,关于您想要实现的目标的进一步描述,根本没有任何关于“脚本”的信息等,因此推荐的方法是开发模块并遵循创建模块的示例。

通过这样做,您可以简单快速地进入在剧本中验证模块代码

的步骤
- name: Test Python script
  hosts: localhost

  vars:

    input: "TEST"

  tasks:

  - name: Run Python script
    the_script:
      name: "{{ input }}"
    register: output

  - name: Show output
    debug:
      msg: '{{ output }}'

产生

的输出
TASK [Show output] ******
ok: [localhost]
  msg: TEST

更多文档

类似问答


0
投票

我认为实现此目的的一种方法是使用“register”获取输出,然后将其存储到本地文件中。 之后让 python 脚本读取文件并从那里获取信息并将其存储到变量中。

 - name: task that will create the output
   ...............
   register: foo_output

 - name: take the output into a file
   copy: 
    content: "{{ foo_output }}"
    dest: /path/to/destination/file

我希望这对您有用,请告诉我进展如何。

© www.soinside.com 2019 - 2024. All rights reserved.