Python調用ansible API系列(一)獲取資產信息


你想讓ansible工作首先就需要設置資產信息,那么我們如何通過使用Python調取Ansible的API來獲取資產信息呢?

要提前准備一個hosts文件

獲取組或者主機

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
from collections import namedtuple
# 核心類
# 用於讀取YAML和JSON格式的文件
from ansible.parsing.dataloader import DataLoader
# 用於存儲各類變量信息
from ansible.vars.manager import VariableManager
# 用於導入資產文件
from ansible.inventory.manager import InventoryManager


# InventoryManager類的調用方式
def InventoryManagerStudy():
    dl = DataLoader()
    # loader= 表示是用什么方式來讀取文件  sources=就是資產文件列表,里面可以是相對路徑也可以是絕對路徑
    im = InventoryManager(loader=dl, sources=["hosts"])

    # 獲取指定資產文件中所有的組以及組里面的主機信息,返回的是字典,組名是鍵,主機列表是值
    allGroups = im.get_groups_dict()
    print(allGroups)

    # 獲取指定組的主機列表
    print(im.get_groups_dict().get("test"))

    # 獲取指定主機,這里返回的是host的實例
    host = im.get_host("172.16.48.242")
    print(host)
    # 獲取該主機所有變量
    print(host.get_vars())
    # 獲取該主機所屬的組
    print(host.get_groups())


def main():
    InventoryManagerStudy()

if __name__ == "__main__":
    try:
        main()
    finally:
        sys.exit()

獲取變量

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
from collections import namedtuple
# 核心類
# 用於讀取YAML和JSON格式的文件
from ansible.parsing.dataloader import DataLoader
# 用於存儲各類變量信息
from ansible.vars.manager import VariableManager
# 用於導入資產文件
from ansible.inventory.manager import InventoryManager

# VariableManager類的調用方式
def VariablManagerStudy():
    dl = DataLoader()
    im = InventoryManager(loader=dl, sources=["hosts"])
    vm = VariableManager(loader=dl, inventory=im)

    # 必須要先獲取主機,然后查詢特定主機才能看到某個主機的變量
    host = im.get_host("172.16.48.242")

    # 動態添加變量
    vm.set_host_variable(host=host, varname="AAA", value="aaa")
    # 獲取指定主機的變量
    print(vm.get_vars(host=host))


def main():
    VariablManagerStudy()


if __name__ == "__main__":
    try:
        main()
    finally:
        sys.exit()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM