2、ansible相关说明

2.1、ansible相关命令

ansible:定义并运行简单任务,主要执行ad-hoc命令

ansible-config:查看、编辑、管理ansible配置

ansible-connection

ansible-console:repl控制台执行ansible任务

ansible-doc:文档查看工具。控制台输入 ansible-doc -h 查看帮助各个参数说明,查看playbook片段使用 ansible-doc -s yum , 详细说明可以使用 -v -vvv -vvvv 参数

ansible-galaxy:共享和下载roles的工具

ansible-inventory:查看inventory的信息,可以把hosts的ini格式转成想要的json或者yaml

ansible-playbook:执行playbookansible-pull:从仓库中拉去playbook

ansible-vault:文件加密工具重点掌握ansible和ansible-playbook命

ansible-pull: 默认使用的是push模式,pull模式相反;适用于数量巨大的机器配置;没有网络连接的机器运行

2.2、ansible命令

格式:ansible <host_name/inventory_file> -m <module_name> -a

例子:ansible all -m shell -a 'date'

常见可选参数:

-m 模块名,默认不指定模式时,使用的是command模块。

-a 针对模块的具体命令,用单引号包含

-f 并行执行的设备数(默认5)

-o 简化输出(一行输出)

-i 指定 inventory 的路径(默认为 /etc/ansible/hosts)

-u 执行用户(默认root)

-P 后台执行(后跟数字表示隔多少秒轮询一次,为0表示静默执行)

-B 最大执行时长(单位秒)

-t 输出结果重定向

--syntax-check playbook语法检查,不执行

2.3、ansible主要配置文件

/etc/ansible/ansible.cfg 配置文件,以下是对默认文件修改

  1. # 注意,ansible的执行用户为普通用户,因为每个机器都做了sudo,所以ansible.cfg需要设置切换root操作,以下列出修改
  2. [privilege_escalation]
  3. # become=True # 取消总是以root执行,需要时加参数切换
  4. become_method=sudo
  5. become_user=root
  6. become_ask_pass=False
  1. # 以下是修改之后的执行效果,注意看输出
  2. ansible lzcx -m shell -a "whoami"
  3. ansible lzcx -m shell -a "whoami" -b

/etc/ansible/hosts 主机库(host inventory)

/etc/ansible/roles/ 公共角色,主要在自动化部署多台主机时应用

/usr/bin ansible执行命令存放目录,ansible,ansible-doc,ansible-playbook等等

2.4、inventory介绍

Inventory 文件遵循 ini 文件风格,[] 标记分组,方便对机器列表的管理

inventory 支持配置设置支持 ip,主机名,ip区域,ssh端口,连接类型(默认ssh)和连接用户,主机变量,添加关键字作为配置组变量

静态 Inventory 指的是在文件中指定的主机和组,动态 Inventory 指通过外部脚本获取主机列表,并按照 ansible 所要求的格式返回给 ansilbe 命令的。

设置组名时,尽量选择有意义的名字

以下是hosts文件的几种配置方法,举例说明,不一定用在这个实验环境

  1. # 未分组的主机,添加在最前面
  2. 192.168.1.1.212
  3. # 添加一个分组,并指定ip区域
  4. [centos6]
  5. 192.168.1.[216:217]
  6. # 指定连接类型和连接用户
  7. [target1]
  8. localhost ansible_connection=local
  9. 192.168.1.213 ansible_connection=ssh
  10. ansible_ssh_user=operation
  11. # 配置主机变量
  12. [target2]
  13. host1 http_port=80
  14. host2 http_port=80 var2=xxx var3=xxx
  15. # 添加关键字var,配置组变量,对属于该组的所有主机都适用
  16. [target2:var]
  17. var4=xxx
  18. var5=xxx
  19. # 添加关键字children,把组作为其他组的子成员
  20. [target3:children]
  21. target1
  22. target2

2.5、主机列表的执行匹配规则

匹配规则主要有以下几种

逻辑匹配:全量 all/* 、逻辑或 | 、逻辑非 ! 、逻辑与 & 、切片 []

正则匹配:见下文详解

以下列举各种匹配类型

指定主机ip:直接指定ip运行,这里指定包括数字和字母指定

  1. # 例
  2. ansible 192.168.1.216 -m shell -a 'date'

指定主机名:前提是先将ip和主机名添加到系统hosts文件才能识别,将主机名添加到ansible的hosts文件,执行命令检查是否成功

  1. # 例
  2. echo '192.168.1.214 yuhui' >> /etc/hosts
  3. echo 'yuhui' >> /etc/ansible/hosts
  4. # 指定主机名
  5. ansible yuhui -m shell -a 'date'

指定组名:组名指的是ansible目录下hosts文件的组名

  1. # 例
  2. ansible centos6 -m shell -a 'date'

ansible中正则匹配详解

匹配所有的主机:all

  1. ansible all -a 'hostname'

匹配规则性主机或主机名

  1. # 匹配后缀是 yk 的主机组
  2. ansible *yk -a 'uptime'

匹配多个组的主机,中间用 : 隔开(或操作),可匹配多个主机组,格式 group_name:group_name:group_name...

  1. # 匹配 mysql 和 centos6 2个主机组
  2. ansible mysql:centos6 -a 'uptime'
  3. # 匹配 mysql、centos6、gzyk 3个主机组
  4. ansible mysql:centos6:gzyk -a 'uptime'

在某个组而不在其他组(非操作)

  1. # 匹配在 my_vm 组但不在 centos6 组的主机,注意匹配范围是用 单引号'' 包含,双引号会报错
  2. ansible 'my_vm:!centos6' -a 'hostname'

匹配两个组的交集(与操作)

  1. # 匹配 my_vm 和 centos6 共有的主机
  2. ansible 'my_vm:&centos6' -a 'hostname'

匹配一个组的特定主机

  1. # 匹配 my_vm 组内的第二和第三个主机,应用了python的切片
  2. ansible my_vm[1:2] -a 'date'

混合匹配

  1. # 匹配 my_vm 和 yuhui组但不包含 centos6 组的主机
  2. ansible 'my_vm:yuhui:!centos6' -a 'date'

匹配关键字开头:~

  1. # 匹配 192.168.1.21 开头的主机
  2. ansible '~192.168.1.21*' -a 'hostname'

指定执行 --limit 用法,ansible和ansible-playbook都支持

  1. # 指定 my_vm 组里面的 192.168.1.216 执行
  2. ansible my_vm -a 'hostname' --limit=192.168.1.216
  3. # 用limit指定my_vm组里面的192.168.1.21前缀主机
  4. ansible my_vm -a 'hostname' --limit=192.168.1.21*
  5. ansible my_vm -a 'hostname' --limit=~192.168.1.21*

ansible相关说明的更多相关文章

  1. Ansible 相关介绍

    相关视频http://v.xue.taobao.com/learn.htm?spm=a220o.1000855.0.0.24c748e6QMQV0e&courseId=111848 Ansib ...

  2. ansible相关

    上图为ansible的基本架构,从上图可以了解到其由以下部分组成: 核心:ansible 核心模块(Core Modules):这些都是ansible自带的模块 扩展模块(Custom Modules ...

  3. ansible playbook实践(二)-基础相关命令

    ansible相关的命令: ansible  用来执行ansible管理命令 ansible-doc 用来获取模块的帮助文档 ansible-playbook 当有众多任务时,可编写成playbook ...

  4. Ansible系列(二):选项和常用模块

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...

  5. ansible服务部署与使用

    第1章 ssh+key实现基于密钥连接(ansible使用前提) 说明:    ansible其功能实现基于SSH远程连接服务    使用ansible需要首先实现ssh密钥连接 1.1 部署ssh ...

  6. ansible服务及剧本编写

    第1章 ansible软件概念说明 python语言是运维人员必会的语言,而ansible是一个基于Python开发的自动化运维工具 (saltstack).其功能实现基于SSH远程连接服务:ansi ...

  7. ansible基础及使用示例

    1 介绍 Ansible 是一个系统自动化工具,用来做系统配管理,批量对远程主机执行操作指令. 2 实验环境 ip 角色 192.168.40.71 ansible管控端 192.168.40.72 ...

  8. Ansible学习总结(1)

    ---恢复内容开始--- 1. Ansible概述 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric) ...

  9. 【Ansible】 基于SSH的远程管理工具

    [Ansible] 参考文档:[http://www.ansible.com.cn/docs/intro.html] 和ansible类似的工具还有saltstack,puppet,sshpass等, ...

随机推荐

  1. 并不对劲的AC自动机

    这像是能解决所有问题的样子(并不).AC自动机之所以叫AC自动机是因为它能解决所有AC自动机的题. 其实只能解决的是很多模式串匹配一个母串的问题. 把kmp中的next数组得到下一次跳转的位置看成特殊 ...

  2. JS计算字符串实际长度

    http://www.qttc.net/201207136.html // UTF8字符集实际长度计算 function getStrLeng(str){ var realLength = 0; va ...

  3. UVa 1471 Defense Lines (二分+set优化)

    题意:给定一个序列,然后让你删除一段连续的序列,使得剩下的序列中连续递增子序列最长. 析:如果暴力枚举那么时间复杂度肯定受不了,我们可以先进行预处理,f[i] 表示以 i 结尾的连续最长序列,g[i] ...

  4. 51nod 1237 最大公约数之和 V3【欧拉函数||莫比乌斯反演+杜教筛】

    用mu写lcm那道卡常卡成狗(然而最后也没卡过去,于是写一下gcd冷静一下 首先推一下式子 \[ \sum_{i=1}^{n}\sum_{j=1}^{n}gcd(i,j) \] \[ \sum_{i= ...

  5. java-使用反射实现ORM映射

    自定义两个注解 package com.moon.ROM; import java.lang.annotation.ElementType; import java.lang.annotation.R ...

  6. USACO Training刷题记录 By cellur925

    Section 1.1 Your Ride Is Here 貌似没啥可说 Greedy Gift Givers 上来就想stl map映射,有两个坑:如果送给别人的人数为0,那么需要特判一下,防止整数 ...

  7. 解决Robot Framework运行时没有Log的方案

    Robot Framework自动化测试过程中,运行多次后会出现RIDE没有log的情况. 造成这种现象的原因是: 执行失败的测试用例,chrome.exe和chromedriver.exe进程没有关 ...

  8. NDK(18)eclipse 使用C++ STL

    1.引用库 在Application.mk 中使用 APP_STL := stlport_static 等. APP_ABI := x86 armeabi APP_PLATFORM := androi ...

  9. [转]asp.net MVC helper 和自定义函数@functions小结

    本文转自:http://www.cnblogs.com/jiagoushi/p/3904995.html asp.net Razor 视图具有.cshtml后缀,可以轻松的实现c#代码和html标签的 ...

  10. 一个小方法解决RGBA不兼容IE8

    原网页http://blog.csdn.net/leihope_/article/details/70158902 要在一个页面中设置一个半透明的白色div.这个貌似不是难题,只需要给这个div设置如 ...