searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Ansible主机清单的配置方式

2024-05-21 02:36:14
3
0

一、背景介绍

在ansible中,类似”脚本”的文件被称作”剧本”,’剧本’的英文名称为’playbook’,我们只需要将要做的事情编写成playbook,把不同的模块按照顺序编排在剧本中,ansible就会按照剧本一步一步的执行,最终达到我们的目的,虽然playbook的功能与脚本类似,但是剧本并不是简单的将ad-hoc命令按照顺序堆砌在一个可执行文件中,编写剧本需要遵循YAML语法.同时需要host文件,该文件连接到某个管理系统节点的信息数据库,并将节点信息以特定格式输出(绝大多数都是josn格式)

二、配置方式

2.1 分组配置

清单支持”分组”功能,我们可以将某些主机分为一组,然后通过组名去管理组内的所有主机。
例如,修改配置文件为如下:

[controller]
192.168.132.1
192.168.132.2

[computer]
192.168.132.3
192.168.132.4

#支持连续ip配置
[network]
192.168.132.[60:100]

#支持主机名配置,前提是ansible主机可以正确解析对应的主机名
[ceph]
ceph.zsyclink.net

#支持组内嵌套
[pro:children]
controller
computer

经过上述配置后,我们可以通过组名去管理组内的所有主机。

ansible controller -m ping
ansible compute -m ping

清单文件也支持嵌套分组,例如

#支持组内嵌套
[pro:children]
controller
computer

上述示例表示我们配置了3个组,pro组、controller组、computer组,而pro组中包含”子组”,”children”关键字表示当前组中存在子组,pro组的子组就是controller组和computer组,也就是说,当我们操作pro组时,就相当于操作controller组和computer组中的所有主机

2.2 YAML配置

/etc/ansible/hosts不仅能够识别INI的配置语法,还能够识别”YAML”的配置语法。
注意:YAML的语法中,只能使用空格作为缩进,不能使用tab。
例如:

all:
 host:
  192.168.132.1:
  192.168.132.2:
  
#上例相当于如下INI配置
192.168.132.1
192.168.132.2

说明:

  • 第二行开头使用一个空格作为缩进,使用hosts关键字,表示hosts属于all的下一级,我们可以这样理解,all是默认的一个组,这个组是最大的一个组。
  • 当我们进行自定义分组时,也需要使用hosts关键字。
#先看一个INI风格的配置,示例如下
10.1.1.61

[test1]
10.1.1.60

[test2]
10.1.1.70
#上述配置表示当前清单中有3台受管主机,主机61不属于任何组,主机60属于test1组,主机70属于test2组

#使用YAML语法进行同等效果的配置如下
#注意,为了使缩进显得更加明显,此处每次缩进使用两个空格
all:
  hosts:
    10.1.1.61:
  children:
    test1:
      hosts:
        10.1.1.60:
    test2:
      hosts:
        10.1.1.70:
  • 从上例可以看出,当直接在清单中创建组时,需要在all关键字内使用children关键字,而定义每个组时,有必须使用hosts关键字,指明组内的主机。
0条评论
0 / 1000
易****剑
2文章数
0粉丝数
易****剑
2 文章 | 0 粉丝