自動化運維工具Ansible之Python API

Ansible 的Python API使用起來相當簡單快捷,使用API可以將某些運維操作封裝成一個帶有WEB界面的操作,免去了每次執行某個操作的時候都需要SSH運行Ansible命令。

官方給出的一個簡單示例:

import ansible.runner
    
    runner = ansible.runner.Runner(
       module_name='ping',
       module_args='',
       pattern='web*',
       forks=10
    )
    datastructure = runner.run()

run()方法會返回執行的結果。返回的數據是一個JSON格式的:

    {
        "dark" : {
           "web1.example.com" : "failure message"
        },
        "contacted" : {
           "web2.example.com" : 1
        }
    }

Ansible的API使用起來就這麼方便,先是導入ansible,然後直接調用相應的模塊,賦值相應的模塊參數即可。


    [root@web1 ~]# cat an.py
    #!/usr/bin/env python
    
    import ansible.runner
    
    runner = ansible.runner.Runner(
        module_name='ping',#調用的模塊
        module_args='',#模塊參數
        pattern='webservers',#主機組,可以是正則表達式如web*
        forks=10
    )
    
    data = runner.run()
    print data
    [root@web1 ~]# python an.py 
    {'dark': {}, 'contacted': {'192.168.1.65': {'invocation': {'module_name': 'ping', 'module_args': ''}, u'changed': False, u'ping': u'pong'}}}

默認使用的主機資源文件位置爲/etc/ansible/hosts,也可以指定host_list參數,來指定一個inventory文件的路徑,也可以指定一個動態的inventory腳本。dark裏面是執行失敗的主機列表,contacted是執行操作成功的主機列表。


但是並不是所有的模塊都可以通過API調用的,如template模塊,在ansible1.9或之前的版本中,就無法通過Python API調用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章