色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

如何使用Ansible2的API做python開發(fā)

如何使用Ansible2的API做python開發(fā)?

ansible 和 SaltStack 都提供了 Python 直接調(diào)用的API, 這方便了 Pythoner 對(duì)這些軟件進(jìn)行二次開發(fā)和整合, 此功能著實(shí)方便了不少, 比起 Python 代碼中調(diào)用 shell 也略顯專業(yè)!

然而 Ansible 在2.0版本后重構(gòu)了大部分的代碼邏輯, 啟用了2.0版本之前的 Runner 和 Playbook 類, 使得廣大同學(xué)之前的代碼運(yùn)行錯(cuò)誤. 擇日不如撞日, 今天中午對(duì)照 官方的文檔 , 結(jié)合源代碼, 對(duì)2.0版本之后的 Python API 做了下探究

Adhoc

adhoc 其實(shí)就是執(zhí)行 Ansible 模塊, 通過 adhoc 我們可以方便快捷的完成一些臨時(shí)的運(yùn)維操作.

2.0 之前的調(diào)用

import ansible.runner

import json

runner = ansible.runner.Runner(

module_name='ping', # 模塊名

module_args='', # 模塊參數(shù)

pattern='all', # 目標(biāo)機(jī)器的pattern

forks=10

)

datastructure = runner.run()

data = json.dumps(datastructure,indent=4)

當(dāng)然這里會(huì)去加載默認(rèn)的 inventory

如果不想使用 inventory 文件或者想使用動(dòng)態(tài)的 inventory, 則可以使用 host_list 參數(shù)代替

import ansible.runner

import json

runner = ansible.runner.Runner(

host_list=["10.10.0.1"], # 這里如果明確指定主機(jī)需要傳遞一個(gè)列表, 或者指定動(dòng)態(tài)inventory腳本

module_name='ping', # 模塊名

module_args='', # 模塊參數(shù)

extra_vars={"ansible_ssh_user":"root","ansible_ssh_pass":"xx"},

forks=10

)

datastructure = runner.run()

data = json.dumps(datastructure,indent=4)

2.0 之后的調(diào)用

import json

from ansible.parsing.dataloader import DataLoader

from ansible.vars import VariableManager

from ansible.inventory import Inventory

from ansible.playbook.play import Play

from ansible.executor.task_queue_manager import TaskQueueManager

from ansible.executor.playbook_executor import PlaybookExecutor

loader = DataLoader() # 用來加載解析yaml文件或JSON內(nèi)容,并且支持vault的解密

variable_manager = VariableManager() # 管理變量的類,包括主機(jī),組,擴(kuò)展等變量,之前版本是在 inventory 中的

inventory = Inventory(loader=loader, variable_manager=variable_manager)

variable_manager.set_inventory(inventory) # 根據(jù) inventory 加載對(duì)應(yīng)變量

class Options(object):

'''

這是一個(gè)公共的類,因?yàn)閍d-hoc和playbook都需要一個(gè)options參數(shù)

并且所需要擁有不同的屬性,但是大部分屬性都可以返回None或False

因此用這樣的一個(gè)類來省去初始化大一堆的空值的屬性