# :-: Patterns
[TOC]
`Patterns` 参数用来确定我们在执行 ansible 的时候,对哪些主机进行操作,比如下面:
```
ansible <pattern_goes_here> -m <module_name> -a <arguments>
```
示例:
```
ansible webservers -m service -a "name=httpd state=restarted"
```
这里的 `patterns` 就是 `webserver` 组
> 如果是所有机器,那就是 ansible all
也可以写IP地址或系列主机名:
```
host-1
192.168.1.50
192.168.1.*
group-1[0] #表示group-1组中的第一台主机
group-1[0:20] #表示group-1组中的第一台主机到第二十台主机
```
## patterns 组之间的关系表示
1. 表示隶属于`group-1` 或`group-2`组中的主机
```
group-1:group-2
```
2. 表示隶属于在`group-1`组中,但不在`group-2`组的主机
```
group-1:!group-2
```
3. 表示同时隶属于`group-1`和`group-2`组的主机(交集)
```
group-1:&group-2
```
举个复杂的例子:
在隶属于`group-1`和`grpup-2`的主机中,属于`group-3`组,但又不在`group-4`组的主机
```
group-1:group-2:&group-3:!group-4
```
## 用正则表达式来表示
想用正则表达式,只需要开头使用 `~` 符号
```
~(web|db).*\.server\.host
```
## 使用 —limit 来排除
1. 排除 group-1 组
```
ansible test.yml --limit group-1
```
2. 使用 `@` 排除host
```
ansible-playbook site.yml --limit @hosts.txt
```
