天天看点

【Ansible】01、Ansible基础

一、ansible简介

1、ansible是什么?

   ansible是新出现的自动化运维工具,基于python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

项目地址:https://github.com/ansible/ansible

最新稳定版:v2.2.2.0-1

2、特性

基于python语言实现,由paramiko,pyyaml和jinjia2三个关键模块构建

no agents:不需要在被管控主机上安装任何客户端;   

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

modules in any languages:基于模块完成各种任务,可使用任意语言开发模块;

yaml,not code:使用yaml语言定制playbook(剧本);

ssh by default:基于ssh工作;

    1) 基于密钥认证

    2)在inventory文件中指定帐号和密码

主从模式:

  master:ansible,是ssh client

  slave:ssh server

支持playbooks

strong multi-tier solution:强大的多层解决方案

3、优点

  轻量级,部署简单,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;

  批量任务执行可以写成脚本,而且不用分发到远程就可以执行;

  使用python编写,维护更简单,ruby语法过于复杂;

  命令或playbooks执行结果幂等

  支持sudo。

4、组织结构

   ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。

如下图所示:

【Ansible】01、Ansible基础

主要包括:

 1)ansible core:ansible核心

 2)connection plugins:连接插件

     负责和被监控端实现通信;

 3)host inventory:主机清单

     是一个配置文件;在里面定义被管理的主机。

     包括被管理的每个主机的ip,掩码,sshd监听的端口号、帐号和密码,可以将被管理的主机分组 

 4)各种核心模块、自定义模块;

 5)playbooks:yaml文件格式,也支持jinjia2模版语言来定义模版

      剧本执行多个任务时,非必需可以让节点一次性运行多个任务

 6)借助于插件完成记录日志邮件等功能;

二、ansible安装和配置

1、ansible安装

    epel源中就提供了最新稳定的版本

  ansible不是服务,没有任何服务需要运行,使用时直接使用ansible命令运行即可,所谓 no server 

2、ansible配置

ansible的配置文件:

ansible.cfg:ansible的主配置文件

hosts:主机清单配置文件

roles:角色配置目录

先看/etc/ansible/hosts:

四、ansible命令使用

1、获取帮助信息

    通过 ansible-doc 命令获取ansible使用帮助信息

2、ansbile 命令使用语法

       ansible <host-pattern> [-f forks] [-m module_name] [-a args]

host-patten:

    对哪些主机生效;多个ip之间使用","分隔,all表示所有主机,也可以使用主机清单文件中定义的组名;在主机清单文件中指定的是ip这里就使用ip,指定是主机名就使用主机名

-f forks:启动的并发线程数

-m module_name:要使用的模块

-a args:模块特有的参数

例子:

五、ansible常用模块

1、command 命令模块

         默认模块,用于在远程主机上执行命令

2、cron  计划任务模块

    用于在远程主机设置计划任务

3、user,group 用户,组管理

4、copy    复制或新建文件

src=     定义本地源文件路径可以是相对路径和绝对路径

dest=    定义远程目标文件路径,只能是绝对路径

content=  取代src选项,用此处指定的信息生成为目标文件内容

5、file  设置文件属性

6、ping 测试指定主机是否能连接

7、service  管理服务

enabled=    是否开机自动启动,取值为 true 或者 false

name=      服务名称

state=     状态,取值有started,stopped,restarted

8、shell  在远程主机上运行命令,尤其使用管道,变量等复杂命令

9、yum 安装程序包

name=   指明要安装的程序包,可以带上版本号

state=   present,latest表示安装,absent表示卸载

10、script 将本地脚本在远程节点上运行

11、setup 收集远程主机的facts

    每个被管理节点在接收并运行管理命令之前,会将自己主机相关信息,如果操作系统版本,ip地址等报告给ansible,得到的变量名和其值可以直接引用。

注意:

  使用ansible时,不一定一定要使用相应的模块,可以直接使用command、shell、script 模块更方便

pxe

继续阅读