Ansible CMDB
文章目錄
簡介
Ansible-cmdb將Ansible 實際收集的輸出信息 轉換爲包含系統配置信息的靜態HTML概述頁面(以及其餘內容)。
它支持多種類型的輸出(html,csv,sql等),並將由Ansible收集的信息與自定義數據進行擴展。對於每一個主機,它還顯示組,主機變量,自定義變量和機器本地事實。
安裝
本實驗使用環境以下:
IP
|
系統版本
|
軟件版本
|
功能
|
192.168.8.12/24
|
CentOS Linux release 7.3.1611 (Core)
|
ansible 2.4.2.0 ansible-cmdb.py v1.27
|
ansible-cmdb
|
192.168.8.14/24
|
CentOS Linux release 7.3.1611 (Core)
|
|
應用服務
|
1. 安裝 ansible
2. 下載並安裝 ansible-cmdb
1
2
3
|
wget https://github.com/fboender/ansible-cmdb/releases/download/1.27/ansible-cmdb-1.27-2.noarch.rpm
yum install -y ./ansible-cmdb-1.27-2.noarch.rpm
|
使用 ansible-cmdb
基本
首先,爲你的主機生成 Asible 輸出:
1
2
3
|
mkdir out
ansible -m setup --tree out/ all
|
接下來,再生成的 out/ 目錄調用 ansible CMDB 以生成 CMDB概覽界面:
1
|
ansible-cmdb out/ > overview.html
|
默認模板是 html_fancy,它使用 jQuery。
訪問效果:
徹底使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
Usage: ansible-cmdb.py [option] <dir> > output.html
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-t TEMPLATE, --template=TEMPLATE
Template to use. Default is 'html_fancy'
-i INVENTORY, --inventory=INVENTORY
Inventory to read extra info from
-f, --fact-cache <dir> contains fact-cache files
-p PARAMS, --params=PARAMS
Params to send to template
-d, --debug Show debug output
-q, --quiet Don't report warnings
-c COLUMNS, --columns=COLUMNS
Show only given columns
--exclude-cols=EXCLUDE_COLUMNS
Exclude cols from output
|
庫存掃描
ansible cmdb 能夠讀取庫存文件(hosts,默認狀況下),庫存目錄或者動態庫存,並從中提取有用的信息,例如:
- 主機所屬的全部組
- 主機變量:每一個主機均可以選擇的鍵/值對,能夠再劇本中使用。經過 ansible cmdb 掃描它們並將它添加到 ‘hostvars’ 部分下發縣的 facts。
讀取清單是使用 -i switch 來實現 cmdb 的。它須要一個參數:包含主機文件或者動態庫存腳本路徑的主機文件目錄。能夠經過將多個清單文件與逗號(不包含空格)分開來指定多個清單文件。
例如:
1
|
ansible-cmdb -i ./hosts out/ > overview.html
|
若是在該位置存在 host_vars 和 / 或者 group_vars 目錄,也將讀取它們。
「html_fancy」 模板使用四個額外的字段:
- groups:主機所屬的 Ansible 組的列表
- dtap:主機是不是開發、測試、驗收或者生產系統
- comment:主機的註釋
- ext_id:主機的外部惟一標識符
假設咱們有以下 hosts file:
1
2
3
|
[cmdb]
192.168.8.12 dtap=test comment="New database server"
192.168.8.14 dtap=dev comment="Old database server"
|
模板
指定模板
ansible-cmdb 提供多個模板你可使用 -t 或者 –template 參數選擇你的模板:
1
|
ansible-cmdb -t html_fancy_split out/ overview.html
|
‘html_fancy’ 模板是默認模板
模板能夠由 NAME 引用,也能夠由 .tpl 文件的相對/絕對路徑引用。這容許你實現本身的模板。例如:
1
|
ansible-cmdb -t/home/fboender/my_template out/> my_template.html
|
模板參數
某些模板支持影響它的輸出的參數。蠶食使用 -p 或者 –parameter 選項指定爲 ansible-cmdb。能夠經過逗號分隔多個參數來指定參數,參數中必須有空格。
例如:要指定帶有不呢地 Javascript 庫和關閉數的 html_fancy 模板,請執行如下操做:
1
|
ansible-cmdb -t html_fancy -p local_js=1,collapsed=1 out> overview.html
|
標準可用模板
ansible cmdb 目前提供瞭如下模板:
- html_fancy:一個辦好全部主機的動態的現代 HTML 頁面
- html_fancy_split:一個動態的現代 HTML 頁面,每一個細節都包含在一個單獨的文件中
- txt_table:一個快速文件 table 摘要,其中包含一些最少的信息
- json:轉儲全部包括組、變量、自定義信息(JSON格式)的主機
- csv:CSV 模板輸出主機的 CSV 文件
- markdown:Markdown 模板以 Markdown 格式生成主機信息
- 收費:SQL 模板生成一個能夠加載到 SQLite 或者 MySQL 數據庫的 .sql 文件
html_fancy
一個奇妙的 HTML 頁面,使用 jQuery 和數據表給你一個能夠搜索的和能夠排序的 table 概述。
它採用可選參數:
- local_js=0|1:從本地磁盤(default=0)加載資源。若是設置,將從本地磁盤加載資源,而不是經過網絡加載資源。
- collapsed=0|1:控制默認狀況下是否摺疊主機信息。值爲1,將經過 defaultcontrols 對全部主機進行 collapse 處理。默認狀況下,1的值將 collapse 全部主機信息。(default=’0’)
- host_details=0|1:渲染主機詳細信。(default=1)
- skip_empty=0|1:跳過沒有收集事實的主機(沒法接通等)。(default=0)
html_fancy_split
這個模板與 html_fancy 模板基本相同,可是它生成帶有一個 index.html 文件的 cmdb/ 目錄,併爲每個主機生成一個獨立的 html 文件
使用方法:
1
|
ansible-cmdb -t html_fancy_split out/
|
它接受與 html_fancy 模板相同的參數
sql
sql 模板生成一個 .sql 文件,能夠加載到 SQLite 或者 MySQL 數據庫中。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
ansible-cmdb -t sql out/ > cmdb.sql
[root@centos7 ~]# head cmdb.sql
DROP TABLE IF EXISTS hosts;
CREATE TABLE hosts (
name VARCHAR(255),
fqdn VARCHAR(255),
main_ip VARCHAR(15),
os_name VARCHAR(80),
os_version VARCHAR(40),
system VARCHAR(40),
kernel VARCHAR(40),
arch_hardware VARCHAR(12),
echo"CREATE DATABASE ansiblecmdb" | mysql
mysql ansiblecmdb <cmdb.sql
|
事實緩存
Ansible 能夠在運行劇本時從主機緩存事實,這中配置在 Ansible 配置文件中修改以下:
1
2
3
|
[defaults]
fact_caching=jsonfile
fact_caching_connection =/path/to/facts/dir
|
經過指定 -f(–fact-cache) 選項,你能夠將這些緩存的事實用做 facts cmdb 的事實目錄:
1
|
ansible-cmdb -f/path/to/facts/dir> overview.html
|
請注意,–fact-cache 選項將應用於你指定的全部事實目錄。這意味着不能混合事實緩存事實目錄的普通 setup 事實目錄。另外,若是但願手動擴展(查看 Extending 章節),必須省略 ansible_facts 鍵並將項目放在 JSON 的 root 中。
列
一些模板,如 txt_table 和 html_fancy,支持列。若是支持列,則可使用 –columns/-c 命令行選項指定要顯示的列。
–columns 採用一個逗號分隔列的列表。列必須由它們的 id 字段指定。有關模板支持那些 id 字段的信息,請在模板中查看。一般是列標題,但在 lowercase 中,也有用下劃線替換的空格。
例如:
1
2
3
4
5
|
[root@centos7 ~]# ansible-cmdb -t txt_table --columns name,os,ip,mem,cpus out/
Name OS IP Mem CPUs
------------ --------------- --------------- --- ----
192.168.8.14 CentOS 7.3.1611 192.168.139.151 2g 2
192.168.8.12 CentOS 7.3.1611 192.168.139.129 2g 2
|
致謝
發佈時間:2018-06-24, 08:44:05
最後更新:2018-06-25, 02:53:27