Ansible之 Patterns

Ansible 之 Patterns

1.Ansible中的Patterns决定了我们要管理哪个主机,意思是与哪些主机进行交互。

我们将在Ad-Hoc(Ad-Hoc 是指 临时执行的命令,要结合着模块进行使用,可通过ansible-doc -l查看模块的列表)命令行中进行介绍,

本文中,ansible 的hosts 清单文件内容如下:

[[email protected] ~]# cat /etc/ansible/hosts
[centos_group]
172.17.0.2
172.17.0.3

[webserver]
web1 ansible_port=222 ansible_host=172.17.0.4
172.17.0.3

[centos:children]
centos_group
webserver

先看下命令行模式的语法:

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

示例:

[[email protected] ~]# ansible webserver -m shell -a "date"
web1 | SUCCESS | rc=0 >>
Mon Feb 20 15:15:50 CST 2017

-m 模块名,默认不指定,使用的是command 模块。
-a 模块参数,可通过 `ansible-doc 模块名` 查看具体使用方法

在上面的示例中 pattern_goes_here 指的是webserver 组中的计算机,

下面的两条命令中的patterns 等价于使用清单中内的所有主机

[[email protected] ~]# ansible "*" -m shell -a "date"
[[email protected] ~]# ansible all -m shell -a "date"

也可以按指定ip地址,如:

[[email protected] ~]# ansible 172.17.0.2 -m ping
172.17.0.2 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
[[email protected] ~]# ansible 172.17.0.* -m ping
172.17.0.3 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
172.17.0.2 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

有个有趣的小发现,不知当桨不当桨。ping 对应的是 pong,是乒乓的意思么?

patterns 是一个组,也可用 冒号:分割,添加另外一个组,表示主机可以在这个组或者另一组中。

如下:

[[email protected] ~]# ansible centos_group:webserver -m ping
172.17.0.3 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
web1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
172.17.0.2 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

也可以排除某个组相同的主机,如所有计算机必须在centos_group组中 且不在webserver 组中,用 :!来表示(!、& 会被bash 解释,所以需要加转义符),如下:

[[email protected] ~]# ansible centos_group:\!webserver -m ping
172.17.0.2 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

还可以指定两个组的交集,意味着主机必须即在webserver 组中,又在centos_group组中,用:& 表示,如下:

[[email protected] ~]# ansible centos_group:\&webserver -m ping
172.17.0.3 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

另外也可以根据数组下标来选择组内的主机,如下:

[[email protected] ~]# ansible centos_group[0] -m ping
172.17.0.2 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

当然,还有高级的用法,如利用通配符,以及正则的方式来匹配主机。

等下再来学习Ad-Hoc 命令的使用吧。

注:本文属于飞走不可原创,如有转载,请务必在文首注明出处。飞走不可:=_= http://www.cnblogs.com/hanyifeng/p/6193249.html

时间: 2024-10-15 06:51:30

Ansible之 Patterns的相关文章

ansible(二)基础篇

这篇总结一下Inventory,变量,目标匹配,及/usr/bin/ansible 命令行常用的模块 上一篇也说过Inventory的默认路径是在/etc/ansible/hosts,当然这个东西可以说是静态的,为啥是静态呢,你要手工的把你的要管理的主机写进去. 当然还有一种动态的Inventory,这个其实也简单,就是如果你已经有了一个资源管理系统,里面有你们的所有主机信息.然后咱们写个脚本程序,把你们资源管理系统里面的这些信息给拉过来,以json格式呈现就OK了. 其实ansible还有一种

运维神器 ansible 安装部署

抽空研究下自动运维神器 ,ansible ,基于SSH的管理,不需要agent 核心:ansible 核心模块(Core Modules):这些都是ansible自带的模块? 扩展模块(Custom Modules):如果核心模块不足以完成某种功能,可以添加扩展模块 插件(Plugins):完成模块功能的补充 剧本(Playbooks):ansible的任务配置文件,将多个任务定义在剧本中,由ansible自动执行 连接插件(Connectior Plugins):ansible基于连接插件连接

4,Ansible---Pattern

Patterns Topics Patterns 在Ansible中,Patterns 是指我们怎样确定由哪一台主机来管理. 意思就是与哪台主机进行交互. 但是在:doc:playbooks 中它指的是对应主机应用特定的配置或执行特定进程. 我们再来复习下:doc:intro_adhoc 章节中介绍的命令用法,命令格式如下: ansible <pattern_goes_here> -m <module_name> -a <arguments> 示例如下: ansible

Ansible 小手册系列 六(Patterns 匹配模式)

Patterns 是定义Ansible要管理的主机.但是在playbook中它指的是对应主机应用特定的配置或IT流程. 命令格式 命令行 ansible <host-pattern> [options] playbook 中 - hosts: <host-pattern> 使用示例 ansible \* -m service -a "name=httpd state=restarted" Patterns 使用 匹配所有的主机 all * # 命令行中使用 \进

ansible 系列教程

ansible 核心组件介绍 Architecture Diagram ansible core host iventory core modules custom modules playbook (yaml) connetc plugin  ansibles 的特性 基于python语言实现,有paramiko,Pyyaml和jinjia2 三个关键模块 部署简单,agegtlees,默认使用SSH协议 基于密钥认证 在inventory 文件中指定账号和密码 支持playbook基于"模块

Ansible专题整理

Ansible 专题文章总览 Ansible小手册,仅供参考 文章如未明确说明实验环境,默认如下: OS:Centos 6.7 x86_64 Ansible: 2.1.2.0 Python: 2.6.6 Ansible 小手册系列 一(介绍) Ansible 小手册系列 二(安装) Ansible 小手册系列 三(命令介绍) Ansible 小手册系列 四(详解配置文件) Ansible 小手册系列 五(inventory 主机清单) Ansible 小手册系列 六(Patterns 匹配模式)

CLOUD 1: ansible

1.系统一致性2.软件版本一致性3.安装路径一致性 选择ansible 1.活跃度2.学习成本3.使用成本4.编码语言5.性能6.使用是否广泛 安装ansible? ansible 可以基亍源码运行? 源码安装– pip,需要配置扩展软件包源 extras– gityum install epel-releaseyum install git python2-pip– pip安装依赖模块pip install paramiko PyYAML Jinja2 httplib2 six? ansibl

自动化运维工具Ansible实战(二)主机清单的管理

Ansible安装好之后的主机清单配置文件有如下两种:1.yum安装,配置文件默认路径为:/etc/ansible/hosts2.源码包安装,主机清单配置文件路径需要从软件包里面拷贝,如下: [[email protected] ~]# mkdir /etc/ansible --创建ansible目录 [[email protected] ~]# cp /usr/src/ansible-2.5.0/examples/hosts /etc/ansible/ --拷贝文件(已拷贝忽略就好了) Ans

Ansible 配置文件详细描述

# config file for ansible -- https://ansible.com/ # =============================================== # nearly all parameters can be overridden in ansible-playbook # or with command line flags. ansible will read ANSIBLE_CONFIG, # ansible.cfg in the cur