ansible基本使用
ansible介绍
基础概念
ansible是个配置管理工具,可以批量处理一些任务。ansible只需要依赖ssh即可使用,而不需要在受管主机上安装客户端工具。
ansible具有幂等性,即以结果为导向。比如,当我们拉取文件到本地时,如果本地有该文件则不再拉取,如果本地没有该文件则拉取。
使用ansible需要满足两个基本条件:
- ansible所在的主机可以通过ssh连接到受管主机;
- 受管主机的信息已经添加到ansible的管理清单中。
安装配置
安装
首先使用pip可以安装ansible
sudo pip install ansible
安装方法有多种,可参考: https://ansible-tran.readthedocs.io/en/latest/docs/intro_installation.html
基于密码连接配置
ansible的管理清单文件是/etc/ansible/hosts
在该文件底部加上:
192.168.0.45 ansible_port=22 ansible_user=root ansible_ssh_pass=123456
ansible_port:端口号
ansible_user:用户名
ansible_ssh_pass:密码
然后就可以使用命令了,如ansible 192.168.0.45 -m ping
使用ip地址比较麻烦,我们可以为主机指定别名
test ansible_host=192.168.0.45 ansible_port=22 ansible_user=root ansible_ssh_pass=123456
然后就可以使用别名进行连接,ansible test -m ping
基于密钥连接配置
修改配置文件为
192.168.0.45 ansible_port=22
使用别名时改为
test ansible_host=192.168.0.45 ansible_port=22
当有多个密钥时可以使用ssh-agent进行管理,也可以在配置中通过ansible_ssh_private_key_file指定连接主机使用的密钥。
清单配置详解
INI格式
以上介绍的都是对一个主机执行命令,实际上可以对多台机器同时进行
ansible all -m ping
上面的命令是对配置文件中所有的机器执行ping命令,由此得到启发,对某一部分机器执行相同的命令,所以就需要对机器进行分组。
[A]
192.168.0.45
192.168.0.46
[B]
192.168.0.47
所以可以对某一个组内的机器执行同一个命令
ansible A -m ping
当ip地址连续时也可以采用如下方式
[A]
192.168.0.[45:46]
同样的,如果是域名中某个字母是连续的也可以采用类似的方式
[A]
suraer-a.book.net
suraer-b.book.net
[A]
suraer-[a:b].book.com
当组之间有包含关系时,还可以使用子组的方式,如下
[A]
192.168.0.45
[B]
192.168.0.46
[C:children]
[A]
[B]
等价于
[A]
192.168.0.45
[B]
192.168.0.46
[C]
192.168.0.45
192.168.0.46
YAML格式
# YAML格式
all:
hosts:
192.168.0.45
192.168.0.46
# 对应的INI配置
192.168.0.45
192.168.0.46
采用YAML格式有两个要注意的地方:
- 各级之间采用一个空格递进,不能使用tab键
- 分组需要用hosts关键字
下面举两个栗子说明YAML格式与INI格式之间的转换关系:
# INI格式
192.168.0.47
[A]
192.168.0.45
[B]
192.168.0.46
# YAML格式
all:
hosts:
192.168.0.47
children:
A:
hosts:
192.168.0.45
B:
hosts:
192.168.0.46
# INI格式
[A]
192.168.0.45
[B]
192.168.0.46
[C:children]
[A]
[B]
# YAML格式
all:
children:
C:
children:
A:
hosts:
192.168.0.45
B:
hosts:
192.168.0.46
YAML格式同样可以使用别名,如下:
# INI格式
192.168.0.45
test ansible_host=192.168.0.46 ansible_port=22
192.168.0.47
# YAML格式
all:
hosts:
192.168.0.45
test:
ansible_host: 192.168.0.46
ansible_port: 22
192.168.0.47
注意,上面的冒号后面一定要有空格。
ansible模块
在前面的例子中,我们都是使用ping模块,实际上ansible有许多模块,可以使用如下命令查看那ansible有哪些模块:
ansible-doc -l
查看具体模块的详细使用方法,使用如下命令:
ansible-doc -s fetch
查看了命令就可以对照参数进行使用了,比如将A组中的所有主机的/etc/fstab文件拉取到本地:
ansible A -m fetch -a "src=/etc/fstab dest=/test/ansible"
上面命令-m表示使用那个模块,-a表示使用的参数,上面例子中使用了两个参数src和dest。
查看更多模块参考: http://docs.ansible.com/ansible/latest/modules_by_category.html
ansible基本使用的更多相关文章
- 如何利用ansible callback插件对执行结果进行解析
最近在写一个批量巡检工具,利用ansible将脚本推到各个机器上执行,然后将执行的结果以json格式返回来. 如下所示: # ansible node2 -m script -a /root/pyth ...
- 《Ansible权威指南》笔记(2)——Inventory配置
四.Inventory配置ansible通过Inventory来定义主机和组,使用时通过-i指定读取,默认/etc/ansible/hosts.可以存在多个Inventory,支持动态生成.1.定义主 ...
- useful Ansible commands
This article includes some useful Ansible commands. I will try to write blogs by English. You may wa ...
- 《Ansible权威指南》笔记(4)——Playbook
七.Playbook1.语法特性如下:(1)"---"首行顶格开始(2)#号注释(3)缩进统一,不同的缩进代表不同的级别,缩进要对齐,空格和tab不能混用(4)区别大小写,键值对k ...
- 《Ansible权威指南》笔记(3)——Ad-Hoc命令集,常用模块
五.Ad-Hoc命令集1.Ad-Hoc命令集通过/usr/bin/ansible命令实现:ansible <host-pattern> [options] -v,--verbose ...
- 《Ansible权威指南》笔记(1)——安装,ssh密钥登陆,命令
2016-12-23 读这本<Ansible权威指南>学习ansible,根据本书内容和网上的各种文档,以及经过自己测试,写出以下笔记.另,这本书内容很好,但印刷错误比较多,作者说第二版会 ...
- 自动化运维工具ansible部署以及使用
测试环境master 192.168.16.74webserver1 192.168.16.70webserver2 192.168.16.72安装ansiblerpm -Uvh http://ftp ...
- Ansible Ubuntu 安装部署
一.安装: $ sudo apt-get install ansible 二.配置: a.基本配置 $ cd /etc/ansible/ $ sudo cp hosts hosts_back 备份一个 ...
- Ansible 模块命令介绍
copy模块: 目的:把主控端/root目录下的a.sh文件拷贝到到指定节点上 命令:ansible 10.1.1.113 -m copy -a 'src=/root/a.sh dest=/tmp/' ...
- 用Vagrant和Ansible搭建持续交付平台
这是一个关于Vagrant的学习系列,包含如下文章: Vagrant入门 创建自己的Vagrant box 用Vagrant搭建Jenkins构建环境 用Vagrant和Ansible搭建持续交付平台 ...
随机推荐
- react-redux: async promise
1.the simple sample action: 事实上,只是返回个一个至少包含type的对象{ },用于reducer接收. import {RECEIVE_DATA} from " ...
- 2017.11.16 STM8L052 温度控制器
1 J-link和ST-link的兼容性 STM8只能用ST-link.J-link兼容所有的(大部分而已)的ARM内核IC mark: http://bbs.eeworld.com.cn/thre ...
- 2017.11.03 正确查找datasheet+ 英语邮件+英语会议
1寻找合适的元器件和替代料 你需要十分了解元器件的性能参数,如下图所示,所有的主要参数都在列表显示. 2如何在datasheet网找适合的元器件? a如果知道P/N,直接输入. b不知道p/n ,你就 ...
- php调用API支付接口(转自刘68)
首先访问 https://charging.teegon.com/ 注册账号, 找到开发配置 记下client_id和client_secret. 点击 天工开放平台 点击天工收银 点击 S ...
- 你真的对java static了解吗,代码优化可能更加简单
static修饰的成员变量和成员方法独立于该类的任何对象.也就是说,它不依赖类特定的实例,被类的所有实例共享. 只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们.因此,s ...
- mysql 视图,触发器,存储
一.视图 概念:其实就是一个临时表. 视图是一个虚拟表(非真实存在的),其本质是[根据SQL语句获取动态的数据库,并为其命名],用户使用时只需使用[名称]即可获取结果集.就可以当做表来使用. # 1. ...
- PTA L3-023 计算图 (dfs+数学推导)
“计算图”(computational graph)是现代深度学习系统的基础执行引擎,提供了一种表示任意数学表达式的方法,例如用有向无环图表示的神经网络. 图中的节点表示基本操作或输入变量,边表示节点 ...
- WCF+上传+大文件处理
大文件处理的方式拆分读取,此文只为记录文件处理方式,供日后查阅. 源码来自http://blog.csdn.net/lywust/article/details/7009248 经过改编将源码改编为文 ...
- DispatcherServlet的处理流程
前言 上一篇介绍了SpringMVC的启动过程,DispatcherServlet作为一个前端控制器,分发处理http请求 1.DispatcherServlet流程图 具体流程: 1. 用户发请求- ...
- 十六、python沉淀之路--迭代器
一.迭代器 1.什么是迭代器协议:对象必须提供一个next方法,执行该方法要返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代(只能往后走,不能往前走). 2.可迭代对象:实 ...