前言

随着管理机器的增多,我们在使用Ansible的时候时常会遇到hosts文件过于冗长的问题,极其不便于管理,而将hosts文件拆分为inventory就可解决该问题;另外,hosts中的每个主机条目需要指定用户名和私钥或密码,十分繁琐,而hosts文件支持全局变量,可将该公用信息进行全局指定或分组指定,本文就这两点展开,希望对遇到同样问题的小伙伴有所帮助。

配置文件

首先需要修改/etc/ansible/ansible.cfg配置文件

[defaults]
#此处为目录或hosts文件,不可更改
inventory = /etc/ansible/inventory
#inventory = /etc/ansible/host

创建inventory目录

创建/etc/ansible/inventory目录
在该目录下创建拆分后的hosts文件

拆分hosts文件

建议先按照项目创建目录,在项目目录下创建环境的hosts文件,例如下图

Ansible: hosts文件拆分为inventory和定义inventory全局变量-LMLPHP

定义inventory全局变量

cat >/etc/ansible/inventory/all-vars <<"EOF"
[all:vars]
ansible_connection=ssh
ansible_ssh_user=root
ansible_ssh_private_key_file=/root/.ssh/id_rsa

清除原有每个inventory的变量

sed -ig 's/ansible_ssh_user=root ansible_ssh_private_key_file=\/root\/.ssh\/id_rsa//g' ./*

此处贴上/etc/ansible/inventory/Aproject/online的hosts文件内容

Ansible: hosts文件拆分为inventory和定义inventory全局变量-LMLPHP

05-11 22:33