国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

ansible作為python模塊庫使用的方法實(shí)例

2019-11-25 16:24:01
字體:
供稿:網(wǎng)友

前言

ansible是新出現(xiàn)的自動(dòng)化運(yùn)維工具,基于Python開發(fā),集合了眾多運(yùn)維工具(puppet、cfengine、chef、func、fabric)的優(yōu)點(diǎn),實(shí)現(xiàn)了批量系統(tǒng)配置、批量程序部署、批量運(yùn)行命令等功能。ansible是基于模塊工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所運(yùn)行的模塊,ansible只是提供一種框架。

主要包括:

      (1)、連接插件connection plugins:負(fù)責(zé)和被監(jiān)控端實(shí)現(xiàn)通信;

      (2)、host inventory:指定操作的主機(jī),是一個(gè)配置文件里面定義監(jiān)控的主機(jī);

      (3)、各種模塊核心模塊、command模塊、自定義模塊;

      (4)、借助于插件完成記錄日志郵件等功能;

      (5)、playbook:劇本執(zhí)行多個(gè)任務(wù)時(shí),非必需可以讓節(jié)點(diǎn)一次性運(yùn)行多個(gè)任務(wù)。

Asible是運(yùn)維工具中算是非常好的利器,我個(gè)人比較喜歡,可以根據(jù)需求靈活配置yml文件來實(shí)現(xiàn)不同的業(yè)務(wù)需求,因?yàn)椴恍枰惭b客戶端,上手還是非常容易的,在某些情況下你可能需要將ansible作為python的一個(gè)庫組件寫入到自己的腳本中,今天的腳本腳本就將展示下ansible如何跟python腳本結(jié)合,也就是如何在python腳本中使用ansible,我們逐步展開。

先看第一個(gè)例子:

#!/usr/bin/python import ansible.runnerimport ansible.playbookimport ansible.inventoryfrom ansible import callbacksfrom ansible import utilsimport json # the fastest way to set up the inventory # hosts listhosts = ["10.11.12.66"]# set up the inventory, if no group is defined then 'all' group is used by defaultexample_inventory = ansible.inventory.Inventory(hosts) pm = ansible.runner.Runner( module_name = 'command', module_args = 'uname -a', timeout = 5, inventory = example_inventory, subset = 'all' # name of the hosts group  ) out = pm.run() print json.dumps(out, sort_keys=True, indent=4, separators=(',', ': '))

這個(gè)例子展示我們?nèi)绾卧趐ython腳本中運(yùn)行如何通過ansible運(yùn)行系統(tǒng)命令,我們接下來看第二個(gè)例子,跟我們的yml文件對(duì)接。

簡(jiǎn)單的yml文件內(nèi)容如下:

- hosts: sample_group_name tasks: - name: just an uname command: uname -a

調(diào)用playbook的python腳本如下:

#!/usr/bin/python import ansible.runnerimport ansible.playbookimport ansible.inventoryfrom ansible import callbacksfrom ansible import utilsimport json ### setting up the inventory ## first of all, set up a host (or more)example_host = ansible.inventory.host.Host( name = '10.11.12.66', port = 22 )# with its variables to modify the playbookexample_host.set_variable( 'var', 'foo') ## secondly set up the group where the host(s) has to be addedexample_group = ansible.inventory.group.Group( name = 'sample_group_name' )example_group.add_host(example_host) ## the last step is set up the invetory itselfexample_inventory = ansible.inventory.Inventory()example_inventory.add_group(example_group)example_inventory.subset('sample_group_name') # setting callbacksstats = callbacks.AggregateStats()playbook_cb = callbacks.PlaybookCallbacks(verbose=utils.VERBOSITY)runner_cb = callbacks.PlaybookRunnerCallbacks(stats, verbose=utils.VERBOSITY) # creating the playbook instance to run, based on "test.yml" filepb = ansible.playbook.PlayBook( playbook = "test.yml", stats = stats, callbacks = playbook_cb, runner_callbacks = runner_cb, inventory = example_inventory, check=True ) # running the playbookpr = pb.run()  # print the summary of results for each hostprint json.dumps(pr, sort_keys=True, indent=4, separators=(',', ': '))

總結(jié)

以上就是為大家展示的2個(gè)小例子希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 左权县| 平舆县| 武川县| 深州市| 景泰县| 竹溪县| 石狮市| 嘉祥县| 新野县| 上虞市| 镇宁| 蓝田县| 平阴县| 沙田区| 鱼台县| 都江堰市| 北京市| 嫩江县| 威海市| 光山县| 息烽县| 福建省| 宝清县| 萝北县| 申扎县| 攀枝花市| 丹东市| 满城县| 新平| 龙里县| 三门县| 元朗区| 江阴市| 淮阳县| 荣昌县| 高雄市| 台南市| 华容县| 建瓯市| 洮南市| 新竹市|