本节内容:

  • 运维工具
  • Ansible特性
  • Ansible架构图和核心组件
  • 安装Ansible
  • 演示使用示例

一、运维工具

作为一个Linux运维人员,需要了解大量的运维工具,并熟知这些工具的差异,能够熟练运用这些工具去解决一些手动重复的劳动,一方面是避免人工操作失误,另一方面也可以提高工作效率。同时还能将自己从这些重复的工作中解放出来,以便研究更新和更深的技术。

运维工具大体上可以分为3类:

  • OS Provisioning:提供操作系统安装的。PXE,Cobbler(repository,distritution,profile)。
  • OS Config:cfengine、puppet、saltstack、chef、func、Task Excute工具(fabric、func、saltstack)
  • Deployment:capistranoc、fabric

而Ansible是一款较新的工具,可以实现OS Config、Task Excute和Deployment。

运维工具实现远程管理的两种方式:

  1. 有agent:puppet、saltstack、func
  2. agentless:ansible、fabric

二、Ansible特性

  • 学习曲线平缓;
  • 不需要agent;
  • 没有有线状态图,没有次序,我们自己定义动作间的依赖关系就行,任何一个任务出错会很快出错,你可以立即进行修改;
  • 没有代理;
  • 没有服务端;
  • 依赖ssh来工作,无需ssl,也就无需证书等功能;
  • 模块可以使用任何编程语言来编写,包括shell脚本;
  • 默认使用ssh工作;
  • 支持多级的解决方案。

三、Ansible架构图和核心组件

架构图:

ansible是Python编写的,Python有一个模块叫paramiko,paramiko组件能够实现并行地基于ssh协议远程连接至各主机的库。ansible就是用了paramiko。

核心组件:

  • ansible core:ansible核心。
  • host inventory:主机池,或叫主机列表,主机归档文件。
  • core modules:ansible核心模块。
  • custom modules:用户可以自定义模块
  • playbook:将多个任务写在一个yaml格式的配置文件中。支持使用Python的jinjia2来定义模板。同一个playbook应用带同一台主机上,无论你应用多少次,他们的结果都是相等的,不会重复执行。这种特性我们称为幂等性。
  • connect plugins:连接插件
  • plugins:其他的一些插件,比如email、logging等等。

四、安装Ansible

可以选择源码编译安装或者yum安装。ansible的rpm包在epel源中,事先安装好epel源。我这里实验环境是CentOS 7。

安装:

# yum install ansible -y

查看安装的rpm包里有哪些文件:

# rpm -ql ansible | more

ansible配置文件:/etc/ansible/ansible.cfg
inventory文件:/etc/ansible/hosts

五、演示使用示例

1.环境信息

主机名 操作系统版本 IP地址 安装软件
node1 CentOS 7.0 172.16.7.151 ansible-noarh-2.2.0.0-4.el7
node2 CentOS 7.0 172.16.7.152
node3 CentOS 7.0 172.16.7.153

2.配置Ansible主机登录其他主机使用密钥登录

由于Ansible默认使用ssh管理主机,所以首先需要配置Ansible所在主机登录其他被管理主机不需要输入密码。在node1主机上执行如下命令:

[root@node1 ~]# ssh-keygen -t rsa -P ''
[root@node1 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.7.151
[root@node1 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.7.152
[root@node1 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.7.153

3.定义主机

每一个主机可以使用主机名,也可以使用ip地址。也可以把多个主机定义到一个组里。比如:

[root@node1 ~]# vim /etc/ansible/hosts

4.使用模块

Ansible是依赖模块进行工作的,里面有大量的模块帮助我们去完成任务。比如使用command模块:

[root@node1 ~]# ansible 172.16.7.152 -m command -a "date"

如上,在执行任务时,可以指定IP,也可以指定组名,ansible有个默认的组叫all,代表/etc/ansible/hosts文件里的所有主机。

列出当前主机可以使用的ansible模块:

[root@node1 ~]# ansible-doc -l

常用的模块有:user、yum、copy、command等。如果想知道某个模块怎么使用的,比如想知道yum怎么用:

[root@node1 ~]# ansible-doc -s yum

Ansible介绍及安装部署的更多相关文章

  1. ansible入门一(Ansible介绍及安装部署)

    本节内容: 运维工具 Ansible特性 Ansible架构图和核心组件 安装Ansible 演示使用示例 一.运维工具 作为一个Linux运维人员,需要了解大量的运维工具,并熟知这些工具的差异,能够 ...

  2. 自动化运维工具之 Ansible 介绍及安装使用

    一.初识Ansible 介绍: Absible 使用 模块(Modules)来定义配置任务.模块可以用标准脚本语言(Python,Bash,Ruby,等等)编写,这是一个很好的做法,使每个模块幂等.A ...

  3. Storm介绍及安装部署

    本节内容: Apache Storm是什么 Apache Storm核心概念 Storm原理架构 Storm集群安装部署 启动storm ui.Nimbus和Supervisor 一.Apache S ...

  4. Apache Solr 初级教程(介绍、安装部署、Java接口、中文分词)

    Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...

  5. Kafka介绍及安装部署

    本节内容: 消息中间件 消息中间件特点 消息中间件的传递模型 Kafka介绍 安装部署Kafka集群 安装Yahoo kafka manager kafka-manager添加kafka cluste ...

  6. hue框架介绍和安装部署

    大家好,我是来自内蒙古的小哥,我现在在北京学习大数据,我想把学到的东西分享给大家,想和大家一起学习 hue框架介绍和安装部署 hue全称:HUE=Hadoop User Experience 他是cl ...

  7. ansible介绍和安装

    ansible是由 Python 编写的强大的配置管理解决方案,ansible 的特点就在于它的简洁与高效率 ansible与其他的配置管理工具不同点在于:不需要你在想要配置的每个节点上安装自己的组件 ...

  8. Ansible 介绍和安装

    目录 Ansible 介绍 环境准备 Ansible安装 配置秘钥管理 配置Inventory文件 简单测试连通性 Ansible 介绍 运维工具分类: agent: puppet, func 这类都 ...

  9. Hadoop入门进阶课程13--Chukwa介绍与安装部署

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

随机推荐

  1. 题解【51nod 1290 Counting Diff Pairs】

    Description 求区间内有多少对 \((i,j)\) 满足 \(|a_i - a_j| \leq k\) Solution 可以莫队做(万能的莫队) 只需要考虑加入一个数会产生多少贡献即可 离 ...

  2. python 生成器和迭代器介绍

    在正式接触生成器之前,我们先来了解一些概念 容器(container) 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个迭代获取,可以用in.not in关键字判断元素是否包含在容器中. ...

  3. java基础-引用数据类型之二维数组(Array)

    java基础-引用数据类型之二维数组(Array) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 之前我们学习过了Java的一维数组,所谓的二维数组就是元素是一堆一维数组的数组,换 ...

  4. 《Java程序猿面试宝典》之字符串

    前不久刚看完这一章,然而这遗忘速度实在是不能忍,既然总是遗忘,那么老衲就和你磨上一磨. 1.字符串基础 先说字符串吧,看例1: String a = "abc"; String b ...

  5. 查看oracle数据库编码:

    1.客户端编码 查看方法:打开数据库所在服务器的注册表(在运行窗口中输入regedit打开)HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE->HOME0-& ...

  6. SQL语句(十七)综合练习_分组查询_内嵌查询_视图使用

    Select * from Student Select * From Course Select * from SC --子查询 低于总平均成绩的女同学成绩 Select Grade from St ...

  7. 数学建模 TSP(旅行商问题) Lingo求解

    model: sets: cities../:level; link(cities, cities): distance, x; !距离矩阵; endsets data: distance ; end ...

  8. angularJS $resource

    $resource是一个更方便地与RESTful服务器API进行交互,可以方便地定义一个REST资源,而不必手动所有的声明CRUD方法的Service. 使用 1.要使用$resource首先要在HT ...

  9. java基础学习:JavaWeb之Cookie和Session

    一.会话概述 1.1.什么是会话? 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话其中不管浏览器发送多少请求,都视为一次会话,直到 ...

  10. 关于数据区间变换及numpy数组转图片数据的python实现

    python实现区间转换.numpy图片数据转换 需求: 客户的需求是永无止境的,这不?前几天,用户提出了一个需求,需要将一组数据从一个区间缩放到另一区间? 思路: 先将数据归一化,再乘以对应区间的差 ...