Ansible的切片特性与多机器选取

Ansible的切片特性与多机器选取_第1张图片

一、【概述】

本文介绍一下Ansible的多机器选取和切片特性,这个还是一个比较有用的技巧,可以快速选取仓库中我们需要的机器清单。

因为该特性可能与其他工具语法稍微有些不一样,时间长了会忘,值得记录一下

二、【具体说明】

1. 逻辑组合

根据官网的介绍,选取机器或机器组使用的符号无外乎:“ *  :  !  &” ,这几种符号覆盖了常用的逻辑,比较好理解

描述

例子        

效果

所有主机

all (or *)

选取所有主机

单个主机

host1

选取了host1这台主机

多个主机

host1:host2 (or host1,host2)

选取了host1和host2两台,注意这里的:不表示范围

一组主机        

webservers

选取名为webservers的主机组

多组主机

webservers:dbservers

使用:来选取多个主机组,把:当,理解就行

排除某个主机

webservers:!atlanta

选取在web组中没有出现在atl组的机器

选取主机组的交集

webservers:&staging

选取同时在两个组中的机器

以上逻辑可以复合使用,比如Group1:Group2:&Group3:!Group4

2. 切片

另外ansible也支持对机器组进行切片,不过注意,这里的切片首尾关系和Python稍微不同。

这三台机器为例:

[webservers]
cobweb
webbing
weber
webservers[0:2]     # == webservers[0],webservers[1],webservers[2]
                    # == cobweb,webbing,weber
webservers[1:2]     # == webservers[1],webservers[2]
                    # == webbing,weber
webservers[1:]      # == webbing,weber
webservers[:3]      # == cobweb,webbing,weber

我们这里以Python切片做对比,可以发现Ansible的切片“顾头也顾尾”,但是Python切片索引“顾头不顾尾”

list = [0,1,2,3,4,5]
print(list[1:2])
# [1]

print(list[1:])
# [1, 2, 3, 4, 5]

print(list[:4])
# [0, 1, 2, 3]

你可能感兴趣的:(技术积累,ansible,devops,sre,saltstack)