ansible基础应用

Ansible基础

ansible是一款自动化运维工具,基于Python开发,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。

Ansible架构简介

ansible架构.PNG

ansible的核心就是ansible平台,ansible是高度模块化的, core Modules是他的核心模块,是ansible自带的模块, 能完成一些最常见的系统管理配置等相关功能的,接着 custom modules,叫做自定义模块。支持大量常见语言 做二次开发额外的模块。架构中还有一块就是plugins 模块是用来完成系统管理与配置的任务的,如果想使ansible 平台本身更强大,就需要不断加入插件。plugins中有一个 连接插件很重要,ansible基于此插件来连接控制各被管理主机。 ssh是连接插件中最核心的部分,另外也可以拓展为其他协议用于 连接插件。接着,还有一个Host Inventory模块被称为主机清单 ,用来记录被管理的主机。当要管理主机时,就使用 connection plugin去连接被管理主机,接着调用相关的模块 进行管理。而playbook模块就像是一个剧本,管理员可以事先 将要执行的操作一条一条写入剧本,当要执行时,ansible 只要读取playbook中的编排再调用相关模块控制主机即可。

Ansible特性

  • 模块化:调用特定的模块,实现相应功能。

  • agentless:部署简单,被管控端无需安装客户端。

  • no server:无服务器端,使用时直接运行命令即可。

  • yaml,not code:使用yaml语言(一种标记语言,多采用key:value的形式)定制剧本playbook。

  • 支持主从模式。

  • 基于SSH连接管理被管控端。

Ansible安装与简单应用

1.实验环境准备

此次示例采用centos7系统,在epel源中自带了ansible的相关安装文件,所以直接在控制端的主机上采用yum安装即可。示例部署非常简单,控制端IP为192.168.1.67,被控制端IP分别为.68、.69、.70。

2.简单应用

ansible通过ssh实现配置管理、应用部署、任务执行等功能,因此,需要事先配置ansible端能基于密钥认证的方式联系各被管理节点。此处不再赘述。最终需要能实现主机节点间无需输入密码即可访问。

另外需要定义主机清单,如下:

    #cp /etc/ansible/hosts{,.bak}
    #vim /etc/ansible/hosts         #将原文件中的内容全部删除
    [websrvs]
    192.168.1.68
    192.168.1.69
    192.168.1.70

接着可以进行初步测试,直接运行命令测试,

标准的ansible启用命令为:
ansible <host-pattern> [-f forks] [-m module_name] [-a args]
-m module:默认为command
查看ansible各模块的相关信息及可用参数命令为:
ansible-doc: 
 -l, --list           显示当前ansible支持的模块
  -s, --snippet         跟模块名,显示模块可用args参数。

使用ping模块进行最简单的测试,看各节点是否在线:

1.png

3.常用模块使用示例

  • commond模块:
     一般不跟参数,直接给出命令指定的命令会在所选的所有的节点上执行。命令并不是通过shell执行的,所以并不
    能使用$HOME等环境变量和一些操作符(<,>,|,&)。shell模块支持环境变量和操作符。

    2.png

  • user模块:创建用户

    3.png

  • group模块:修改组id

    4.png

  • service模块:管理远程节点的服务

    5.png

  • copy模块:将本地文件复制到远程路径下。

    6.png6.png

  • shell模块:

    像command模块那样在远程节点执行命令,但shell模块再远程节点是通过shell环境
    (/bin/bash)执行命令的,该模块也可以执行一个shell脚本,但该脚本必须在远程节点上存在。

    7.png

  • script模块:
     

    -a选项直接跟一个本地脚本的绝对路径,脚本的参数以空格隔开。该模块首先将指定的脚本传到远程节点上,然后在远程节点的shell环
    境下执行该脚本。

    8.png

原创文章,作者:Net21_charles,如若转载,请注明出处:http://www.178linux.com/37985

(1)
Net21_charlesNet21_charles
上一篇 2016-08-22 09:30
下一篇 2016-08-22 09:30

相关推荐

  • LVM逻辑卷管理

    前言     通常情况下,在操作系统上新建了一个分区并在此分区创建文件系统后,该文件系统的大小就固定了。假如要增加此文件系统的大小,我们不得不添加一块硬盘并重新分区,创建文件系统,然后把原文件系统的数据完整复制过来。如果第二次分区时分配的空间太大,用不完又浪费该怎么办呢?重复此前的流程又将花费大量的时间,有没有更便捷的…

    Linux干货 2015-05-04
  • 马哥教育网络版25期+第一周作业

    1、描述计算机的组成及其功能 计算机是由CPU,控制器,RAM,输入设备,输出设备组成的 2、按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别 现如今主流的LINUX发行版系列主要有: Debian,Slackware,Redhat,这些发行版都是基于GUNLinux开发的,不过是由不同的组织或团体开发并发行的。 3、描述Linux的哲学思想,…

    Linux干货 2016-12-05
  • 马哥教育网络班22期+第十二周课程练习

    1、请描述一次完整的http请求处理过程。    (1) 客户端与服务端通过TCP三次握手建立或处理连接:接收请求或拒绝请求    (2) 接收请求:接收来自于网络上的主机请求报文中对某特定资源的一次请求的过程    (3) 处理请求:对请求报文进行解析,获取客户端请求…

    Linux干货 2016-12-29
  • ansible-playbook组件解析及操作全解

    一、ansible-playbook介绍:  playbook是由一个或多个”play”组成的列表。play的主要功能在于将事先归为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上来将,所谓的task无法是调用ansible的一个module。将多个paly组织在一个playbook中,即可以让他们联通起来按事…

    2015-08-24
  • LAMP (php-fpm模式)部署出现的奇葩问题

    1. 安装环境:(cent6.5) yum install -y php php-devel httpd  php-fpm mysql 2. 修改配置文件 vim /etc/httpd/conf/http.conf 注释掉DocumentRoot vim /etc/httpd/conf.d/vhost.conf <VirtualHost *:…

    2017-04-10
  • linux基础学习-网络基础

    一、OSI七层模型 二、TCP/IP模型         三次握手原理 三、常见服务的默认端口 四、IP地址、子网划分基础知识     通信原理:一般数据的交互产生是在应用层(TCP/IP模型),应用层以下可以看成是搬运工,不同层的协议定义了不同的搬运工的工作内容,直到最后,把数…

    Linux干货 2016-09-05