美文网首页运维日常
将ansibnle官方模板定义成函数

将ansibnle官方模板定义成函数

作者: 大白菜的猪猪 | 来源:发表于2019-11-15 15:01 被阅读0次

将上一篇文章中的ansible官方文档模块定义成函数形式,并实现调用

官方文档解析


源代码


import json

import shutil

from collectionsimport namedtuple

from ansible.parsing.dataloaderimport DataLoader

from ansible.vars.managerimport VariableManager

from ansible.inventory.managerimport InventoryManager

from ansible.playbook.playimport Play

from ansible.executor.task_queue_managerimport TaskQueueManager

from ansible.plugins.callbackimport CallbackBase

import ansible.constantsas C

def adhoc(sources,hosts,module,args):

Options = namedtuple('Options', ['connection','module_path','forks','become','become_method','become_user','check','diff'])

options = Options(connection='local',module_path=['/to/mymodules'],forks=10,become=None,become_method=None,become_user=None,check=False,diff=False)

loader = DataLoader()

passwords =dict(vault_pass='secret')

inventory = InventoryManager(loader=loader,sources=['myansible/hosts'])

variable_manager = VariableManager(loader=loader,inventory=inventory)

play_source =dict(

name ="Ansible Play",

#在哪些主机上执行任务

            hosts ='webservers',

#是否收集主机信息

            gather_facts ='no',

tasks = [

dict(action=dict(module='shell',args='ls'),register='shell_out'),

dict(action=dict(module='debug',args=dict(msg='{{shell_out.stdout}}')))

]

)

play = Play().load(play_source,variable_manager=variable_manager,loader=loader)

tqm =None

    try:

tqm = TaskQueueManager(

inventory=inventory,

variable_manager=variable_manager,

loader=loader,

options=options,

passwords=passwords,

)

result = tqm.run(play)

finally:

if tqmis not None:

tqm.cleanup()

shutil.rmtree(C.DEFAULT_LOCAL_TMP,True)

if __name__ =='__main__':

adhoc(sources=['myansible/hosts'],hosts='webservers',module='shell',args='id root')


函数调用结果


python3 adhoc2.py

PLAY [Ansible Play] ************************************************************

TASK [shell] *******************************************************************

changed: [node6]

changed: [node5]

TASK [debug] *******************************************************************

ok: [node5] => {

    "msg": "adhoc2.py\nadhoc.py\nmyansible\nyuanzu.py"

}

ok: [node6] => {

    "msg": "adhoc2.py\nadhoc.py\nmyansible\nyuanzu.py"

}


将hosts改为dbservers

更改点:

hosts = 'dbservers',


if __name__ == '__main__':

    adhoc(sources=['myansible/hosts'],hosts='dbservers',module='shell', args='id root')


python3 adhoc2.py

PLAY [Ansible Play] ************************************************************

TASK [shell] *******************************************************************

changed: [node4]

TASK [debug] *******************************************************************

ok: [node4] => {

    "msg": "adhoc2.py\nadhoc.py\nmyansible\nyuanzu.py"

}


以后调用只需要改主机组和对应的模块即可!!!

相关文章

  • 将ansibnle官方模板定义成函数

    将上一篇文章中的ansible官方文档模块定义成函数形式,并实现调用 官方文档解析 源代码 import json...

  • return

    定义 return,从字面意思来看就是返回,官方定义return语句将终止当前函数并返回当前函数的值。一个函数被执...

  • Django自定义模板函数

    模板函数是使用于模板文件的处理函数,模板函数的使用方式是{% 模板函数 %} 1. 创建自定义函数文件夹 想要使用...

  • C++模板编程/泛型编程

    模板分类 模板分为函数模板与类模板两类。 函数模板 模板声明 模板定义 例如 函数模板实参类型不一致问题 参数推导...

  • C++学习第18课,高级编程:函数模板

    1 函数模板的定义 template<类型参数表> 返回值 函数名(数据参数表) { 函数模板定义体; } 例...

  • GeekBand C++第六周学习感悟

    函数模板笔记 模板是通用的函数描述,也就是说它们使用泛型来定义函数,其中的泛型可用具体的类型替换。通过将类型作为参...

  • 14/15

    约束模板友元 模板类的外边定义一个模板函数,在模板类中将模板函数具体化为模板类的友元函数 非约束模板友元 模板类中...

  • 冒泡

    首先来声明个swap模板函数 //定义模板函数 template void swap(T...

  • 模板与泛型 —— using 定义模板别名

    一、类的成员函数模板 二、using 定义模板别名 一、类的成员函数模板 普通类和模板类,其成员函数都可以是模板函...

  • STL与泛型编程(geekband)

    1.定义模板 1.1函数模板template<模板参数列表>返回值 函数名(形参列表) 实例化函数模板通过形参列表...

网友评论

    本文标题:将ansibnle官方模板定义成函数

    本文链接:https://www.haomeiwen.com/subject/fdhsictx.html