Ansible 模块开发:没有名为 ansible.runner 的模块?

Ansible Module Development: No module named ansible.runner?

我正在尝试在 Ansible 中编写我的第一个模块,它本质上是另一个模块的包装器。这是我的模块:

#!/usr/bin/python
import ansible.runner
import sys

def main():
    module.exit_json(changed=False)

from ansible.module_utils.basic import *
main()

这是它给我的错误(从 'msg' 中删除):

ImportError: No module named ansible.runner

我在 ubuntu 并安装了 ansible with aptitude,版本是 1.9.1 有什么想法吗?

模块本质上必须是独立的。样板文件在 运行 时间被注入(样板文件的文本替换了底部的导入),模块 + 样板文件的组合文本被喷射到远程机器和 运行 那里。因此,你不能从像 运行ner 这样的 ansible 核心导入东西(除非你在远程机器上安装 ansible - 不要那样做)。 "module" 是您必须根据样板文件中定义的内容创建的项目之一。这是我写的示例模块框架:

#! /usr/bin/python

import json

def main():
    module = AnsibleModule(
        argument_spec = dict(
            state     = dict(default='present', choices=['present', 'absent'])
        ),
        supports_check_mode = True
    )

    p = module.params

    changed = False

    state = p['state']

    if not module.check_mode:
        # do stuff
        pass

    #module.fail_json(msg='it broke')

    module.exit_json(changed=changed)

from ansible.module_utils.basic import *
main()

我刚刚检查了我前一段时间写的一个模块,我没有这样的导入行。我唯一的导入是 from ansible.module_utils.basic import *。我在 main:

中自己创建的 module 对象
module = AnsibleModule(
    argument_spec=dict(
        paramA=dict(required=True),
        paramB=dict(required=False),
        paramC=dict(required=False),
    ),
    add_file_common_args=True,
    supports_check_mode=True
)