Ansible安装 入门教程
learn一门新技术咯:
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:(1)、连接插件connection plugins:负责和被监控端实现通信;(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;(3)、各种模块核心模块、command模块、自定义模块;(4)、借助于插件完成记录日志邮件等功能;(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
参考文章: https://blog.csdn.net/dylloveyou/column/info/22050, https://ansible-tran.readthedocs.io/en/latest/docs/intro_installation.html
1. ansible安装
# 首先配置一下源 (不必要)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo # 安装
yum install -y ansible
2. ansible 命令格式
Usage: ansible <host-pattern> [options]
-a MODULE_ARGS # 模块参数
-C, --check #不做任何改变,但是会执行
-f FORKS, --forks=FORKS # 用来指定并发
--list-hosts #列出主机列表
-m MODULE_NAME #模块 名
--syntax-check #语法检查
-k, --ask-pass #输入密码
3. ssh 生成密钥
ansible 底层是通过ssh来实现的, ping 走的是ICMP协议
ssh-keygen # 生成密钥对
ssh-copy-id ip地址 # 将密钥对复制到远程机器
使用ssh-copy-id批量拷贝公钥到远程主机 https://segmentfault.com/a/1190000009832597
4. host-pattern 格式 配置
vi /etc/ansible/hosts
## 被管理机ip
192.168.14.144
192.168.14.164
192.168.14.165 ## 分组 ( 所有, 开发, 数据库 )
[all]
192.168.14.144
192.168.14.164
192.168.14.165 [web]
192.168.14.144
192.168.14.164 [db]
192.168.14.164
192.168.14.165
单个主机
多个主机,用逗号做分割
全部主机,用all表示
单个组
多个组
交集 ‘db:&web’
并集
web,db
‘web:db’
差集 ‘web:!db’
5. ansible的第一个命令
ansible 192.168.14.144 -m ping ###
192.168.14.144 | SUCCESS => {
"changed": false,
"ping": "pong"
}
[root@localhost ~]# ansible all -m ping # all
192.168.14.165 | SUCCESS => {
"changed": false,
"ping": "pong"
}
192.168.14.164 | SUCCESS => {
"changed": false,
"ping": "pong"
}
192.168.14.144 | SUCCESS => {
"changed": false,
"ping": "pong"
}
ansible 10.0.0.143 -m ping
ansible 10.0.0.143,10.0.0.144 -m ping
ansible all -m ping
ansible web -m ping
ansible web,db -m ping
ansible "web:&db" -m ping
ansible 'web:!db' -m ping
ansible 'web:db' -m ping
6. ansible-doc 查看模块的帮助信息
ansible-doc [-l|-F|-s] [options] [-t <plugin type> ] [plugin]
-j json的方式返回模块内容
-l 以列表的形式返回模块内容
-s, --snippet 以片段式的方式显示模块的帮助信息
# 直接显示模块的全部信息
ansible-doc -l |wc -l 统计ansible提供的模块
二、关于幂等性
ansible 具有幂等性,幂等性能够保证我们重复的执行一项操作时,得到的结果是相同的,下面详细介绍一下幂等性的概念。
举个例子,你想把一个文件拷贝到目标主机的某个目录上,但是你不确定此目录中是否已经存在此文件,当你使用 ansible 完成这项任务时,就非常简单了,因为如果目标主机的对应目录中已经存在此文件,那么 ansible 则不会进行任何操作,如果目标主机的对应目录中并不存在此文件,ansible 就会将文件拷贝到对应目录中。说白了,ansible 是”以结果为导向的”,我们指定了一个”目标状态”,ansible 会自动判断,”当前状态”是否与”目标状态”一致,如果一致,则不进行任何操作,如果不一致,那么就将”当前状态”变成”目标状态”,这就是”幂等性”,”幂等性”可以保证我们重复的执行同一项操作时,得到的结果是一样的。
现在我们就来实验一下,看看重复执行相同的 ansible 命令时,会得到什么效果,如下图所示: 从上图可以看出,返回信息仍然包含”SUCCESS”字样,证明 ansible 命令执行成功,不过很明显,这次的返回信息为”绿色”,而且细心的你一定发现了,这次绿色的返回信息中,”changed” 字段的值为false,而之前黄色的返回信息中,”changed” 字段的值为 true。
当返回信息为绿色时,”changed” 为 false,表示 ansible 没有进行任何操作,没有”改变什么”。
当返回信息为黄色时,”changed” 为 true,表示 ansible 执行了操作,”当前状态”已经被 ansible 改变成了”目标状态”。
这就是幂等性的体现,当第一次执行上述命令时,ansible 发现当前主机中并没有我们需要的 testfile1文件,ansible 就会按照我们指定的操作,拉取 testfile1 文件,也就是说,ansible “改变”了”当前状态”,将当前”没有 testfile1 文件的状态”变为了”有 testfile1 文件的状态”。当我们再次执行同样的命令时,ansible 发现对应文件已经存在于对应目录中,于是 ansible 并没有做出任何操作,也没有进行任何改变,因为”当前状态”与我们预期的”目标状态”一致,没有必要再做出重复的无用功。
看到这里,你应该已经明白,为什么执行 ansible 命令时,会返回黄色的成功信息或者绿色的成功信息了吧?我们可以通过返回信息的颜色,更加精准的判断执行命令之前的状态是否与我们预期的一致。
从返回信息中可以看到,当 ansible 进行 fetch 操作时,会对对应文件进行哈希计算,算出文件哈希值,也就是说,如果我们改变了文件中的内容,哈希值也将随之发生改变,这个时候,即使对应目录中存在同名的文件,ansible 也会判断出两个文件属于不同的文件,因为它们的哈希值并不相同,我们来实验一下,操作如下:
如上图所示,我们在 /testdir/ansible/ansible-demo2/testdir/testfile1文件的尾部加入一个”空格”,以改变文件内容,然后又执行了 fetch 命令,结果发现,ansible-demo2 的返回信息为黄色,ansible-demo3 主机的返回信息为绿色,证明 ansible 已经做出了正确的判断,将修改过的文件替换为重新拉取的文件。
Ansible安装 入门教程的更多相关文章
- 自动化运维工具——ansible安装入门(一)
一.简介 现如今有很多运维自动化的工具,如:Ansible.Puppet.saltStack.Fabric.chef.Cfengine 1. Ansible介绍 Ansible 是由 Cobbler与 ...
- PostgreSQL安装入门教程
一.安装 首先,安装PostgreSQL客户端. sudo apt-get install postgresql-client 然后,安装PostgreSQL服务器. sudo apt-get ins ...
- Flutter安装入门教程
### 前言 Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面. Flutter可以与现有的代码一起工作.在全世界,Flutter正在被越来越多的开发者和 ...
- EmguCV C# 安装入门教程
EmguCv3的安装. EmguCv3下载网址 http://sourceforge.net/projects/emgucv/files/emgucv/3.0.0/ 推荐下载第一个: 点击direct ...
- ActiveReports 报表控件官方中文入门教程 (1)-安装、激活以及产品资源
本系列文章主要是面向初次接触 ActiveReports 产品的用户,可以帮助您在三天之内轻松的掌握ActiveReports控件的基本使用方法,包括安装.激活.创建报表.绑定数据源以及发布等内容.本 ...
- 【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0 +VS 2013 开发环境配置
图片太多,具体过程参照: [OpenCV入门教程之一] 安装OpenCV:OpenCV 3.0.OpenCV 2.4.8.OpenCV 2.4.9 +VS 开发环境配置 说下我这边的设置: 选择deb ...
- 【django入门教程】Django的安装和入门
很多初学django的朋友,都不知道如何安装django开发以及django的入门,今天小编就给大家讲讲django入门教程. 注明:python版本为3.3.1.Django版本为1.5.1,操作系 ...
- 转:Scrapy安装、爬虫入门教程、爬虫实例(豆瓣电影爬虫)
Scrapy在window上的安装教程见下面的链接:Scrapy安装教程 上述安装教程已实践,可行.(本来打算在ubuntu上安装Scrapy的,但是Ubuntu 磁盘空间太少了,还没扩展磁盘空间,所 ...
- Scrapy安装、爬虫入门教程、爬虫实例(豆瓣电影爬虫)
Scrapy在window上的安装教程见下面的链接:Scrapy安装教程 上述安装教程已实践,可行.(本来打算在ubuntu上安装Scrapy的,但是Ubuntu 磁盘空间太少了,还没扩展磁盘空间,所 ...
随机推荐
- UBUNTU14.0.4安装eclipse
jdk工具下载地址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 点击这个下载 ...
- day_2安装Python解释器和pycharm
首先我们复习一下昨天的内容 ···重点 1:进制转换:二进制 与 十六进制 1111 0101 1010 转换为 f5a 2:内存分布:堆区 和 栈区 计算机的原理: 控制器 运算器 存储器 inp ...
- WPF数字滚动效果
和WPF数字滚动抽奖有区别,WPF数字滚动抽奖是随机的,而这里是确定的. 为了系统演示,这个效果通宵加班写了整整6个小时,中间就上了次厕所. 代码: RollingNumberItemCtrl.xam ...
- 背水一战 Windows 10 (80) - 本地化
[源码下载] 背水一战 Windows 10 (80) - 本地化 作者:webabcd 介绍背水一战 Windows 10 之 本地化 Demo 改变语言 示例1.演示本地化的基本应用Localiz ...
- mysql数据库的常用知识
问题一:如果使用可视化工具链接mysql? mysql默认情况下是不支持远程连接的!只需要几个步骤就能轻松搞定了. 1.vi /etc/mysql/my.cnf 修改里面bind-address项,将 ...
- Vue 父组件ajax异步更新数据,子组件props获取不到
转载 https://blog.csdn.net/d295968572/article/details/80810349 当父组件 axjos 获取数据,子组件使用 props 接收数据时,执行 mo ...
- Swift5 语言指南(十六) 初始化
初始化是准备要使用的类,结构或枚举的实例的过程.此过程涉及为该实例上的每个存储属性设置初始值,并执行在新实例准备好使用之前所需的任何其他设置或初始化. 您可以通过定义实现这个初始化过程初始化,这就像特 ...
- JAVA基础语法——标识符、修饰符、关键字(个人整理总结)
JAVA基础语法——标识符.修饰符.关键字 一 . 标识符 1.1 什么是标识符 就是程序员在定义java程序时,自定义的一些名字,例如helloworld 程序里关键字class 后跟的Dem ...
- DevOps - CI - 持续集成(Continuous Integration)
初见 持续集成是什么? 持续集成基础概念介绍 持续集成服务器与工具集 了解 敏捷开发中的持续集成 使用Jenkins进行持续集成 案例 gitlab+gerrit+jenkins持续集成框架 使用Ge ...
- Tools - Windows OS
001 - 文本操作 Ctrl + C / Ctrl + V / Ctrl + X / Ctrl + Z / Ctrl + A:复制/粘贴/剪贴/撤销/全选. 002 - 窗口分屏 使用快捷键 选中程 ...