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

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

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

方式1: 使用ansible.cfg设定

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

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

方式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或者执行时的需要
  • 临时性的设定还是永久性的设定
  • 机器的列表是动态生成的还是静态的机器列表
  • 执行对象的机器列表是否经常需要更新
  • 对这些对象机器的操作是临时性的(比如故障对应)还是例行手动作业需要的

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

其他内容

淼叔 CSDN认证博客专家 神经网络 TensorFlow NLP
资深架构师,PMP、OCP、CSM、HPE University讲师,EXIN DevOps Professional与DevOps Master认证讲师,曾担任HPE GD China DevOps & Agile Leader,帮助企业级客户提供DevOps咨询培训以及实施指导。熟悉通信和金融领域,有超过十年金融外汇行业的架构设计、开发、维护经验,在十几年的IT从业生涯中拥有了软件开发设计领域接近全生命周期的经验和知识积累,著有企业级DevOps技术与工具实战。
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页