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

相关推荐

  • Linux 用户, 组和权限

    用户, 组和权限 Linux登陆需要用户名、密码。/etc/passwd 文件保存用户名。登录linux时,Linux 先查找 /etc/passwd 文件中是否有这个用户名,没有则跳出,有则读取用户名的user ID 、 group ID 、用户名对应的根目录路径以及所使用的 shell ,最后在 /etc/shadow 中核对该 UI…

    2017-07-22
  • N22-第九周作业

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash # declare -i count1=0 declare -i count2=0 for i in $(awk -F : '{print $7}&#03…

    Linux干货 2016-10-17
  • 8月11日shell编程脚本及课后作业

    shell脚本编程 本章内容 编程基础 脚本基础格式 变量 运算 条件测试 流程控制 函数 数组 高级字符串操作 高级变量 配置用户环境 编程基础 程序:指令+数据    程序编程风格:       过程式:以指令为中心,数据服务于指令   &nbs…

    Linux干货 2016-08-15
  • 磁盘管理

    一、磁盘结构     设备文件         I/O Ports: I/O设备地址         一切皆文件:    &nbs…

    Linux干货 2016-09-01
  • DNS

    简介     DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号5…

    Linux干货 2016-11-15
  • 第五周

      第五周 1 显示/boot/grub/grub.conf中以至少一个空白字符开头的行;      grep "^[[:space:]]\+" /boot/grub/grub.conf 2 显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至…

    Linux干货 2017-01-02