收藏本站 收藏本站
積木網首頁 - 軟件測試 - 常用手冊 - 站長工具 - 技術社區
首頁 > python > 正文

首頁 - PHP - 數據庫 - 操作系統 - 游戲開發 - JS - Android - MySql - Redis - MongoDB - Win8 - Shell編程 - DOS命令 - jQuery - CSS樣式 - Python - Perl

Access - Oracle - DB2 - SQLServer - MsSql2008 - MsSql2005 - Sqlite - PostgreSQL - node.js - extjs - JavaScript vbs - Powershell - Ruby

ansible作為python模塊庫使用的方法實例

前言

ansible是新出現的自動化運維工具,基于Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。ansible是基于模塊工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所運行的模塊,ansible只是提供一種框架。

主要包括:

(1)、連接插件connection plugins:負責和被監控端實現通信;

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

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

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

(5)、playbook:劇本執行多個任務時,非必需可以讓節點一次性運行多個任務。

Asible是運維工具中算是非常好的利器,我個人比較喜歡,可以根據需求靈活配置yml文件來實現不同的業務需求,因為不需要安裝客戶端,上手還是非常容易的,在某些情況下你可能需要將ansible作為python的一個庫組件寫入到自己的腳本中,今天的腳本腳本就將展示下ansible如何跟python腳本結合,也就是如何在python腳本中使用ansible,我們逐步展開。

先看第一個例子:

#!/usr/bin/python 
import ansible.runner
import ansible.playbook
import ansible.inventory
from ansible import callbacks
from ansible import utils
import json
 
# the fastest way to set up the inventory
 
# hosts list
hosts = ["10.11.12.66"]
# set up the inventory, if no group is defined then 'all' group is used by default
example_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=(',', ': '))

這個例子展示我們如何在python腳本中運行如何通過ansible運行系統命令,我們接下來看第二個例子,跟我們的yml文件對接。

簡單的yml文件內容如下:

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

調用playbook的python腳本如下:

#!/usr/bin/python 
import ansible.runner
import ansible.playbook
import ansible.inventory
from ansible import callbacks
from ansible import utils
import 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 playbook
example_host.set_variable( 'var', 'foo')
 
## secondly set up the group where the host(s) has to be added
example_group = ansible.inventory.group.Group(
 name = 'sample_group_name'
 )
example_group.add_host(example_host)
 
## the last step is set up the invetory itself
example_inventory = ansible.inventory.Inventory()
example_inventory.add_group(example_group)
example_inventory.subset('sample_group_name')
 
# setting callbacks
stats = 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" file
pb = ansible.playbook.PlayBook(
 playbook = "test.yml",
 stats = stats,
 callbacks = playbook_cb,
 runner_callbacks = runner_cb,
 inventory = example_inventory,
 check=True
 )
 
# running the playbook
pr = pb.run() 
 
# print the summary of results for each host
print json.dumps(pr, sort_keys=True, indent=4, separators=(',', ': '))

總結

以上就是為大家展示的2個小例子希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

python實現下載整個ftp目錄的方法
前言最近因為業務需求,就寫了這個腳本,腳本完成的任務是從FTP上下載一個目錄,大家都知道從FTP上下載一個文件可用用get命令,下載多個文件可以

詳解使用pymysql在python中對mysql的增刪改查操作(綜合)
這一次將使用pymysql來進行一次對MySQL的增刪改查的全部操作,相當于對前五次的總結:先查閱數據庫:現在編寫源碼進行增刪改查操作,源碼為:#!/usr/b

python:socket傳輸大文件示例
文件可以傳輸,但是對比傳輸前后的文件:socket_test.txt,末尾有一些不一致服務端代碼:#!/usr/bin/python#-*-coding:utf-8-*-importsysreload(sys)sys.setdefaultencoding("utf

本周排行

更新排行

強悍的草根IT技術社區,這里應該有您想要的! 友情鏈接:b2b電子商務
Copyright © 2010 Gimoo.Net. All Rights Rreserved  京ICP備05050695號
手游棋牌游戏运营
二人麻将在线玩 幸运28pc最快开奖结果 幸运飞艇六码二期精准计划 竞彩单关套利 电子游戏平台 双色球复式投注金额对照表 江西时时计划 新时时彩开奖将结果 现金棋牌大全水浒传 捕鱼达人2无限金币破解版 缅甸龙虎和的规律技巧 pk10官网开奖结果 北京pk赛车开奖app 分分快三大小单双计划 福彩欢乐生肖怎么玩 北京赛车6码如何倍投方案