4,Ansible---Pattern

Patterns

Topics

Patterns

在Ansible中,Patterns 是指我们怎样确定由哪一台主机来管理. 意思就是与哪台主机进行交互. 但是在:doc:playbooks 中它指的是对应主机应用特定的配置或执行特定进程.

我们再来复习下:doc:intro_adhoc 章节中介绍的命令用法,命令格式如下:

ansible <pattern_goes_here> -m <module_name> -a <arguments>

示例如下:

ansible webservers -m service -a "name=httpd state=restarted"

一个pattern通常关联到一系列组(主机的集合) –如上示例中,所有的主机均在 “webservers” 组中.

不管怎么样,在使用Ansible前,我们需事先告诉Ansible哪台机器将被执行. 能这样做的前提是需要预先定义唯一的 host names 或者 主机组.

如下的patterns等同于目标为仓库(inventory)中的所有机器:

all

*

也可以写IP地址或系列主机名:

one.example.com

one.example.com:two.example.com

192.168.1.50

192.168.1.*

如下patterns分别表示一个或多个groups.多组之间以冒号分隔表示或的关系.这意味着一个主机可以同时存在多个组:

webservers

webservers:dbservers

你也可以排队一个特定组,如下实例中,所有执行命令的机器必须隶属 webservers 组但同时不在 phoenix组:

webservers:!phoenix

你也可以指定两个组的交集,如下实例表示,执行命令有机器需要同时隶属于 webservers 和 staging 组.

webservers:&staging

你也可以组合更复杂的条件:

webservers:dbservers:&staging:!phoenix

上面这个例子表示“‘webservers’ 和 ‘dbservers’ 两个组中隶属于 ‘staging’ 组并且不属于 ‘phoenix’ 组的机器才执行命令” ... 哟!唷! 好烧脑的说!

你也可以使用变量如果你希望通过传参指定group,ansible-playbook通过 “-e” 参数可以实现,但这种用法不常用:

webservers:!{{excluded}}:&{{required}}

你也可以不必严格定义groups,单个的host names, IPs , groups都支持通配符:

*.example.com

*.com

Ansible同时也支持通配和groups的混合使用:

one*.com:dbservers

在高级语法中,你也可以在group中选择对应编号的server:

webservers[0]

或者一个group中的一部分servers:

webservers[0-25]

大部分人都在patterns应用正则表达式,但你可以.只需要以 ‘~’ 开头即可:

~(web|db).*\.example\.com

同时让我们提前了解一些技能,除了如上,你也可以通过 --limit 标记来添加排除条件,/usr/bin/ansible or /usr/bin/ansible-playbook都支持:

ansible-playbook site.yml --limit datacenter2

如果你想从文件读取hosts,文件名以@为前缀即可.从Ansible 1.2开始支持该功能:

ansible-playbook site.yml --limit @retry_hosts.txt

时间: 2024-10-06 10:04:35

4,Ansible---Pattern的相关文章

一步一步用jenkins,ansible,supervisor打造一个web构建发布系统

新blog地址:http://hengyunabc.github.io/deploy-system-build-with-jenkins-ansible-supervisor/ 一步一步用jenkins,ansible,supervisor打造一个web构建发布系统. 本来应该还有gitlab这一环节的,但是感觉加上,内容会增加很多.所以直接用github上的spring-mvc-showcase项目来做演示. https://github.com/spring-projects/spring-

Docker培训课程 - 谈docker,chef,puppet,ansible,salt stack延伸

Docker培训课程 - 谈docker,chef,puppet,ansible,salt stack延伸 Docker training course - Discuss docker, chef, puppet, ansible, salt stack Hangout本文翻译自:http://www.slideshare.net/Flux7Labs/docker-training-course-discuss-docker-chef-puppet-ansible-salt-stack-han

19,Ansible角色

1,ansible角色 ansible官方指定的一套统一规范规则叫角色比如我们可以把配置nginx过程抽象成一个nginx角色 同理像redis也是一样可以理解为一个角色,它的配置过程有ansible固定模板 [[email protected] ~]# cd /etc/ansible/roles/ [[email protected] /etc/ansible/roles]# tree . ├── rsync #角色名称 │ ├── files #存放需要copy的文件 │ ├── handl

第一天,ansible 源码学习

ansible 用过一段时间,都是停留在用的阶段,好奇它内部是如何执行,所以准备从源码分析. 分析一个程序,先了解它的执行流程会对学习很有帮助(ps:图片是使用网络的). 从图片中可以知道,ansible 执行的步骤就6步,其中前面第二.第三是确定ansible 要操作的对象.第四步是确定要调用那一个模块,第五步是执行.从ansible文档可以知道,第五步是把模块拷到要执行的机器上,然后通过ssh执行.(原文:Ansible works by connecting to your nodes a

走进自动化运维之Ansible服务部署,附带(参数及模块)详解!

何为Ansible: 简单的自动化运维管理工具,不需要配置代理工具,基于Python研发. Ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架. 自动化运维工具"三剑客": 工具 开发语言 结构 配置文件格式 运行任务 Ansible Python 无 YAML 支持命令行 SaltStack Python C/S YAML 支持命令行 Puppet Ruby C/S Ruby语法格式 通过模块实现 a

Kubernetes 和 Swarm 两种docker集群,基于ansible的自动化安装部署(已测)

Git repo: https://git.oschina.net/yonchin/k8s-x86_64/tree/master/x86?dir=1 注:系统是基于CentOS_7.2,ansible:2.1 简介: kube-ansible-install: 除了安装Kubernetes的主从外,还包括Kubernetes的addons(如dashboard.dns.fluentd-elasticsearch-kibana.heapster-influxdb-grafana等),还包含zabb

《Ansible自动化运维:技术与最佳实践》图书已上架,欢迎大家阅读

本书由资深运维程师联手打造,通过大量实例,详细讲解Ansible这个自动化运维工具的基础原理和使用技巧:从基础的架构解析.安装配置,到典型应用案例分析,作者分享了自己在工作中的实战经验,为各类运维操作.运维开发人员提供了翔实的指南.本书主要内容包括:Ansible架构及安装,Ansible 组件.组件扩展.API,playbook详解,最佳实践案例分析,用ansible-vault保护敏感数据,Ansible与云计算的结合,部署Zabbix组件.Haproxy + LAMP架构,以及Ansibl

ansible 基本概念,ad-hoc操作

ansible 基本概念,ad-hoc操作 ansible 是一个自动化的工具,主要用来管理配置文件,应用部署等作用. 非常高效 通过ssh协议,不需要mq,数据库,agentless的不需要在client上面安装agent,比较轻量级,兼容性比较好. ansible一般参数 并发10个 $ ansible atlanta -a "/sbin/reboot" -f 10 指定user $ ansible atlanta -a "/usr/bin/foo" -u us

使用ansible结合keepalived高可用,nginx反向代理部署小型企业环境

前言: ansible作为一款灵活.高效.功能丰富的自动化部署工具在企业运维管理中备受推崇.本文演示使用ansible部署小型企业服务框架,实现高可用.负载均衡的目标.如有错误敬请赐教. 目标环境拓扑: 环境介绍: 前端代理层由两台nginx实现,并安装keepalived实现地址滑动达成高可用. web层由两套Apache+PHP+WordPress 构建应用环境.数据层由一台mariadb组成,篇幅限制这里并没有做数据库主从复制.读写分离(实际环境数据库一定要实现这两项功能). IP一览:

ansible创建用户时,密码问题

ansible基于模块提供功能,我们常用到用户管理模块-user,ansible不支持明文密码,所以我们在创建一个用户时,若需要设置密码的话则需要预先把密码变为密文才可以. 步骤:1.安装python-pip,并安装加密函数库-passlib [[email protected] ~]# yum -y install python-pip [[email protected] ~]# pip install --upgrade pip [[email protected] ~]# pip ins