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
1
yum install -y 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
致谢
本文标题:Ansible CMDB
文章作者:侯海云
发布时间:2018-06-24, 08:44:05
最后更新:2018-06-25, 02:53:27
许可协议: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。
 

Ansible CMDB的更多相关文章

  1. Ansible工作架构和原理

    特性 模块块化调用持定的模块,完成持定任务 有Paramiko,PyYAML,Jinja2(模板语言)三个关键模块 支持自定义模块 基于Python语法头现 部署简单,基于python和SSH(默认已 ...

  2. Ansible 插件 之 【CMDB】【转】

    Github地址: https://github.com/fboender/ansible-cmdb 从facts收集信息,生成主机概述 安装 wget https://github.com/fboe ...

  3. 资产管理 cmdb之ansible 获取服务器硬件、软件等信息

    cmdb抓取服务信息的方式有很多种,可以使用自动化工具saltstack.ansible.puppet,或者使用其它模块直接ssh远程连接抓取服务器信息.这里记录一下用ansible的API接口调用s ...

  4. 从CMDB动态获取服务器列表,按照Ansible的约定

    目标效果: [root@ansible ~]# python query.py --list{ "test": [ "10.1.2.1", "10.1 ...

  5. 自动化运维工具之 Ansible 介绍及安装使用

    一.初识Ansible 介绍: Absible 使用 模块(Modules)来定义配置任务.模块可以用标准脚本语言(Python,Bash,Ruby,等等)编写,这是一个很好的做法,使每个模块幂等.A ...

  6. Ansible@一个有效的配置管理工具--Ansible configure management--翻译(十二)

    如果没有书面授权,请勿转载 第五章 自己定义模块 External inventories In the first chapter we saw how Ansible needs an inven ...

  7. Ansible详解(一)

    简介 Ansible是一个简单的自动化运维管理工具,基于Python语言实现,由Paramiko和PyYAML两个关键模块构建,可用于自动化部署应用.配置.编排task(持续交付.无宕机更新等).主版 ...

  8. Ansible - 简介和应用自动化基础实践

    installAnsible简介和应用自动化基础实践 一.引入: 1.1  如官方定义,Ansible is The simplest way to automate apps and IT infr ...

  9. Ansible学习总结(1)

    ---恢复内容开始--- 1. Ansible概述 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric) ...

随机推荐

  1. 搭建RPC over HTTP 环境遇到的问题

    最近需要做RPC的IPS协议分析,需要了解一下RPC over HTTP的协议格式,由于此类数据包不易构造,故此想搭建一个抓一些包分析一下. 结果搭建这么个环境硬是用了我四个工作日的时间,崩溃加无语. ...

  2. Codility---Dominator

    Task description A zero-indexed array A consisting of N integers is given. The dominator of array A ...

  3. Spring单例模式多线程安全问题-有状态的Bean

    Spring单例与线程安全小结 一.Spring单例模式与线程安全 Spring框架里的bean,或者说组件,获取实例的时候都是默认的单例模式,这是在多线程开发的时候要尤其注意的地方. 单例模式的意思 ...

  4. 在C#中创建文件快捷方式

    创建快捷方式对于绝大多数 Windows 用户来说都是小菜一碟了,然而,这项工作却为程序员带来不少麻烦..NET 没有提供简便直接的创建快捷方式的方法,那么在 .NET 中我们如何为应用程序创建快捷方 ...

  5. Keepalived双主模式配置流程

    实验说明 1)keepalived 支持配置多个VRRP实例,每个实例对应一个业务 2)本次实验将实现 keepalived 的互为主备: 业务A:keepalived01为Master,keepal ...

  6. Binary classification - 聊聊评价指标的那些事儿【回忆篇】

    在解决分类问题的时候,可以选择的评价指标简直不要太多.但基本可以分成两2大类,我们今分别来说道说道 基于一个概率阈值判断在该阈值下预测的准确率 衡量模型整体表现(在各个阈值下)的评价指标 在说指标之前 ...

  7. 使用Python爬取微信公众号文章并保存为PDF文件(解决图片不显示的问题)

    前言 第一次写博客,主要内容是爬取微信公众号的文章,将文章以PDF格式保存在本地. 爬取微信公众号文章(使用wechatsogou) 1.安装 pip install wechatsogou --up ...

  8. 【数据结构】红黑树-Java实现

    WIKI:https://en.wikipedia.org/wiki/Red%E2%80%93black_tree 转:红黑树(五)之 Java的实现 总结的比较精炼的: http://www.cnb ...

  9. Linux五种IO模型 ——Java学习笔记

    本文摘自网络:     1.阻塞IO(blocking IO) 在linux中,默认情况下所有的socket都是blocking,一个典型的读操作流程大概是这样: 图1 阻塞IO 当用户进程调用了re ...

  10. HBase Region重点剖析

    Region的概念 Region是HBase数据管理的基本单位.数据的move,数据的balance,数据的split,都是按照region来进行操作的. region中存储这用户的真实数据,而为了管 ...