实例学习Ansible系列:指定执行对象Hosts的方法 您所在的位置:网站首页 host文件所在目录 实例学习Ansible系列:指定执行对象Hosts的方法

实例学习Ansible系列:指定执行对象Hosts的方法

2023-10-08 16:33| 来源: 网络整理| 查看: 265

知识点: 这篇文章介绍一下Ansible中执行对象列表的设定方法,可以通过在各个层级ansible.cfg中关联的hosts文件中进行设定,也可以在ansible命令执行的时候通过-i直接指定文件或者传入机器列表的方式,而在playbook中也可以通过通过设定hosts或者相关的hosts文件来实现,这篇文章就常见的设定方式进行总结和整理。

场景: Ansible可以使得自动化运维更加轻松,对于很多台机器的操作可以通过相应的命令或者playbook来完成,但是往往有各种情况,有直接使用ansible命令的,也有通过使用playbook来实现的,有静态的机器列表也有动态生成的机器列表作为对象等。

方式1: 使用ansible.cfg设定

方式说明: 在ansible.cfg的设定文件中,inventory设定项用于设定对象机器列表,结合使用即可完成执行对象Hosts的设定。

具体使用方式和示例可参看如下内容:

https://blog.csdn.net/liumiaocn/article/details/95351475 方式2: 使用-i传入机器列表参数

方式说明: 使用ansible命令的-i选项可以指定执行机器对象列表

使用示例 [root@host131 ~]# ansible all -i host161,host162 --list-hosts hosts (2): host161 host162 [root@host131 ~]#

注意:如果传入的节点只有一台,末尾的逗号不能省略

方式3: 使用-i指定机器列表文件

方式说明: 使用ansible命令的-i选项可以指定机器列表文件

使用示例 [root@host131 ~]# cat hosts [linuxserver:children] centosserver ubuntuserver [centosserver] host131 host13[2:4] [ubuntuserver] host16[1:4] [root@host131 ~]# ansible linuxserver -i hosts --list-hosts hosts (8): host131 host132 host133 host134 host161 host162 host163 host164 [root@host131 ~]# 方式4: playbook中使用hosts直接指定 示例playbook [root@host131 ~]# cat msg.playbook --- - hosts: host131,localhost tasks: - name: Playbook Sample Task debug: msg: Welcome to Ansible ... [root@host131 ~]# 执行结果 [root@host131 ~]# ansible-playbook msg.playbook PLAY [host131,localhost] *************************************************************************************************************** TASK [Gathering Facts] ***************************************************************************************************************** ok: [localhost] ok: [host131] TASK [Playbook Sample Task] ************************************************************************************************************ ok: [host131] => { "msg": "Welcome to Ansible" } ok: [localhost] => { "msg": "Welcome to Ansible" } PLAY RECAP ***************************************************************************************************************************** host131 : ok=2 changed=0 unreachable=0 failed=0 localhost : ok=2 changed=0 unreachable=0 failed=0 [root@host131 ~]# 方式5: 通过环境变量传给playbook的hosts 示例playbook [root@host131 ~]# cat msg.playbook --- - hosts: '{{ env_host_list }}' tasks: - name: Playbook Sample Task debug: msg: Welcome to Ansible ... [root@host131 ~]# 执行结果 [root@host131 ~]# ansible-playbook msg.playbook -e 'env_host_list=host131,localhost' PLAY [host131,localhost] *************************************************************************************************************** TASK [Gathering Facts] ***************************************************************************************************************** ok: [localhost] ok: [host131] TASK [Playbook Sample Task] ************************************************************************************************************ ok: [host131] => { "msg": "Welcome to Ansible" } ok: [localhost] => { "msg": "Welcome to Ansible" } PLAY RECAP ***************************************************************************************************************************** host131 : ok=2 changed=0 unreachable=0 failed=0 localhost : ok=2 changed=0 unreachable=0 failed=0 [root@host131 ~]# 方式6: 组合方式

通过使用上述几种方式的结合,可以实现很多需求,比如使用playbook的方式下,通过ansible.cfg与hosts文件以及yaml文件的hosts字段的结合可以实现更为灵活的对象节点使用的组合方式。

建议

使用何种方式进行Hosts的管理,需要考虑很多因素,以下整理出常见的一些问题,可用于开发者在使用的时候进行自我测试使用何种方式:

对象机器的范围:是所有系统级别还是特定用户级别,还是特定用户的某次playbook或者执行时的需要临时性的设定还是永久性的设定机器的列表是动态生成的还是静态的机器列表执行对象的机器列表是否经常需要更新对这些对象机器的操作是临时性的(比如故障对应)还是例行手动作业需要的…

根据这些主要是引起使用者对于这些手工操作进行进一步思考,从而更好地对日常的运维操作进行优化。

其他内容 实例学习Ansible:https://blog.csdn.net/liumiaocn/article/details/87273800


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有