一、ansible-cmdb简介
ansible-cmdb将Ansible 实际收集的输出信息 转换为包含系统配置信息的静态HTML概述页面(以及其他内容)。它支持多种类型的输出(html,csv,sql等),并将由Ansible收集的信息与自定义数据进行扩展。对于每个主机,它还显示组,主机变量,自定义变量和机器本地事实。
开源项目地址:https://github.com/fboender/ansible-cmdb
二、使用教程
1、下载
wget https://github.com/fboender/ansible-cmdb/releases/download/1.27/ansible-cmdb-1.27-2.noarch.rpm
rpm -ivh ./ansible-cmdb-1.27-2.noarch.rpm
2、安装
yum install -y epel-release
yum install -y ansible
3、帮助
[root@localhost ~]# ansible-cmdb --help
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
4、执行
(1)配置主机登录信息hosts文件
[root@localhost ~]# cat ./hosts
[node]
172.17.185.91 ansible_ssh_user=root ansible_ssh_port=22 ansible_ssh_pass=123321
172.17.185.92 ansible_ssh_user=root ansible_ssh_port=22 ansible_ssh_pass=123321
172.17.185.93 ansible_ssh_user=root ansible_ssh_port=22 ansible_ssh_pass=123321
172.17.185.94 ansible_ssh_user=root ansible_ssh_port=22 ansible_ssh_pass=123321
(2)修改/etc/ansible/ansible.cfg
去掉配置文件/etc/ansible/ansible.cfg中的如下注释井号
#host_key_checking = False
host_key_checking = False
或直接用如下命令修改:
sed -i 's/.*\(host_key_checking\)/\1/' /etc/ansible/ansible.cfg
(3)创建一个收集数据存放目录
mkdir out
(4)使用ansible的setup模块收集数据生成文本文件,并存放到out目录下
ansible -i hosts -m setup --tree out/ all
(5)根据文本文件利用ansible-cmdb生成html页面
ansible-cmdb out/ > overview.html
用IE等浏览器打开overview.html文件看看吧:
三、ansible系列命令
使用如下命令可以获取到ansible系列的命令:
[root@localhost ~]# ls /usr/bin/ | grep ansible | grep -v [0-9]
ansible
ansible-cmdb
ansible-config
ansible-connection
ansible-console
ansible-doc
ansible-galaxy
ansible-inventory
ansible-playbook
ansible-pull
ansible-test
ansible-vault
1、ansible
ansible命令其实在运维工作中用的最多的命令,它的主要目的或者说是主要的应用场景是:在做临时性的操作的时候(比如只想看看被控端的一台主机或者多台主机是否存活),在man中的定义是:run a command somewhere else
ansible通过ssh实现配置管理、应用部署、任务执行等功能。
2、ansible-doc
ansible-doc是查看ansible模块(插件)文档说明,针对每个模块都有详细的用法说明,功能和Linux的man命令类似
3、ansible-playbook
ansible-playbook是日常用的最多的命令,其工作机制是:通过读取预先编写好yml格式的playbook文件实现批量管理,即按一定的条件组成ansible的任务集,然后执行事先编排好的这个任务集。可见于多机器安装部署程序等。
4、ansible-galaxy
ansible-galaxy命令是一个下载互联网上roles集合的工具(这里提到的roles集合其实就是多个playbook文件的集合)
roles集合所在地址:https://galaxy.ansible.com
5、ansible-pull
ansible-pull指令设计到了ansible的另一种的工作模式:pull模式(ansible默认使用的是push模式),这个和通常使用的push模式的工作机制正好相反(push拉取,pull推送)
6、ansible-console
ansible自己的终端
7、ansible-config
ansible-config命令用于查看,编辑管理ansible的配置文件。
8、ansible-connection
这是一个插件,指定执行模式(测试用)
9、ansible-inventory
查看被控制端主机清单的详细信息默认情况下它使用库存脚本,返回JSON格式。
10、ansible-vault
ansible-vault主要用于配置文件的加密,如编写的playbook配置文件中包含敏感的信息,不希望其他人随便的看,ansible-vault可加密/解密这个配置文件
更多详细教程见: