通过 Ansible Playbook 调用 Python 脚本并在后台运行 - 通过 Ansible Tower

通过 Ansible Playbook 调用 Python 脚本并在后台运行 - 通过 Ansible Tower

在这里,我尝试通过 ansible playbook 调用一个 python 脚本。当我运行包含下面提到的代码的 playbook 时,它成功调用了该脚本。但是 ansible 脚本会继续运行,直到 Python 脚本完成其所有任务。

- hosts: localhost
  gather_facts: false
  vars:
    username: 'User'
    password: '1234@345'
  tasks:

    - name: Invoking Python script
      script: data_pull_push.py 
      args:
        executable: python

Python 脚本“data_pull_push.py”正在从一个 Url 获取数据并将其发布到另一个 Url。它包含太多数据。因此检索和发布所有数据需要很长时间。所以我希望 Ansible 剧本触发其中的 Python 脚本并关闭剧本。Python 脚本应该在后台运行。

这个 Ansible playbook 和 python 脚本保存在 git 中,并将在 Ansible 塔中运行 playbook。我不知道如何在 Ansible 中使用它。如果有人知道,请告诉我。

答案1

你应该使用异步操作和轮询Ansible 功能。

所以你的任务应该是这样的:

- name: Long async task
  command: python data_pull_push.py
  async: <timeout value>
  poll: 0

答案2

使用您选择的作业管理器实用程序(如 atd、cron、supervisord 或 systemd)创建后台作业。仅举几个例子,根据操作系统的不同,还存在许多其他服务管理器。

其中,至少 cron、supervisord 和 systemd 有包装 Ansible 模块。即使不存在,您也可以使用通用命令调用 systemd-run 或其他任何模块。

相关内容