Ansible(一)工作架构和原理
1、ansible基本架构
ansible系统由控制主机和被管理主机组成,控制主机不支持windows平台
- 核心: ansible
- Core Modules: ansible自带的模块
- Custom Modules: 核心模块功能不足时,用户可以添加扩展模块
- Plugins: 通过插件来实现记录日志,发送邮件或其他功能
- Playbooks: 剧本,YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能
- Connectior Plugins: ansible基于连接插件连接到各个主机上,默认是使用ssh
Host Inventory: 记录由Ansible管理的主机信息,包括端口、密码、ip等
2、ansible特点
部署简单, 只需要在控制主机上部署ansible环境,被控制端上只要求安装ssh和python 2.5以上版本,这个对于类unix系统来说相当与无需配置.
- no angents: 被管控节点无需安装agent
- no server: 无服务端,使用是直接调用命名
- modules in any languages: 基于模块工作, 可以使用任意语言开发模块
- 易读的语法: 基于yaml语法编写playbook
- 基于推送模式: 不同于puppet的拉取模式,直接由调用者控制变更在服务器上发生的时间
- 模块是幂等性的:定义的任务已存在则不会做任何事情,意味着在同一台服务器上多次执行同一个playbook是安全的
3、ansible程序目录结构:
配置文件: /etc/ansible/
执行文件目录: /usr/bin/
lib依赖库: /usr/lib/python2.7/site-packages/ansible/
help文件: /usr/lib/python2.7/site-packages/ansible
4、 ansible任务执行模式
Ansible任务执行模式分为以下两种:
- ad-hoc模式(点对点模块)
使用单个模块,支持批量执行单条命令,相当与在bash中执行一句shell命令 - playbook模式(剧本模式)
ansible主要的管理方式,通过多个task的集合完成一类功能,可以理解为多个ad-hoc的配置文件
5、ansible各参数含义
不过默认使用的模块是可以在ansible.cfg 中进行修改的。ansible命令下的参数部分解释如下:
-a ‘Arguments’, --args=‘Arguments’ 命令行参数
-m NAME, --module-name=NAME 执行模块的名字,默认使用 command 模块,所以如果是只执行单一命令可以不用 -m参数
-i PATH, --inventory=PATH 指定库存主机文件的路径,默认为/etc/ansible/hosts.
-u Username, --user=Username 执行用户,使用这个远程用户名而不是当前用户
-U --sud-user=SUDO_User sudo到哪个用户,默认为 root
-k --ask-pass 登录密码,提示输入SSH密码而不是假设基于密钥的验证
-K --ask-sudo-pass 提示密码使用sudo
-s --sudo sudo运行
-S --su 用 su 命令
-l --list 显示所支持的所有模块
-s --snippet 指定模块显示剧本片段
-f --forks=NUM 并行任务数。NUM被指定为一个整数,默认是5。 #ansible testhosts -a “/sbin/reboot” -f 10 重启testhosts组的所有机器,每次重启10台
–private-key=PRIVATE_KEY_FILE 私钥路径,使用这个文件来验证连接
-v --verbose 详细信息
all 针对hosts 定义的所有主机执行
-M MODULE_PATH, --module-path=MODULE_PATH 要执行的模块的路径,默认为/usr/share/ansible/
–list-hosts 只打印有哪些主机会执行这个 playbook 文件,不是实际执行该 playbook 文件
-o --one-line 压缩输出,摘要输出.尝试一切都在一行上输出。
-t Directory, --tree=Directory 将内容保存在该输出目录,结果保存在一个文件中在每台主机上。
-B 后台运行超时时间
-P 调查后台程序时间
-T Seconds, --timeout=Seconds 时间,单位秒s
-P NUM, --poll=NUM 调查背景工作每隔数秒。需要- b
-c Connection, --connection=Connection 连接类型使用。可能的选项是paramiko(SSH),SSH和地方。当地主要是用于crontab或启动。
–tags=TAGS 只执行指定标签的任务 例子:ansible-playbook test.yml --tags=copy 只执行标签为copy的那个任务
–list-hosts 只打印有哪些主机会执行这个 playbook 文件,不是实际执行该 playbook 文件
–list-tasks 列出所有将被执行的任务
-C, --check 只是测试一下会改变什么内容,不会真正去执行;相反,试图预测一些可能发生的变化
–syntax-check 执行语法检查的剧本,但不执行它
-l SUBSET, --limit=SUBSET 进一步限制所选主机/组模式 --limit=192.168.0.15 只对这个ip执行
–skip-tags=SKIP_TAGS 只运行戏剧和任务不匹配这些值的标签 --skip-tags=copy_start
-e EXTRA_VARS, --extra-vars=EXTRA_VARS 额外的变量设置为键=值或YAML / JSON
#cat update.yml
—
- hosts: {{ hosts }}
remote_user: {{ user }}
…
#ansible-playbook update.yml --extra-vars “hosts=vipers user=admin” 传递{{hosts}}、{{user}}变量,hosts可以是 ip或组名
-l,–limit 对指定的 主机/组 执行任务 --limit=192.168.0.10,192.168.0.11 或 -l 192.168.0.10,192.168.0.11 只对这个2个ip执行任务
6、ansible主要组成部分
- 1、ansible playbooks 任务剧本(任务集),编排定义ansible任务集的配置文件,由ansible顺序依次执行,通常是json格式的YML文件
- 2、INVENTORY ansible管理主机的清单/etc/ansible/hosts
- 3、modules ansible执行命令的模块,多数为内置核心模块,也可以自定义
- 4、plugins 模块功能的补充,如连接类型插件,循环插件,变量插件等
- 5、API 供第三方程序调用的应用程序编程接口
- 6、ansible 组合inventery、API、modules、plugins的绿框
Ansible(一)工作架构和原理相关推荐
- 《分布式服务架构:原理、设计与实战》第二章彻底解决分布式系统一致性的问题...
2019独角兽企业重金招聘Python工程师标准>>> 1.什么是一致性 一致性指分布式服务化系统之间的弱一致性,包括应用系统的一致性和数据的一致性.无论是水平拆分还是垂直拆分,都解 ...
- 45 张图深度解析 Netty 架构与原理
作为一个学 Java 的,如果没有研究过 Netty,那么你对 Java 语言的使用和理解仅仅停留在表面水平,会点 SSH 写几个 MVC,访问数据库和缓存,这些只是初等 Java 程序员干的事.如果 ...
- Netty架构与原理详解
本文来详细说下netty架构设计与原理 文章目录 概述 Netty 基础 Netty 是什么 Netty 的应用场景 Java 中的网络 IO 模型 Java NIO API 简单回顾 缓冲区(Buf ...
- 万字详解Oracle架构、原理、进程,学会世间再无复杂架构
学习是一个循序渐进的过程,从面到点.从宏观到微观,逐步渗透,各个击破,对于Oracle, 怎么样从宏观上来理解呢?先来看一个图,这个图取自于教材,这个图对于从整体上理解ORACLE 的体系结构组件,非 ...
- 读书笔记:大型网站技术架构-核心原理与案例分析
李智慧<大型网站技术架构-核心原理与案例分析> 性能 可用性 伸缩性 扩展性 安全性 总结 这本书组织的很不错,语言精练,篇幅也不长,对网站架构的要点讲的狠清楚透彻,思路清晰.主要围绕架构 ...
- KVM虚拟化平台搭建、工作模式与原理
文章目录 简介 1.虚拟化技术 1.1 概述 1.2 虚拟化技术的发展雏形 1.3 虚拟化类型 2.KVM架构和原理 2.1 KVM简介 2.2 KVM虚拟化架构/三种模式 2.3 KVM原理 2.3 ...
- 详解Oracle架构、原理、进程,学会世间再无复杂架构
详解Oracle架构.原理.进程,学会世间再无复杂架构 学习是一个循序渐进的过程,从面到点.从宏观到微观,逐步渗透,各个击破,对于Oracle, 怎么样从宏观上来理解呢?先来看一个图,这个图取自于教材 ...
- 下载!《Nacos 架构与原理》pdf
以下内容来自公众号逆锋起笔,关注每日干货及时送达 文 | 于怀 Nacos 发起人 & Maintainer 一.Nacos 开源诞生 2018年 7 月 21 日,完成在 github 进 ...
- F2FS文件系统架构与原理分析(五)——元数据组织及管理
from : http://blog.chinaunix.net/uid-28989651-id-3911126.html 1. 元数据区域 元数据区域包含以下几种元数据(参见博文:F2FS文件系统架 ...
最新文章
- python第三方库numpy-浅谈python的第三方库——numpy(终)
- 成都python培训比较好的机构-成都Python培训班哪个好,怎样才能不走弯路学习
- python安装pip-安装pip的三种方法
- Redis Scan命令
- docker-engine安装好了,下一步该做什么?
- Manjaro下带供电的USB Hub提示error -71
- 【渝粤教育】国家开放大学2018年春季 0045-22T烹饪原料学(1) 参考试题
- HBase原理和安装
- dataframe 上下拼接_pandas DataFrame 的横向纵向拼接组合
- 阿里P8架构师谈:如何搭建亿级并发系统的性能指标体系
- vim查找和替换字符串
- INSERT INTO SELECT FROM 的用法
- 教你炒股票27:盘整背驰与历史性底部
- 猫和计算机连接网络,宽带猫和路由器怎样连接 宽带猫和路由器连接方法【教程】...
- 【在线电子书转换】云展网教程 | 如何设置电子书的翻页速度?
- Wireshark:抓取微信网址
- tar.bz2 解压命令。
- 01、第一个简单的BUCK电路的计算与仿真
- BZOJ 2565 最长回文串
- 1024程序员节的由来?
热门文章
- SpringCloud工作笔记072---同一浏览器上不同标签页_tab页或者同一浏览器新开一个浏览器窗口也能实现单点登录_单点登录_localStorage_sessionStorage
- OpenCV_复制一个或多个ROI图像区域
- AfxGetApp用法
- spring相互依赖怎么解决_被问到Spring循环依赖怎么解决?秀给面试官看!内附图解...
- linux驱动编写(platform总线和网卡驱动)
- 线性筛法 欧拉筛c语言,[洛谷P3383][模板]线性筛素数-欧拉筛法
- linux 脚本 java_linux系统下运行java项目的脚本编写
- 路由交换基础——NAT(网络地址转换)
- Selenium的一些技巧与错误处理
- 虚拟货币公有链项目集体爆发,AE超过历史最高点