【问题标题】:How to run ansible and ansible-playbook in python如何在 python 中运行 ansible 和 ansible-playbook
【发布时间】:2016-06-01 18:36:30
【问题描述】:

我正在使用 python 3.4 和 ansible 2.0, 我所有的 ansible 任务都可以从命令行正常工作

这里我正在执行一个简单的任务:

- hosts: all
  tasks:
  - name: Install bind
    yum: state=latest name=bind

我的主机文件是:

S1 ansible_host=server1.jackson.com ansible_user=root ansible_private_key_file=/home/jackson/Documents/ansible/virt_server.pem
S2 ansible_host=server2.jackson.com ansible_user=root ansible_private_key_file=/home/jackson/Documents/ansible/virt_server.pem

我在 youtube 博客上到处搜索,但没有关于 ansible 2.X 的教程 在使用 **ansible.runner** 的教程中到处都是,但在 ansible 2.0 中它不可用。

我只想要一个例子来教我如何定义主机、ansible 配置、任务、变量以及如何执行任务。

此外,我还想知道如何使用 JSON 而不是 .yml 文件,以便我可以从数据库或用户输入中获取配置变量,在一个动态 python 脚本中对所有内容进行排序。

【问题讨论】:

    标签: python python-3.x ansible ansible-playbook ansible-2.x


    【解决方案1】:

    Ansible Docs 为使用 Python API 提供了一个很好的文档,适用于 2.0 和 pre-2.0。见http://docs.ansible.com/ansible/developing_api.html#python-api-2-0

    我确实在使用正确版本的 python 运行正确版本的 ansible 时遇到问题,但是您可以使用 virtualenv 创建一个虚拟环境并使用该环境中的 pip 安装 ansible,然后尝试将 ansible 导入到确保它正常工作。

    在某些情况下可以使用 JSON,但更简单的解决方案是使用脚本将 YAML 更改为 JSON。

    来自http://yamltojson.com/#python

    import yaml
    import json
    
    yml = """
    ---
      foo: bar
    """
    data = yaml.load(yml)
    json = json.dumps(data)
    
    print(json)
    

    【讨论】:

    • 感谢@Theo的帮助
    猜你喜欢
    • 2021-10-14
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    相关资源
    最近更新 更多