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(一)工作架构和原理相关推荐

  1. 《分布式服务架构:原理、设计与实战》第二章彻底解决分布式系统一致性的问题...

    2019独角兽企业重金招聘Python工程师标准>>> 1.什么是一致性 一致性指分布式服务化系统之间的弱一致性,包括应用系统的一致性和数据的一致性.无论是水平拆分还是垂直拆分,都解 ...

  2. 45 张图深度解析 Netty 架构与原理

    作为一个学 Java 的,如果没有研究过 Netty,那么你对 Java 语言的使用和理解仅仅停留在表面水平,会点 SSH 写几个 MVC,访问数据库和缓存,这些只是初等 Java 程序员干的事.如果 ...

  3. Netty架构与原理详解

    本文来详细说下netty架构设计与原理 文章目录 概述 Netty 基础 Netty 是什么 Netty 的应用场景 Java 中的网络 IO 模型 Java NIO API 简单回顾 缓冲区(Buf ...

  4. 万字详解Oracle架构、原理、进程,学会世间再无复杂架构

    学习是一个循序渐进的过程,从面到点.从宏观到微观,逐步渗透,各个击破,对于Oracle, 怎么样从宏观上来理解呢?先来看一个图,这个图取自于教材,这个图对于从整体上理解ORACLE 的体系结构组件,非 ...

  5. 读书笔记:大型网站技术架构-核心原理与案例分析

    李智慧<大型网站技术架构-核心原理与案例分析> 性能 可用性 伸缩性 扩展性 安全性 总结 这本书组织的很不错,语言精练,篇幅也不长,对网站架构的要点讲的狠清楚透彻,思路清晰.主要围绕架构 ...

  6. KVM虚拟化平台搭建、工作模式与原理

    文章目录 简介 1.虚拟化技术 1.1 概述 1.2 虚拟化技术的发展雏形 1.3 虚拟化类型 2.KVM架构和原理 2.1 KVM简介 2.2 KVM虚拟化架构/三种模式 2.3 KVM原理 2.3 ...

  7. 详解Oracle架构、原理、进程,学会世间再无复杂架构

    详解Oracle架构.原理.进程,学会世间再无复杂架构 学习是一个循序渐进的过程,从面到点.从宏观到微观,逐步渗透,各个击破,对于Oracle, 怎么样从宏观上来理解呢?先来看一个图,这个图取自于教材 ...

  8. 下载!《Nacos 架构与原理》pdf

    以下内容来自公众号逆锋起笔,关注每日干货及时送达 文 | 于怀  Nacos 发起人 & Maintainer 一.Nacos 开源诞生 2018年 7 月 21 日,完成在 github 进 ...

  9. F2FS文件系统架构与原理分析(五)——元数据组织及管理

    from : http://blog.chinaunix.net/uid-28989651-id-3911126.html 1. 元数据区域 元数据区域包含以下几种元数据(参见博文:F2FS文件系统架 ...

最新文章

  1. python第三方库numpy-浅谈python的第三方库——numpy(终)
  2. 成都python培训比较好的机构-成都Python培训班哪个好,怎样才能不走弯路学习
  3. python安装pip-安装pip的三种方法
  4. Redis Scan命令
  5. docker-engine安装好了,下一步该做什么?
  6. Manjaro下带供电的USB Hub提示error -71
  7. 【渝粤教育】国家开放大学2018年春季 0045-22T烹饪原料学(1) 参考试题
  8. HBase原理和安装
  9. dataframe 上下拼接_pandas DataFrame 的横向纵向拼接组合
  10. 阿里P8架构师谈:如何搭建亿级并发系统的性能指标体系
  11. vim查找和替换字符串
  12. INSERT INTO SELECT FROM 的用法
  13. 教你炒股票27:盘整背驰与历史性底部
  14. 猫和计算机连接网络,宽带猫和路由器怎样连接 宽带猫和路由器连接方法【教程】...
  15. 【在线电子书转换】云展网教程 | 如何设置电子书的翻页速度?
  16. Wireshark:抓取微信网址
  17. tar.bz2 解压命令。
  18. 01、第一个简单的BUCK电路的计算与仿真
  19. BZOJ 2565 最长回文串
  20. 1024程序员节的由来?

热门文章

  1. SpringCloud工作笔记072---同一浏览器上不同标签页_tab页或者同一浏览器新开一个浏览器窗口也能实现单点登录_单点登录_localStorage_sessionStorage
  2. OpenCV_复制一个或多个ROI图像区域
  3. AfxGetApp用法
  4. spring相互依赖怎么解决_被问到Spring循环依赖怎么解决?秀给面试官看!内附图解...
  5. linux驱动编写(platform总线和网卡驱动)
  6. 线性筛法 欧拉筛c语言,[洛谷P3383][模板]线性筛素数-欧拉筛法
  7. linux 脚本 java_linux系统下运行java项目的脚本编写
  8. 路由交换基础——NAT(网络地址转换)
  9. Selenium的一些技巧与错误处理
  10. 虚拟货币公有链项目集体爆发,AE超过历史最高点