Ansible組件之inventory主機清單


靜態inventory

  所有的主機信息都存放在Ansible的inventory組件里面,默認Ansible的inventory是一個靜態的ini格式的文件/etc/ansible/hosts,當然還可以通過ANSIBLE_HOSTS環境變量指定或者運行ansible和ansible-playbook的時候用-i參數臨時設置。

  a、中括號中的名字代表組名,可以根據自己的需求將龐大的主機分成具有標識的組。

  b、主機(host)部分可以使用域名、主機名、IP地址表示;當然使用前兩者時,也需要主機能反解析到相應的IP地址,一般此類配置中多使用IP地址。

定義主機和主機組

[docker]
172.16.1.11
[docker:vars]
ansible_ssh_pass='123456'
[ansible:children]	
docker

inventory內置參數

ansible_ssh_host				# 要連接的主機名
ansible_ssh_port				# 端口號,默認22
ansible_ssh_user				# ssh連接時默認使用的用戶名
ansible_ssh_pass				# ssh連接時的密碼
ansible_sudo_pass				# 使用sudo連接用戶時的密碼
ansible_ssh_private_key_file	# 秘鑰文件如果不想使用ssh-agent管理時可以使用此選項
ansible_shell_type				# shell類型,默認sh
ansible_connection				# SSH連接類型:local、ssh、paramiko在ansible 1.2之前默認paramiko
ansible_python_interpreter		# 用來指定Python解釋器的路徑,同樣可以指定ruby、Perl的路徑

多個inventory列表

  配置支持多個inventory列表

  首先需要在Ansible的配置文件ansible.cfg中hosts的定義改成一個目錄,比如:hostfile = /etc/ansible/inventory,然后在該目錄中放入多個hosts文件。

tree inventory/

inventory/
├── docker
└── hosts

如上所示,不同的文件可以存放不同的主機。

  也可以在ansible命令的時候用-i參數指定該,目錄即可;

ansible -i /etc/ansible/inventory all -a "who"

172.16.1.10 | SUCCESS | rc=0 >>
root     tty1         2018-04-07 02:19
root     pts/0        2018-04-06 18:50 (10.0.0.253)
root     pts/1        2018-04-06 22:30 (172.16.1.5)

172.16.1.11 | SUCCESS | rc=0 >>
root     tty1         2018-04-07 02:21
root     pts/0        2018-04-06 18:50 (10.0.0.253)
root     pts/1        2018-04-06 22:30 (172.16.1.5)	

動態inventory

  動態inventory的意思就是所有的變量可以從外部獲取,也就是說我們可以從CMDB一級zabbix系統拉取所有的主機信息然后使用Ansible進行管理。易用inventory只需要把ansible.cfg文件中的inventory定義值改成一個可執行腳本即可。

編寫一個inventory.py文件動態獲取主機信息

#!/usr/bin/env python
# coding=utf-8
import json
ip1 = ["172.16.1.10"]	
ip2 = ["172.16.1.11"]
g1= "test1"
g2 = "test2"
hostdata = {g1:{"hosts":ip1},g2:{"hosts":ip2}}
print json.dumps(hostdata,indent=4)

  運行該python腳本:

/usr/bin/python inventory.py 

{
    "test1": {
        "hosts": [
            "172.16.1.10"
        ]
    }, 
    "test2": {
        "hosts": [
            "172.16.1.11"
        ]
    }
}

  該腳本必須要有可執行權限才可以被ansible命令調用:

chmod +x inventory.py

  運行ansible命令並調用該python腳本:

ansible -i inventory.py all -a "date" -k

SSH password: 
172.16.1.11 | SUCCESS | rc=0 >>
Sat Apr  7 01:04:12 CST 2018

172.16.1.10 | SUCCESS | rc=0 >>
Sat Apr  7 01:04:12 CST 2018


免責聲明!

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



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