【问题标题】:Ansible Custom Module: Are print statements possible?Ansible 自定义模块:是否可以打印语句?
【发布时间】:2023-02-14 12:13:22
【问题描述】:

我有一个 Ansible 自定义模块,用于在我的剧本中执行特定任务。我想调试这个模块中的特定变量。

有没有办法在这个自定义模块中打印任何东西?在下面的示例中,打印“Hello”。

请检查自定义模块中的以下 sn-p。我将 jobid 作为参数传递给此模块。

class dcsjob():
  def __init__(self, arglist):
    self.jobid = self.arglist[0]

  def checkandwaitforjob(self):
      print("Hello")

def run_module():
  module = AnsibleModule(
        argument_spec=module_args,
        supports_check_mode=True
  )
  dcsjobobj = dcsjob([module.params['jobid']])
  output = dcsjobobj.checkandwaitforjob()

【问题讨论】:

  • 当然。 Developing modules- Creating a module 的示例中描述了该用例。
  • 我检查过这个。你能分享一个简单的打印信息的例子吗?
  • 我检查过这个。“那是什么意思?关于给出的例子有什么问题吗?因为根据“我有一个 Ansible 自定义模块......我想调试这个模块中的特定变量。“您已经有一个示例模块,您可以分享它并展示您对哪些变量感兴趣吗?
  • 您可能也对Debugging modules - Simple debugging感兴趣。
  • 我已经用我的自定义模块 sn-p 编辑了上面的问题。请检查并提出建议。

标签: ansible


【解决方案1】:

给出来自 Developing modules- Creating a module 的示例模块并进行了修改

library/print.py

#!/usr/bin/python

from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
from ansible.module_utils.basic import AnsibleModule

def run_module():

    module_args = dict(
        jobid=dict(type='str', required=True),
        verbose=dict(type='bool', required=False, default=False)
    )

    result = dict(
        changed=False,
        jobid=''
    )

    module = AnsibleModule(
        argument_spec=module_args,
        supports_check_mode=False
    )

    result['jobid'] = module.params['jobid']

    if module.params['verbose']:
        result['print'] = 'Hello'

    module.exit_json(**result)

def main():
    run_module()

if __name__ == '__main__':
    main()

并从示例剧本中调用print.yml

---
- hosts: localhost
  become: false
  gather_facts: false

  vars:

    ID: 123

  tasks:

  - name: Run non-verbose
    print:
      jobid: "{{ ID }}"
      verbose: false
    register: result

  - name: Show result
    debug:
      msg: "{{ result }}"

  - name: Run verbose
    print:
      jobid: "{{ ID }}"
      verbose: true
    register: result

  - name: Show verbose result
    debug:
      msg: "{{ result }}"

它将导致输出

TASK [Run non-verbose] **********
ok: [localhost]

TASK [Show result] **************
ok: [localhost] =>
  msg:
    changed: false
    failed: false
    jobid: '123'

TASK [Run verbose] **************
ok: [localhost]

TASK [Show verbose result] ******
ok: [localhost] =>
  msg:
    changed: false
    failed: false
    jobid: '123'
    print: Hello

verbose模式下打印jobidHello。这也可以与check_mode一起使用。

进一步的文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    • 1970-01-01
    • 2021-06-27
    • 2020-02-20
    相关资源
    最近更新 更多