如何使用Ansible-cmd从ansible事实收集输出中生成主机概述

时间:2020-02-23 14:30:32  来源:igfitidea点击:

今天,让我们看看如何使用Ansible-cmdb从ansible事实收集输出中生成主机概述。此工具将Ansibles事实收集的输出作为输入,并将其转换为包含所有收集的系统配置信息的静态HTML概述页面。

Ansible-cmd支持多种类型的输出(HTML,csv,sql等),并使用自定义数据扩展由Ansible收集的信息。它显示了每个主机的组,主机变量,自定义变量和计算机本地事实。

Ansible-cmdb的功能

以下是Project Github页上概述的Ansible-cmdb功能。

支持多种输出格式/模板:使用选项(--template html_fancy)的HTML风格化HTML Split(--template html_fancy_split),每个宿主的详细信息位于单独的文件中(适用于大量的宿主)。 CSV(--template csv),一种值得信赖且灵活的逗号分隔格式; JSON(--template json),JSON格式的所有事实的转储。Markdown(--template markdown),用于复制粘贴到Wiki等中.Markdown Split(模板markdown_split),每个主机的详细信息放在单独的文件中(用于大量主机).SQL(--template sql),用于将主机事实导入到(My SQL数据库。纯文本表(模板txt_table),用于控制台专家。当然还有我们愿意制作的任何自定义模板。主机概述和详细的主机信息。主机和组变量。主机事实和手册自定义事实。添加和扩展现有主机的事实,并手动添加全新的主机。

如何安装Ansible-cmdb

我们可以从源发布软件包中的fromAnsible-cmdb安装,也可以使用Python pip软件包管理器进行安装

方法1:使用pip安装Ansible-cmdb

我们需要先在服务器上安装pip,然后才能使用此方法安装Ansible-cmdb。

在CentOS上安装pip

在我们选择的终端上运行以下命令以安装pip

sudo yum -y install epel-release
sudo yum install python-pip
sudo pip install --upgrade pip

在Fedora上安装pip

添加epel存储库并安装pip

sudo dnf install epel-release
sudo dnf install python-pip
sudo pip install --upgrade pip

在Ubuntu/Fedora上安装pip

使用命令

sudo apt install python-pip
sudo pip install --upgrade pip

在Arch Linux/Manjaro上安装pip

使用pacman软件包管理器

sudo pacman -S python-pip
sudo pip install --upgrade pip

安装pip后,下载并安装ansible-cmdb

sudo pip install ansible-cmdb

我们还可以通过Pip升级Ansible-cmdb:

sudo pip install --upgrade ansible-cmdb

对于macOS用户,我们可以使用brew

brew install ansible-cmdb

方法2:从源代码安装Ansible-cmdb

从Github克隆源代码

git clone https://github.com/fboender/ansible-cmdb.git

转到" ansible-cmdb"目录并运行" make install"

cd ansible-cmdb
sudo make install

样品输出

umask 0022 && mkdir -p /usr/local/lib/ansible-cmdb
umask 0022 && mkdir -p /usr/local/man/man1
umask 0022 && cp -a src/* /usr/local/lib/ansible-cmdb
umask 0022 && cp -r lib/* /usr/local/lib/ansible-cmdb
umask 0022 && cp LICENSE /usr/local/lib/ansible-cmdb
umask 0022 && cp README.md /usr/local/lib/ansible-cmdb
umask 0022 && gzip -9 -c contrib/ansible-cmdb.man.1 > /usr/local/man/man1/ansible-cmdb.man.1.gz
umask 0022 && ln -s /usr/local/lib/ansible-cmdb/ansible-cmdb /usr/local/bin/ansible-cmdb

如何使用Ansible-cmdb

要查看ansible-cmdb命令的帮助用法,请传递--help选项

# 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

首先为主机生成Ansible输出:

mkdir cmdb-output
ansible -m setup --tree cmdb-output/all

我们还可以指定一个用户运行身份和密码

ansible -m setup --user=root --tree cmdb-output/all --ask-pass

或者特定的主机组

ansible -m setup --user=root --tree cmdb-output/db-servers --ask-pass

接下来,在生成的cmdb-output /目录中调用ansible-cmdb来生成CMDB概述页面:

ansible-cmdb cmdb-output ansible-cmdb-overview.html

默认情况下,使用html_fancy模板,该模板生成包含所有主机概述的输出,以及每个主机的一部分详细信息。

要明确指定使用精美的模板来生成输出,请使用

ansible-cmdb --template html_fancy cmdb-output ansible-cmdb-overview.html

现在,我们可以在浏览器中打开overview.html来查看结果。

要使用自定义列表文件,请使用-i指定其路径。

$ansible-cmdb -i ./hosts cmdb-output overview.html

如果该目录中存在" host_vars"和" group_vars"目录,则它们将被自动包括在内。

可用模板

Ansible-cmdb当前提供了以下开箱即用的模板:html_fancy ::一个动态的,现代的HTML页面,其中包含所有主机。html_fancy_split ::一个动态的,现代的HTML页面,每个主机的详细信息位于单独的文件中。txt_table:可用主机的简短文本表摘要,其中包含一些最少的信息。json:以JSON格式转储所有主机,包括组,变量,自定义信息。csv:CSV模板输出主机的CSV文件。 :Markdown模板以Markdown格式生成主机信息。sql:SQL模板生成一个.sql文件,该文件可以加载到SQLite或者MySQL数据库中。

使用txt_table模板并打印列

$ansible-cmdb -t txt_table --columns name,os,ip,mem,cpus cmdb-output/
Name            OS               IP              Mem  CPUs  
--------------  ---------------  --------------  ---  ----  
10.200.3.205    CentOS 7.5.1804  10.200.3.205    2g   1     
10.200.3.204    CentOS 7.5.1804  10.200.3.204    2g   1     
10.200.3.206    CentOS 7.5.1804  10.200.3.206    2g   1     
10.200.200.250  CentOS 7.5.1804  10.200.200.250  4g   1     
10.200.200.251  CentOS 7.5.1804  10.200.200.250  2g   1

获取json输出

ansible-cmdb -t json cmdb-output cmdb.json