Ansible 日常维护和使用知识
原标题:Ansible日常维护和使用知识
文章图片
【摘要】本文将介绍如何维护Ansible的Inventory , 来管理不同业务的不同机器;如何使用Ansible的一些常用组件 , 完成一些基本的自动化运维工作;如何编写和使用Playbook , 来完成复杂环境下的自动化运维工作;如何利用Facts组件来采集被管客户端的设备信息 , 来实现配置管理系统(CMDB)的自动采集能力等等 。
转自公众号@TWT社区;作者:邓毓 。
1、AnsibleInventory维护
Inventory文件在日常维护中 , Ansible通过Inventory(可管理的主机集合) , 对远端服务器或者主机进行统一操作和管理 。 在Ansible中 , 描述主机的默认方法是将他们列在一个文本文件中 , 这个文件称为Inventory文件 , 默认的路径和文件为:/etc/ansible/hosts , 可以通过ANSIBLE_HOSTS环境变量来指定 , 也可以在ansible.cfg文件中通过inventory参数指定 , 或者在运行ansible和ansible-playbook的时候使用-i参数来临时指定 。
下面举例说明 , 如何在inventory组件的/etc/ansible/hosts文件中定义主机和主机组:
文章图片
第一行定义了一个主机X.X.X.100 , 并使用inventory内置变量ansible_ssh_pass定义了该主机的登录密码 , 如果建立了互信 , 则不需要这个参数;
第二、三、四行定义了一个名为groupname1的主机组 , 其中包含X.X.X.101-X.X.X.109 , X.X.X.201-X.X.X.209共计18台主机;
第五、六行为groupname1的主机组定义了一个共同的变量:ansible_ssh_pass , 以定义该组内所有主机的登录密码;
第七、八行定义了一个更大的组:groupname2 , 其下包含了groupname1组下的所有主机 。
定义好之后 , 我们在ansible命令行和ansible-playbook中 , 可以非常灵活的使用 , 便于批量操作 。 例如批量查看groupname1组下所有主机的当前时间:
ansiblegroupname1-adate
Inventory内置参数除了前面介绍的ansible_ssh_pass参数 , AnsibleInventory内置了一些参数 , 这些参数在我们实际工作中也会经常使用 , 我们可以直接在Inventory文件中定义它 。
文章图片
我们也可以在ansible.cfg文件中的[defaults]部分更改一些Inventory内置参数的默认值 , 可以支持更改的有:
文章图片
动态Inventory在实际的应用中 , 会存在大量的主机列表信息 , 如果手动维护Ansible中的Inventory文件将会非常的繁琐 , 所以支持动态Inventory将会让问题变得统一、清晰、简单许多 。 动态Inventory也就是Ansible所有的Inventory文件里面的主机列表和变量信息都支持从外部拉取 , 例如我们常用的CMDB , 我们可以通过定义的脚本 , 将外部CMDB等其他运维系统中的主机信息同步至Ansible中 。 在实际的配置中仅需要更改ansible.cfg文件中的inventory参数为一个可执行的脚本即可 。
[defaults]
inventory=/etc/ansible/inventory.sh
脚本的内容不受任何编程语言限制 , 但该脚本必须支持以下规范的参数 , 脚本的执行结果也有一定的要求:
--list或者-l,脚本运行该参数须显示所有主机和组的信息(Json格式) 。
--host或者-H , 脚本的该参数后需指定一个主机 , 运行结果也会返回该主机的所有信息(同样也必须为Json格式) 。
脚本调试好之后 , ansible将利用inventory变量所指向的脚本 , 获取主机和组信息(或者通过-i参数指定) , 来向主机执行命令 。
Inventory分割如果我们想要同时使用常规Inventory文件和动态Inventory脚本 , 或者按不同业务/系统分割成的多个Inventory文件 , 我们可以把所有这些文件全部都放到同一个目录 , 并配置ansible.cfg文件的hostfile参数 , 让Ansible使用hostfile参数所指定的目录作为Inventory即可 , 也可以在命令行中使用-i命令来指定特定的Inventory文件 。 Ansible将会处理目录里所有的文件并将结果合并为一个完整的Inventory 。
[defaults]
hostfile=/etc/ansible/inventory
2、AnsibleAd-Hoc命令使用
Ansible系统由控制主机对被管节点的操作方式可分为两类 , 即Ad-Hoc和Playbook:
Ad-Hoc模式使用单个模块 , 支持批量执行单条命令 。
Playbook模式是Ansible主要管理方式 , 也是Ansible功能强大的关键所在 , Playbook通过多个Task集合完成一类功能 , 如Web服务的安装部署、数据库服务器的批量备份等 , 可以简单地把Playbook理解为通过
- 12星座女生之护肤日常(上):射手女最随心,处女女最执着
- 春天可别错过纱裙,小仙女的日常时髦就靠它,不挑身材还时髦
- 行无疆:店铺没流量?从开张细节到后期维护是否都做好了
- 杨丞琳日常西服造型,发型时尚又减龄,打造年轻时尚的外观
- 休闲酷帅日常穿搭!男生春季穿搭→第6期!省心一整套型男潮搭!
- 冬季植物墙如何维护?
- 不会穿搭,可以选择牛仔裤,让你轻松应对日常穿搭
- 40岁女人日常穿搭,该配怎样的护肤才好,坚持这样满满的少女感一、穿着方面应该这样做二、护肤方面应该这样做
- 专业人士还要普及车辆维护保养知识?今天这场公益讲座没那么简单
- 细节之处见品质,长安欧尚X7升级科技配置,适合日常家用