构建自定义模块Ansible

构建自定义模块Ansible,ansible,redhat,Ansible,Redhat,我正在尝试为我们的私有云基础设施构建一个定制模块 我遵循了这个文档http://docs.ansible.com/ansible/latest/dev_guide/developing_modules_general.html 我创建了一个my_module.pymodule文件 当我点击ansible playbook playbook/my_module.yml 响应: PLAY [Create, Update, Delete VM] ****************************

我正在尝试为我们的私有云基础设施构建一个定制模块

我遵循了这个文档
http://docs.ansible.com/ansible/latest/dev_guide/developing_modules_general.html

我创建了一个
my_module.py
module文件

当我点击
ansible playbook playbook/my_module.yml

响应:

PLAY [Create, Update, Delete VM] *********************************************************************************************************

TASK [Gathering Facts] ************************************************************************************************************************
ok: [localhost]

TASK [VM create] *************************************************************************************************************************
changed: [localhost]

TASK [dump test output] ***********************************************************************************************************************
ok: [localhost] => {
    "msg": {
        "changed": true,
        "failed": false,
        "message": "goodbye",
        "original_message": "pcp_vm_ansible"
    }
}

PLAY RECAP ************************************************************************************************************************************
localhost                  : ok=3    changed=1    unreachable=0    failed=0  
这意味着它能像预期的那样正常工作

模块.py

from ansible.module_utils.basic import AnsibleModule

def run_module():

    module_args = dict(
        name=dict(type='str', required=True),
        new=dict(type='bool', required=False, default=False)
    )


    result = dict(
        changed=False,
        original_message='',
        message=''
    )

    module = AnsibleModule(
        argument_spec=module_args,
        supports_check_mode=True
    )
    if module.check_mode:
        return result
    result['original_message'] = module.params['name']
    result['message'] = 'goodbye'
    if module.params['new']:
        result['changed'] = True
    if module.params['name'] == 'fail me':
        module.fail_json(msg='You requested this to fail', **result)


    module.exit_json(**result)

def main():
    print("================== Main Called =======================") 
    run_module()

if __name__ == '__main__':
    main()
我正在尝试打印日志,以便使用
print()
甚至
logging
可视化输入数据

print(“============================================================================”)

但是控制台上没有打印任何内容,如“模块必须只输出有效的JSON。顶级返回类型必须是哈希(字典),尽管它们可以嵌套。不支持列表或简单的标量值,尽管它们可以简单地包含在字典中。”

实际上,核心运行时仅通过JSON与模块通信,核心运行时控制标准输出,因此模块中的标准打印语句被抑制。如果您想要或需要执行运行时中的更多信息,那么我建议使用