ansible相关说明
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 配置文件,以下是对默认文件修改
# 注意,ansible的执行用户为普通用户,因为每个机器都做了sudo,所以ansible.cfg需要设置切换root操作,以下列出修改
[privilege_escalation]
# become=True # 取消总是以root执行,需要时加参数切换
become_method=sudo
become_user=root
become_ask_pass=False
# 以下是修改之后的执行效果,注意看输出
ansible lzcx -m shell -a "whoami"
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文件的几种配置方法,举例说明,不一定用在这个实验环境
# 未分组的主机,添加在最前面
192.168.1.1.212
# 添加一个分组,并指定ip区域
[centos6]
192.168.1.[216:217]
# 指定连接类型和连接用户
[target1]
localhost ansible_connection=local
192.168.1.213 ansible_connection=ssh
ansible_ssh_user=operation
# 配置主机变量
[target2]
host1 http_port=80
host2 http_port=80 var2=xxx var3=xxx
# 添加关键字var,配置组变量,对属于该组的所有主机都适用
[target2:var]
var4=xxx
var5=xxx
# 添加关键字children,把组作为其他组的子成员
[target3:children]
target1
target2
2.5、主机列表的执行匹配规则
匹配规则主要有以下几种
逻辑匹配:全量 all/* 、逻辑或 | 、逻辑非 ! 、逻辑与 & 、切片 []
正则匹配:见下文详解
以下列举各种匹配类型
指定主机ip:直接指定ip运行,这里指定包括数字和字母指定
# 例
ansible 192.168.1.216 -m shell -a 'date'
指定主机名:前提是先将ip和主机名添加到系统hosts文件才能识别,将主机名添加到ansible的hosts文件,执行命令检查是否成功
# 例
echo '192.168.1.214 yuhui' >> /etc/hosts
echo 'yuhui' >> /etc/ansible/hosts
# 指定主机名
ansible yuhui -m shell -a 'date'
指定组名:组名指的是ansible目录下hosts文件的组名
# 例
ansible centos6 -m shell -a 'date'
ansible中正则匹配详解
匹配所有的主机:all
ansible all -a 'hostname'
匹配规则性主机或主机名
# 匹配后缀是 yk 的主机组
ansible *yk -a 'uptime'
匹配多个组的主机,中间用 : 隔开(或操作),可匹配多个主机组,格式 group_name:group_name:group_name...
# 匹配 mysql 和 centos6 2个主机组
ansible mysql:centos6 -a 'uptime'
# 匹配 mysql、centos6、gzyk 3个主机组
ansible mysql:centos6:gzyk -a 'uptime'
在某个组而不在其他组(非操作)
# 匹配在 my_vm 组但不在 centos6 组的主机,注意匹配范围是用 单引号'' 包含,双引号会报错
ansible 'my_vm:!centos6' -a 'hostname'
匹配两个组的交集(与操作)
# 匹配 my_vm 和 centos6 共有的主机
ansible 'my_vm:¢os6' -a 'hostname'
匹配一个组的特定主机
# 匹配 my_vm 组内的第二和第三个主机,应用了python的切片
ansible my_vm[1:2] -a 'date'
混合匹配
# 匹配 my_vm 和 yuhui组但不包含 centos6 组的主机
ansible 'my_vm:yuhui:!centos6' -a 'date'
匹配关键字开头:~
# 匹配 192.168.1.21 开头的主机
ansible '~192.168.1.21*' -a 'hostname'
指定执行 --limit 用法,ansible和ansible-playbook都支持
# 指定 my_vm 组里面的 192.168.1.216 执行
ansible my_vm -a 'hostname' --limit=192.168.1.216
# 用limit指定my_vm组里面的192.168.1.21前缀主机
ansible my_vm -a 'hostname' --limit=192.168.1.21*
ansible my_vm -a 'hostname' --limit=~192.168.1.21*
ansible相关说明的更多相关文章
- Ansible 相关介绍
相关视频http://v.xue.taobao.com/learn.htm?spm=a220o.1000855.0.0.24c748e6QMQV0e&courseId=111848 Ansib ...
- ansible相关
上图为ansible的基本架构,从上图可以了解到其由以下部分组成: 核心:ansible 核心模块(Core Modules):这些都是ansible自带的模块 扩展模块(Custom Modules ...
- ansible playbook实践(二)-基础相关命令
ansible相关的命令: ansible 用来执行ansible管理命令 ansible-doc 用来获取模块的帮助文档 ansible-playbook 当有众多任务时,可编写成playbook ...
- Ansible系列(二):选项和常用模块
html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...
- ansible服务部署与使用
第1章 ssh+key实现基于密钥连接(ansible使用前提) 说明: ansible其功能实现基于SSH远程连接服务 使用ansible需要首先实现ssh密钥连接 1.1 部署ssh ...
- ansible服务及剧本编写
第1章 ansible软件概念说明 python语言是运维人员必会的语言,而ansible是一个基于Python开发的自动化运维工具 (saltstack).其功能实现基于SSH远程连接服务:ansi ...
- ansible基础及使用示例
1 介绍 Ansible 是一个系统自动化工具,用来做系统配管理,批量对远程主机执行操作指令. 2 实验环境 ip 角色 192.168.40.71 ansible管控端 192.168.40.72 ...
- Ansible学习总结(1)
---恢复内容开始--- 1. Ansible概述 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric) ...
- 【Ansible】 基于SSH的远程管理工具
[Ansible] 参考文档:[http://www.ansible.com.cn/docs/intro.html] 和ansible类似的工具还有saltstack,puppet,sshpass等, ...
随机推荐
- Net4.6 Task 异步函数 比 同步函数 慢5倍 踩坑经历
Net4.6 Task 异步函数 比 同步函数 慢5倍 踩坑经历 https://www.cnblogs.com/shuxiaolong/p/DotNet_Task_BUG.html 异步Task简单 ...
- Java-Runoob-高级教程-实例-字符串:13. Java 实例 - 字符串格式化
ylbtech-Java-Runoob-高级教程-实例-字符串:13. Java 实例 - 字符串格式化 1.返回顶部 1. Java 实例 - 字符串格式化 Java 实例 以下实例演示了通过 f ...
- 杂项-Java:Thymeleaf
ylbtech-杂项-Java:Thymeleaf Thymeleaf is a modern server-side Java template engine for both web and st ...
- h5 页面设计尺寸
请注意:(以下所有讨论内容和规范均将viewport设定为content=”width=device-width”的情况下) 也就是我们的H5页面前端代码里面必须包含 <meta content ...
- CGAN 论文笔记
<Conditional Generative Adversarial Nets>: 发表于2014 computer Science.作者提出了最简单的条件控制GAN模型,在D和G两个模 ...
- 09年OA系统集成商资料(转载)
[转载]哪个OA比较好,18家常见OA系统全方位大阅兵 原文地址:http://ec.zdnet.com.cn/managesoft/2009/1104/1503211.shtml 凡是比较或者评测的 ...
- CodeForces 723D Lakes in Berland (dfs搜索)
题意:给定一个n*m的矩阵,*表示陆地, . 表示水,一些连通的水且不在边界表示湖,让你填最少的陆地使得图中湖剩下恰好为k. 析:很简单的一个搜索题,搜两次,第一次把每个湖的位置和连通块的数量记下来, ...
- bzoj 2750: [HAOI2012]Road【spfa+dfs】
枚举起点做spfa,然后一条边在最短路上的条件是dis[e[i].to]==dis[u]+e[i].va,所以每次spfa完之后,dfs出a[i]表示经过i点的最短路的起点数,b[i]表示经过i点的最 ...
- bzoj 1614: [Usaco2007 Jan]Telephone Lines架设电话线【二分+spfa】
二分答案,然后把边权大于二分值的的边赋值为1,其他边赋值为0,然后跑spfa最短路看是否满足小于等于k条边在最短路上 #include<iostream> #include<cstd ...
- bzoj 3944: Sum【莫比乌斯函数+欧拉函数+杜教筛】
一道杜教筛的板子题. 两个都是积性函数,所以做法是一样的.以mu为例,设\( f(n)=\sum_{d|n}\mu(d) g(n)=\sum_{i=1}^{n}f(i) s(n)=\sum_{i=1} ...