如何使用Ansible-cmd从ansible事实收集输出中生成主机概述
今天,让我们看看如何使用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