【Ansible 文档】【译文】模式
Patterns 模式
Ansible中的模式是指我们如何决定那些机器执行管理操作。这里意味着与那些主机通信,但是对于playbook,它是指哪些主机应用特定的配置或执行特定程序。
我们将重温一下Introduction To Ad-Hoc Commands部分如何使用命令行,命令格式如下:
ansible <pattern_goes_here> -m <module_name> -a <arguments>
例如:
ansible webservers -m service -a "name=httpd state=restarted"
一个模式,通常指组(主机集)的集合,在上面这个例子中,webservers组机器集合。
不管怎么样,在使用Ansible前,我们首先要知道,如何告诉Ansible与inventory文件中哪些机器通信。 这就需要设计特殊的、专用的、唯一的、 host 名 或者 主机组。
以下的模式是相等的,都是选择所有的主机:
all
*
指定一个特定的主机或者主机名集合也是可以的:
one.example.com
one.example.com:two.example.com
192.0.2.50
192.0..*
下面的模式指定了一个或多个组,组间用冒号分割,表示“或 - OR”,这意味着存在任意一组内都会被选择:
webservers
webservers:dbservers
你也可以排除某一组,例如所有的机器都必须是webservers 中,同时不能在 phoenix 组中:
webservers:!phoenix
你也可以指定俩个组的交集。这意味着只有俩个组中都包含的主机才会被选择:
webservers:&staging
组合使用:
webservers:dbservers:&staging:!phoenix
上面的例子意思是:存在webservers组中或者dbservers组中的主机集合,如果主机也在staging组中而不在phoenix组中,将被选择。
你可以使用变量,如果你想要传递某些组说明符到playbook中,通过 “-e” 参数,但这不是常见用法。
webservers:!{{excluded}}:&{{required}}
你也不必通过严格定义的组来管理。单个的主机名、IPs和组也可以使用通配符指定。
*.example.com
*.com
如果你想同时混合模式和组:
one*.com:dbservers
你可以选择组中的一台主机或者主机子集。例如,在如下的例子时:
[webservers]
cobweb
webbing
weber
你可以指定组中的主机通过添加下标到组名上:
webservers[] # == cobweb
webservers[-] # == weber
webservers[:] # == webservers[],webservers[]
# == cobweb,webbing
webservers[:] # == webbing,weber
大多数不会指定模式为正则表达式,但是你也可以这么做。通过在模式的头部添加一个 '~' 即可:
~(web|db).*\.example\.com
此外,我们可以更进一步,你可以添加一个包含条件,通过提供 --limit 标识到 /usr/bin/ansible 或者 /usr/bin/ansible-playbook:
ansible-playbook site.yml --limit datacenter2
并且,如果你想从文件中获取主机列表,在文件名前面添加‘@’字符。Ansible 1.2之后可用。
ansible-playbook site.yml --limit @retry_hosts.txt
See Introduction To Ad-Hoc Commands and then Playbooks for how to apply this knowledge。
注意:
Ansible 1.9可以使用 “,” 代替“:”作为主机分隔符。“,”是一个更好的方式,当处理ranges和ipv6时。
当Ansible 2.0之后,“;”不再作为主机分隔符。
【Ansible 文档】【译文】模式的更多相关文章
- 【Ansible 文档】【译文】配置文件
这里说明一下配置文件的内容,原文地址:http://docs.ansible.com/ansible/latest/intro_configuration.html 这个与[Ansible 文档]配置 ...
- 【Ansible 文档】【译文】Playbooks 变量
Variables 变量 自动化的存在使得重复的做事情变得很容易,但是我们的系统不可能完全一样. 在某些系统中,你可能想要设置一些与其他系统不一样的行为和配置. 同样地,远程系统的行为和状态也可以影响 ...
- 【Ansible 文档】【译文】Windows 支持
see also:List of Windows Modules Windows Support Windows 支持 Windows: How Does It Work Windows:如何工作 正 ...
- 【Ansible 文档】【译文】Ad-Hoc 命令介绍
Introduction To Ad-Hoc Commands Ad-Hoc命令介绍 下面的例子展示了如何使用 /usr/bin/ansible 来运行ad hoc任务. 什么是ad hoc命令? 一 ...
- 【Ansible 文档】【译文】入门教程
http://docs.ansible.com/ansible/latest/intro_getting_started.html Foreword 前言 到这里,你应该已经安装了Ansible,是时 ...
- 【Ansible 文档】【译文】网络支持
Networking Support 网络支持 Working with Networking Devices 使用网络设备 自从Ansible 2.1开始,你现在可以使用成熟模型 - 编写 play ...
- 【Ansible 文档】【译文】常见问题
http://docs.ansible.com/ansible/latest/faq.html 如何为一个task或者整个Playbook设置PATH或者任意其他环境变量? 通过environment ...
- 【Ansible 文档】【译文】动态inventory
Dynamic Inventory 动态inventory 配置管理系统的用户经常想要保存inventory到不同的软件系统中.Ansible提供了一个基本的基于文本的系统,正如inventory中描 ...
- 【Ansible 文档】【译文】主机清单文件
Inventory 主机清单文件 Ansible 可以对你的基础设施中多个主机系统同时进行操作.通过选择在Ansible的inventory列出的一部分主机来实现.inventory默认保存在/etc ...
随机推荐
- Spring学习之路-从入门到放弃
后台框架是真难入门啊!!!IDE的使用,环境的搭建,框架下载,上手,每一步都恶心人. 花了整整两天,才学会用idea,并且初步了解了maven(TM就是一个npm),然后跟着下载了对应的jar包,搭建 ...
- [转]SQL Collation冲突解决 临时表
本文转自:http://ju.outofmemory.cn/entry/191163 问题描述 在SQL Server中使用一些复杂的存储过程时,我们需要借用临时表来完成一些逻辑的处理,例如:数据的临 ...
- [日常] Go语言圣经--包和文件-导入包习题
1.每个包都有一个全局唯一的导入路径 2.按照惯例,一个包的名字和包的导入路径的最后一个字段相同 练习 2.2: 写一个通用的单位转换程序,用类似cf程序的方式从命令行读取参数,如果缺省的话则是从标准 ...
- 了解java虚拟机---JVM的基本结构(1)
1. JVM的基本结构 1.1. 类加载子系统 类加载子系统负责从文件或者网络中加载Class信息,加载的类信息存放于方法区的内存空间.方法区中可能还会存放运行时常量信息,包括字符串与数字常量.(这部 ...
- putty连接ubuntu:network error:connection refused
原因: ubuntu存在一个bug:在/var/run/目录下缺少一个文件夹sshd 解决方法: 在命令行输入: sudo mkdir /var/run/sshd sudo /usr/sbin/ssh ...
- 洛谷P3586 [POI2015]LOG(贪心 权值线段树)
题意 题目链接 Sol 显然整个序列的形态对询问没什么影响 设权值\(>=s\)的有\(k\)个. 我们可以让这些数每次都被选择 那么剩下的数,假设值为\(a_i\)次,则可以\(a_i\)次被 ...
- Express 框架
Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具.使用 Express 可以快速地搭建一个完整功能的网站 ...
- Mybatis中使用循环遍历
Mybatis中传参数的方法 1.使用注解绑定,mapper.xml 对应方法 不需要指定 parameterType,(推荐使用注解绑定方式) 方法接口: List<CalculateIdea ...
- @NotNull、@NotEmpty、@NotBlank的区别
Spring中@NotNull.@NotEmpty.@NotBlank的区别@NotNull:用于基本数据类型@NotEmpty:用于集合类@NotBlank:用于String上面
- 使用openpyxl模块将Excel中的数据导入数据库
这里将不介绍openpyxl模块的详细操作. 主要就是记录一个使用openpyxl模块将Excel表格的数据导入数据库中的实例. from openpyxl import load_workbook ...