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. Hadoop集群(第2期)虚拟机网卡的介绍和配置

    很多人安装虚拟机的时候,经常遇到不能上网的问题,而vmware有三种网络模式,对初学者来说也比较眼花聊乱,今天我就来基于虚拟机3种网络模式,帮大家普及下虚拟机上网的背景知识 虚拟机网络模式 无论是vm ...

  2. Nio编程模型总结

    终于,这两天的考试熬过去了, 兴致冲冲的来整理笔记来, 这篇博客是我近几天的NIO印象笔记汇总,记录了对Selector及Selector的重要参数的理解,对Channel的理解,常见的Channel ...

  3. spring 5.x 系列第14篇 —— 整合RabbitMQ (代码配置方式)

    源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构说明 本用例关于rabbitmq的整合提供简单消 ...

  4. spring 5.x 系列第9篇 —— 整合mongodb (xml配置方式)

    源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构说明 配置文件位于resources下,项目以单 ...

  5. spring 5.x 系列第1篇 —— springmvc基础 (xml配置方式)

    文章目录 一.搭建hello spring工程 1.1 项目搭建 1.2 相关配置讲解 二.配置自定义拦截器 三.全局异常处理 四.参数绑定 4.1 参数绑定 4.2 关于日期格式转换的三种方法 五. ...

  6. Codeforces Round #567 (Div. 2)A

    A. Chunga-Changa 题目链接:http://codeforces.com/contest/1181/problem/A 题目 Soon after the Chunga-Changa i ...

  7. 渐进式web应用开发---service worker 原理及介绍(一)

    渐进式web应用(progressive Web app) 是现代web应用的一种新形式.它利用了最新的web功能,结合了原生移动应用的独特特性与web的优点,为用户带来了新的体验. 一:传统web端 ...

  8. POJ 2796:Feel Good(单调栈)

    http://poj.org/problem?id=2796 题意:给出n个数,问一个区间里面最小的元素*这个区间元素的和的最大值是多少. 思路:只想到了O(n^2)的做法. 参考了http://ww ...

  9. C++中 =default,=delete用法

    =default: 用于显式要求编译器提供合成版本的四大函数(构造.拷贝.析构.赋值) 例如: class A{ public: A() = default; A(const A& a) = ...

  10. SpringMVC——MVC

    一.了解MVC mvc这种设计模式,分为三个基本部分:模型(Model).视图(View)和控制器(Controller),不光运用于Web领域,而且也能用于非Web领域:可以特指一种表现层设计模式, ...