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