Ansible 核心類


核心類說明

 

 

InventoryManager類

用來管理主機和主機組相關的資源設備信息

主要方法

##ansible_version == 2.4.1
from ansible.parsing.dataloader import DataLoader
from ansible.vars.manager import VariableManager    #這里用的ansbile 2.4
from ansible.inventory.manager import InventoryManager  #這里用的ansible 2.4

loader = DataLoader()   #實例化對象

#這里只允許兩個參數,loader和sourcesloader 用來表示用什么方式去讀取配置文件,此時需要DataLoader類,用來讀取yaml配置文件信息(hosts 文件 )
Inv = InventoryManager(loader=loader,sources=['/etc/ansible/hosts'])      #source 表示從哪個地方讀取,需要傳入一個列表

print (Inv.get_groups_dict(),Inv.get_hosts(),Inv.get_host(hostname='ip'))

Inv.add_host(host='ip',port=22,group='test')    #注意,這里的group的值必須在配置文件里存在,add_host為添加主機方法

 

VariableManager類

 變量讀取,依賴InventoryManager類

In[3]: loader = DataLoader()
In[4]: inventory = InventoryManager(loader=loader, sources=['/etc/ansible/hosts'])
In[5]: variable_manager = VariableManager(loader=loader, inventory=inventory)
In[6]: variable_manager.get_vars()       #查看變量方法
Out[6]: 
{'ansible_playbook_python': '/usr/bin/python3.5',
 'groups': {'all': ['10.10.10.11'], 'ungrouped': [], 'test': ['10.10.10.11']},
 'omit': '__omit_place_holder__bbc5830fdb5d9566fd106c5cf1c88c24322ccb1e',
 'playbook_dir': '/root/PycharmProjects/MyDevOps'}

#獲取變量相關信息
In[7]: host = inventory.get_host(hostname='10.10.10.11')
In[8]: variable_manager.get_vars(host=host)
Out[8]: 
{'group_names': ['test'],
 'inventory_dir': '/etc/ansible',
 'inventory_file': '/etc/ansible/hosts',
 'omit': '__omit_place_holder__bbc5830fdb5d9566fd106c5cf1c88c24322ccb1e',
 'inventory_hostname': '10.10.10.11',
 'inventory_hostname_short': '10',
 'ansible_playbook_python': '/usr/bin/python3.5',
 'ansible_ssh_pass': 'hzcf@2017',
 'groups': {'all': ['10.10.10.11'], 'ungrouped': [], 'test': ['10.10.10.11']},
 'playbook_dir': '/root/PycharmProjects/MyDevOps'}


#設置主機變量
In[9]: variable_manager.set_host_variable(host=host,varname='ansible_ssh_pass',value='123456')  #設置變量
In[10]: variable_manager.get_vars(host=host)
Out[10]: 
{'group_names': ['test'],
 'inventory_dir': '/etc/ansible',
 'inventory_file': '/etc/ansible/hosts',
 'omit': '__omit_place_holder__bbc5830fdb5d9566fd106c5cf1c88c24322ccb1e',
 'inventory_hostname': '10.10.10.11',
 'inventory_hostname_short': '10',
 'ansible_playbook_python': '/usr/bin/python3.5',
 'ansible_ssh_pass': '123456',
 'groups': {'all': ['10.10.10.11'], 'ungrouped': [], 'test': ['10.10.10.11']},
 'playbook_dir': '/root/PycharmProjects/MyDevOps'}

#擴展變量
In[11]: variable_manager.__dict__          #查看所有方法
Out[11]: 
{'_inventory': <ansible.inventory.manager.InventoryManager at 0x7ff782109d68>,
 '_omit_token': '__omit_place_holder__bbc5830fdb5d9566fd106c5cf1c88c24322ccb1e',
 '_group_vars_files': defaultdict(<class 'dict'>, {}),
 '_fact_cache': <ansible.plugins.cache.FactCache at 0x7ff78210ed30>,
 '_loader': <ansible.parsing.dataloader.DataLoader at 0x7ff782109320>,
 '_hostvars': None,
 '_nonpersistent_fact_cache': defaultdict(<class 'dict'>, {}),
 '_host_vars_files': defaultdict(<class 'dict'>, {}),
 '_options_vars': defaultdict(<class 'dict'>, {}),
 '_vars_cache': defaultdict(<class 'dict'>, {'10.10.10.11': {'ansible_ssh_pass': '123456'}}),
 '_extra_vars': defaultdict(<class 'dict'>, {})}
In[
12]: variable_manager.extra_vars={'myweb':'test','myname':'aaaaa'}      #添加(傳入)變量 In[13]: variable_manager.get_vars(host=host)                    #獲取所有的變量信息 Out[13]: {'group_names': ['test'], 'omit': '__omit_place_holder__bbc5830fdb5d9566fd106c5cf1c88c24322ccb1e', 'ansible_ssh_pass': '123456', 'groups': {'all': ['10.10.10.11'], 'ungrouped': [], 'test': ['10.10.10.11']}, 'inventory_dir': '/etc/ansible', 'inventory_file': '/etc/ansible/hosts', 'myname': 'aaaaa', 'inventory_hostname': '10.10.10.11', 'inventory_hostname_short': '10', 'myweb': 'test', 'ansible_playbook_python': '/usr/bin/python3.5', 'playbook_dir': '/root/PycharmProjects/MyDevOps'}

 


免責聲明!

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



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