Ansible CMDB
文章目錄
簡介
Ansible-cmdb將Ansible 實際收集的輸出信息 轉換為包含系統配置信息的靜態HTML概述頁面(以及其他內容)。
它支持多種類型的輸出(html,csv,sql等),並將由Ansible收集的信息與自定義數據進行擴展。對於每個主機,它還顯示組,主機變量,自定義變量和機器本地事實。
安裝
本實驗使用環境如下:
1. 安裝 ansible
2. 下載並安裝 ansible-cmdb
使用 ansible-cmdb
基本
首先,為你的主機生成 Asible 輸出:
接下來,再生成的 out/ 目錄調用 ansible CMDB 以生成 CMDB概覽界面:
默認模板是 html_fancy,它使用 jQuery。
訪問效果:

完全使用
庫存掃描
ansible cmdb 可以讀取庫存文件(hosts,默認情況下),庫存目錄或者動態庫存,並從中提取有用的信息,例如:
- 主機所屬的所有組
- 主機變量:每個主機都可以選擇的鍵/值對,可以再劇本中使用。通過 ansible cmdb 掃描它們並將它添加到 ‘hostvars’ 部分下發縣的 facts。
讀取清單是使用 -i switch 來實現 cmdb 的。它需要一個參數:包含主機文件或者動態庫存腳本路徑的主機文件目錄。可以通過將多個清單文件與逗號(不包含空格)分開來指定多個清單文件。
例如:
如果在該位置存在 host_vars 和 / 或者 group_vars 目錄,也將讀取它們。
“html_fancy” 模板使用四個額外的字段:
- groups:主機所屬的 Ansible 組的列表
- dtap:主機是否是開發、測試、驗收或者生產系統
- comment:主機的注釋
- ext_id:主機的外部唯一標識符
假設我們有如下 hosts file:
模板
指定模板
ansible-cmdb 提供多個模板你可以使用 -t 或者 –template 參數選擇你的模板:
‘html_fancy’ 模板是默認模板
模板可以由 NAME 引用,也可以由 .tpl 文件的相對/絕對路徑引用。這允許你實現自己的模板。例如:
模板參數
某些模板支持影響它的輸出的參數。蠶食使用 -p 或者 –parameter 選項指定為 ansible-cmdb。可以通過逗號分隔多個參數來指定參數,參數中必須有空格。
例如:要指定帶有不呢地 Javascript 庫和關閉數的 html_fancy 模板,請執行以下操作:
標准可用模板
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 文件
使用方法:
它接受與 html_fancy 模板相同的參數
sql
sql 模板生成一個 .sql 文件,可以加載到 SQLite 或者 MySQL 數據庫中。
事實緩存
Ansible 可以在運行劇本時從主機緩存事實,這中配置在 Ansible 配置文件中修改如下:
通過指定 -f(–fact-cache) 選項,你可以將這些緩存的事實用作 facts cmdb 的事實目錄:
請注意,–fact-cache 選項將應用於你指定的所有事實目錄。這意味着不能混合事實緩存事實目錄的普通 setup 事實目錄。另外,如果希望手動擴展(查看 Extending 章節),必須省略 ansible_facts 鍵並將項目放在 JSON 的 root 中。
列
一些模板,如 txt_table 和 html_fancy,支持列。如果支持列,則可以使用 –columns/-c 命令行選項指定要顯示的列。
–columns 采用一個逗號分隔列的列表。列必須由它們的 id 字段指定。有關模板支持那些 id 字段的信息,請在模板中查看。通常是列標題,但在 lowercase 中,也有用下划線替換的空格。
例如:
致謝
本文標題:
Ansible CMDB
文章作者:
侯海雲
發布時間:2018-06-24, 08:44:05
最后更新:2018-06-25, 02:53:27
許可協議:
"署名-非商用-相同方式共享 4.0" 轉載請保留原文鏈接及作者。