xdays

Ansible状态管理

简介

就像所有服务器批量管理工具(puppet有DSL,salt有state)一样,ansible也有自己的状态管理组件,叫做playbook。所有这些类似的概念的东西都是让你用一种更简单的语言(而不是用脚本)来描述你的服务应该是什么样子的,然后这些工具根据你的描述将服务器变成你希望的样子。有了这么一层抽象后,服务部署和配置就变得更加的跨平台了,也提高了可复用性。但请注意,playbook不是万能的,因为playbook底层是在用模块来完成任务,因为模块有限,所以很多时候还是需要写shell脚本(ansible提供了script模块)来完成。

提前说明下要使用ansible的状态管理你需要学习哪些东西:

  • YAML语法,playbook用到的语法很少,这部分学习成本很低;
  • playbook的基本指令,这是基础;
  • 模块的用法,这种重点;
  • jinja2语法,无论是在playbook还是在template里都支持jinja2语法,这是另一个重要的基础,关于jina2的语法不在本文范围内,具体参考官方文档

概念

  • yaml,数据交换格式,类似json和xml,但是比它们更具有可读性,通常用于作为程序的配置文件。ansible的playbook配置使用yaml格式来表达。
  • task,由模块来完成的一个单位任务,如修改文件或者启动服务
  • play,一组task的集合,ansible会自上而下执行
  • handler,task可以触发一定的事件 ...

虚拟机管理工具vagrant

简介

vagrant是一个基于业界成熟的虚拟化技术打造可配置,可重新生成和可移植的工作环境的工具,一个配置文件完成所有状态定义。

特性

  • 简单,一个配置文件搞定
  • 可通过多种方式自定义虚拟机配置,如shell脚本,ansible等
  • 网络配置,支持私有,共有网络配置
  • 目录同步,保持guest和host文件同步,默认将当前目录映射到虚拟机的/vagrant下
  • 多虚拟机支持,构建自己的集群测试环境
  • 多中虚拟技术支持,如virtualbox,vmware,AWS和docker
  • 插件机制,扩展灵活

概念

  • box就是已经制作好的虚拟机,倒入后保存在\~/vagrang.d目录下,和标准的虚拟机区别就是加入了一些为支持vagrant管理的配置,如公钥
  • Vagrantfile描述和配置要创建的虚拟机的配置

安装

sudo apt-get install vagrant

注意 最新的版本要到其官网下载

配置

添加box

vagrant box add name url

其中,name为box的名字,url为box的路径可远程可本地 ...

Ansible初探

简介

ansible是一个自动化管理工具,它足够简单且足够强大来管理大批量设备。可用于配置系统,部署软件以及组合复杂任务。关于其来由可参考中文FAQ

特性

  • 无agent模式,push模式,这一点与fabric有几分类似
  • 并发执行
  • 可用任何语言写扩展模块
  • 有类似Puppet(RAL)或者SaltStack(state)的playbook
  • 灵活的匹配规则,通配符,正则

执行模型

如图所示: ansible architecture

​* 首先,你需要定义设备列表,即任务执行的范围 * 然后,Ansible能通过调用模块来在这些设备上执行任务 * 此外,可以通过用playbook描述要执行的任务的逻辑,完成任务组合

ansible命令

语法

ansible <pattern_goes_here ...

OAuth2.0

前言

OAuth在展过程中变化非常大,1.0的基础概念在2.0中完全不同了,整个模型也发生了翻天覆地的变化,这也给学习这门技术带来了困扰。好在OAuth2.0已经成为标准的RFC6749,我就跟着时代走学习2.0吧!以下内容来自我学习过程对各种文档的总结,仅为个人理解。另外,1.0的相关资料见参考链接。

简介

OAuth是一种开放的授权标准,它解决的问题是如何更安全地让第三方应用访问用户的资源。随着开放平台等其他云计算形式的发展,OAuth也成了做平台或者平台开发很重要的一项技能。

概念

  • 角色
    • 资源所有者(resource owner) 就是终端用户
    • 资源服务器(resource server) 资源托管的平台,如微博等
    • 客户端(client) 第三方应用,想要获取用户资源
    • 授权服务器(authorization server) 颁发授权信息的服务器
  • 授权许可 获取访问令牌的方式,2.0版本定义了四种授权方式(授权码,隐式授权,资源所有者密码凭据和客户端凭据)
  • 访问令牌 代表应用程序可以获取资源的一个凭证 ...

fabric初探

简介

Fabric是一个用于应用部署和系统管理的工具,它让基于ssh的的操作更灵活;你可以在本地或者远程批量执行一些命令,上传下载文件等。

优势

  • 简单,没有架构,不需要理解master/agent(puppet)啦,master/minion(saltstack)啦相关的概念,当然任何一个工具都有自己的逻辑规则,相比其他工具fabric的学习成本要低很多;
  • Pythonic,最小的执行单位---任务,就是基本的python函数,灵活性强;
  • 并行执行,尽管如此性能仍不及M/S模式的其他工具;
  • 可扩展,这是我认为最大的优势,你可以很轻松的在fabric之上构建自己的平台,如监控和部署等。

安装

由于fabric尚不完善,我个人建议直接从github获取最新的代码安装:

git clone https://github.com/fabric/fabric.git
cd fabric/fabric
python setup.py install

也可以通过pip安装

pip install ...