zoukankan      html  css  js  c++  java
  • Ansible CMDB

    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" 转载请保留原文链接及作者。
     
  • 相关阅读:
    快速搭建Android 开发环境-使用ADT Bundle
    js window.print ()只打印网页图片
    数据范式的理解与解析技巧
    C#/.Net文件打包下载
    动态加载echarts数据,防止动态加载后数据叠加
    忙忙碌碌程序媛的工作小知识
    动态数据库名称的时候,使用sp_executesql
    C#的NPOI根据模板导出动态EXCEL图表,
    Android 安卓实现页面相互跳转并相互传递参数
    C#编码规范
  • 原文地址:https://www.cnblogs.com/davidshen/p/10508795.html
Copyright © 2011-2022 走看看