私は自分自身で(cmdbを更新する)モジュールを作成しようとしていますが、モジュールコードでanacible_factsを使用する方法を探していますか?私のモジュールスクリプトのモジュールコードでanacible_factsを使用する
例は次のとおりです。
#!/usr/bin/python
from ansible.module_utils.basic import *
import json, ast
from servicenow import ServiceNow
from servicenow import Connection
def __get_server_info(table,server_name="", sys_id=""):
if sys_id == "":
return table.fetch_one({'name': server_name})
if server_name == "":
return table.fetch_one({'sys_id': sys_id})
def __update_cmdb_hwinfo(table, sys_id, server_name=""):
return table.update({'sys_id': sys_id,{'hw_ram': 'Here for example i want to put ansible_facts about server ram size'})
def main():
fields = {
"snow_instance": {"required": True, "type": "str"},
"snow_username": {"required": True, "type": "str"},
"snow_password": {"required": True, "type": "str"},
"server_name": {"required": True, "type": "str" },
"api_type": {"default": "JSONv2", "type": "str"},
}
module = AnsibleModule(argument_spec=fields)
snow_connection = Connection.Auth(username=module.params['snow_username'], password=module.params['snow_password'], instance=module.params['snow_instance'], api=module.params['api_typ
e'])
server = ServiceNow.Base(snow_connection)
server.__table__ = 'cmdb_ci_server_list.do'
machine = __get_server_info(server,)
## Define connection object to ServiceNow instance
module.exit_json(changed=False, meta=module.params, msg=machine)
if __name__ == '__main__':
main()
私はモジュールスクリプトでansible_factsを呼び出すために使用する必要がありますどのような変数? (それは可能ですか?)
はあなたの例@Konstantinのためにどうもありがとうございます、しかし、あなたはどのようにして私を助けることができますこの例を正しく使用していますか? 'x = ActionModule() module.exit_json(changed = False、meta = module.params、msg = x)' とエラーが発生しました: 'x = ActionModule()\ nTypeError:__init __()ta"module_stdout": " " msg ":" MODULE FAILURE "、 " rc ":1 または、次のようなサンプルを表示してください。このクラス。私はこの質問を本当に申し訳なく思っていますが、私はPythonの初心者です。前もって感謝します。 –
モジュールの例で私の答えを更新しました。 –
ありがとうございます@コンスタンティンは働いています!あなたは私の日を救った –