自动化运维工具--Ansible(安装部署、模块简介与操作)

一、Ansible概述

  • 互联网的快速发展导致产品更新换代速度加快,按照传统维护操作使得工作效率低下,自动化运维以尽可能安全高效的完成工作为目的,实现代替传统工作方式。
  • 自动化运维工具划分为两类:
  • 一是需要使用代理工具的,也就是基于agent程序来实现管理功能,例如puppet、func、zabbix等
  • 二是不需要代理配置工具的,可以直接基于SSH服务来完成管理功能,如ansible,fabric等。

  • 自动化运维工具比较:
工具 开发语言 结构 配置文件格式 运行任务
Ansible Python YAML 支持命令行
SaltStack Python C/S YAML 支持命令行
Puppet Ruby C/S Ruby语法格式 通过模块实现

Ansible

  • Ansible基于Python开发,集合了众多优秀运维工具的优点,实现了批量运行命令、部署程序、配置系统等功能。默认通过SSH协议进行远程命令执行或下发配置,无需任何客户端代理软件,从而使得自动化环境部署变得简单,同时支持多台主机并行管理,使得管理主机更加便携。

二、安装部署Ansible服务

  • ansible自动化运维环境有控制主机与被管理主机组成,由于ansible是基于SSH协议进行通信的,所以控制主机安装ansible软件后不需要重启或者运行任何程序,被管理主机也不需要安装或者运行任何代理程序。

2.1、安装部署Ansible

服务器 IP地址 操作系统 组名
控制主机 192.168.144.112 centos7.3 x86_64
被控制主机1 192.168.144.111 centos7.3 x86_64 webserver
被控制主机2 192.168.144.114 centos7.3 x86_64 mysql
  • 1)配置yum源

yum install epel-release

  • 2)安装ansible

yum install ansible -y
yum install tree -y

  • 3)安装完成后,利用tree命令查看配置文件结构。

tree /etc/ansible

/etc/ansible/
├── ansible.cfg   //主配置文件
├── hosts         //管控主机文件
└── roles        //角色目录

2.2、配置主机清单

vim /etc/ansible/hosts

[webserver]       //主机分类组名
192.168.144.111   //主机IP地址或者是域名

[mysql]
192.168.144.114

2.3、利用SSH实现登录

  • 控制服务器上操作,为了避免ansible下发指令时输入被管理主机的密码,需要使用SSH证书签名达到免密登录效果。使用ssh-keygen产生一对密匙,使用ssh-copy-id来下发公匙。

ssh-keygen -t rsa
ssh-copy-id [email protected] //发送公匙给被控服务器
ssh-copy-id [email protected]

  • 当被控制服务器接收到公匙后,实际已经可以通过ansible进行命令控制,只是,存在每次都需要输入私钥密码交互式验证较为麻烦,因此需要设置免交互代理。

ssh-agent bash
ssh-add //输入私钥密码即可

三、Ansible应用命令模块

3.1、ansible命令格式

  • 命令格式:ansible [主机] [-m 模块] [-a args]
  • ansible-doc -l //列出所有已安装的模块 注:按q退出
  • ansible-doc -s user //-s列出user模块描述信息和操作动作

3.2、command模块

  • Ansible管理工具默认模块,若省略-m command,ansible默认使用command的模块

ansible 192.168.144.111 -m command -a ‘date‘ //指定ip执行date
ansible webserver -m command -a ‘date‘ //指定分类执行date
ansible mysql -m command -a ‘date‘
ansible all -m command -a ‘date‘ //所有hosts主机执行date命令
ansible all -a ‘ls -l /‘ 如果不加-m模块,则默认运行command模块

3.2、cron模块

  • 两种状态,present表示添加,默认状态,absent表示移除

ansible-doc -s cron //查看cron模块信息
ansible webserver -m cron -a ‘minute="*/1" job="/bin/echo heihei" name="test cron job"‘

ansible webserver -m cron -a ‘hour="23" job="/bin/echo heihei" name="test cron job"‘    //每天23点执行,若想每隔23个小时执行需要改成hour="*/23"
ansible webserver -m cron -a ‘weekday="6" job="/bin/echo heihei" name="test cron job"‘

ansible-doc -s cron  //结合查看详细用法

ansible webserver -a ‘crontab -l‘
ansible webserver -m cron -a ‘name="test cron job" state=absent‘ //移除计划任务,假如该计划任务没有取名字,name=None即可

3.3、user模块

  • 用于创建新用户,更改删除已存在用户,name选项用于指定用户名称。
  • user模块是请求的是useradd, userdel, usermod三个指令
  • 可指定新建用户的uid,group所属组

ansible webserver -m user -a ‘name="test1"‘
ansible webserver -m user -a ‘name="test2" shell=/sbin/nologin‘ //添加用户指定shell登录方式
ansible webserver -m command -a ‘tail /etc/passwd‘ //查看用户
ansible webserver -m user -a ‘name="test1" state=absent‘ //删除用户test01

3.4、group模块

  • 针对用户的组进行管理,请求groupadd、groupdel、groupmod三个指令

ansible-doc -s group //查看group模块帮助文档
ansible mysql -m group -a ‘name=mysql gid=306 system=yes‘ //创建mysql组,指定gid,设置为系统组
ansible mysql -a ‘tail /etc/group‘
ansible mysql -m user -a ‘name=test01 uid=306 system=yes group=mysql‘ //使用user模块添加用户,并添加到mysql组
ansible mysql -a ‘tail /etc/passwd‘
ansible mysql -a ‘id test01‘

3.5、copy模块

  • 用于实现文件复制和批量文件下发,src用来定义文件源路径,dest定义被管理主机的文件路径,owner指定属主,group指定属组,mode指定文件权限。

ansible-doc -s copy
ansible mysql -m copy -a ‘dest=/opt/123.txt content="heihei" owner=test01 group=test01 mode=600‘ //新建文件且指定内容
ansible mysql -a ‘ls -l /opt‘
ansible mysql -m copy -a ‘src=/etc/fstab dest=/opt/fstab.back owner=root mode=640‘ //复制文件

3.6、file模块

  • 在ansible中使用file模块来设置文件属性,其中使用path指定文件路径,使用src定义源文件路径,使用name或者dest来替换创建文件的软链接。

ansible-doc -s file
ansible mysql -m file -a ‘owner=root group=root mode=755 path=/opt/123.txt‘ //更改文件的属主属组
ansible mysql -m file -a ‘src=/opt/123.txt dest=/opt/123.txt.bk state=link‘ //创建软连接
ansible mysql -m file -a ‘path=/opt/test.txt state=touch‘ //新建一个空文件,若需要指定内容需要copy模块,content指定内容

3.7、ping模块

  • 在ansible中使用ping模块来检测指定主机的连通性。

ansible all -m ping

3.8、yum模块

  • 负责在被管理的主机上安装与卸载软件包,但是需要前提在每个节点配置自己的yum仓库,其中name指定软件包名称,state=absent为选择卸载软件包。

ansible-doc -s yum
ansible mysql -m yum -a ‘name=httpd‘
ansible mysql -m yum -a ‘name=httpd state=absent‘
ansible mysql -m command -a ‘rpm -q httpd‘

3.9、service模块

  • 控制服务的运行状态,enabled表示打开开机自启动,取值为true或者false,使用name定义服务名称,使用state指定服务状态,取值为started、stoped、restarted.(此处注意很多参数后有ed)

ansible-doc -s service
ansible mysql -m service -a ‘name=httpd enabled=true state=started‘ //设置httpd开启自启动,且状态为开启
ansible mysql -m command -a ‘systemctl status httpd‘

3.10、shell模块

  • 用于创建用户无交互模式给用户设置密码。

ansible-doc -s shell
ansible mysql -m shell -a ‘echo abc123 | passwd --stdin test‘ //为test用户创建面交互式密码

3.11、script模块

  • 可以将本地脚本复制到被管理主机上进行运行,需要注意的是,使用相对路径指定脚本!!!

ansible-doc -s script
vi test.sh

#!/bin/bash
echo "hello ansible from script"> /opt/script.txt

chmod +x test.sh
ansible mysql -m script -a ‘test.sh‘

3.12、setup模块

  • 查看被管理主机的facts(facts是ansible采集被管理主机设备信息的一个功能)每个被管理主机在接受并运行管理命令之前,都会将自己的相关信息(操作系统版本IP地址等)发送给控制主机。

ansible-doc -s setup
ansible mysql -m setup

原文地址:http://blog.51cto.com/13659253/2153490

时间: 2024-11-05 04:52:23

自动化运维工具--Ansible(安装部署、模块简介与操作)的相关文章

自动化运维工具ansible——安装及模块管理

ansible简介 ?ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能. ?ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.主要包括:(1).连接插件connection plugins:负责和被监控端实现通信:(2).host inventory:指

自动化运维工具Ansible详细部署 (转载)

自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/1579894 ========================================================================================== 一.基础介绍 ===========================

自动化运维工具Ansible详细部署

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/1579894 ========================================================================================== 一.基础介绍 =========================================================

自动化运维工具Ansible架构部署应用及playbooks简单应用

在日常服务器运维中,我们经常要配置相同的服务器配置,前期我们都是一台一台的去配置,这种方法操作主要应对于服务器数量不多且配置简单的情况还可以继续这样操作,如果我们后期维护几百服务器或者几万服务器呢? 我应该怎样去快速配置服务器呢?如果需要手动的每台服务器进行安装配置将会给运维人员带来许多繁琐而又重复的工作同时也增加服务器配置的异常,至此自动化运维工具解决我们的瓶颈---Ansible工具. Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfeng

自动化运维之Ansible安装与模块应用

自动化运维之Ansible Ansible概述 由于互联网快速展导致产品更新换代速度逐渐加快,运维人员每天都要进行大量维护操作,人就按照传统方式进行维护会使工作效率低下,只是,部署自动化运维就尽可能安全,高校的完成工作 一般会把自动化运维工具划分为两类 (一)需要使用代理工具的,也就是基于专用的Agent程序完成管理功能,如:Puppet.Func.Zabbix等(二)不需要配置代理工具,可以直接基于SSH服务来管理完成,如:Ansible,Fabric等 下面介绍几款空能和类似的自动化运维工具

自动化运维工具---SaltStack安装部署及简单案例

SaltStack原理 SaltStack由Master(服务端)和Minion(客户端)组成,Master和Minion之间通过ZeroMQ(消息队列)进行通讯,Master和Minion分别监听4505与4506端口,4505为master与minion认证通信端口,4506为master用来发送或者接受minion的命令执行返回信息. 当客户端启动后,会主动链接master端注册,然后一直保持该TCP连接,而master通过这条TCP连接对客户端进行控制,如果连接断开,master将对客户

自动化运维工具——ansible详解案例分享

自动化运维工具--ansible详解案例分享(一)目录ansible 简介ansible 是什么?ansible 特点ansible 架构图ansible 任务执行ansible 任务执行模式ansible 执行流程ansible 命令执行过程ansible 配置详解ansible 安装方式使用 pip(python的包管理模块)安装使用 yum 安装ansible 程序结构ansible配置文件查找顺序ansible配置文件ansuble主机清单ansible 常用命令ansible 命令集a

3.1 自动化运维工具ansible

自动化运维工具ansible 运维自动化发展历程及技术应用 Iaas 基础设施即服务Pass 平台服务SaaS 软件即服务 云计算工程师核心职能 Linux运维工程师职能划分 自动化动维应用场景 文件传输命令执行 应用部署配置管理任务流编排 企业实际应用场景分析 1 Dev开发环境 使用者:程序员功能:程序员开发软件,测试BUG的环境管理者:程序员123 2 测试环境 使用者:QA测试工程师功能:测试经过Dev环境测试通过的软件的功能管理者:运维说明:测试环境往往有多套,测试环境满足测试功能即可

自动化运维工具-Ansible基础

目录 自动化运维工具-Ansible基础 自动化运维的含义 Ansible 基础及安装 Ansible的架构 Ansible的执行流程 ansible配置文件 ansible Inventory(主机清单文件) Ansible ad-hoc ansible常用模块 实战 自动化运维工具-Ansible基础 自动化运维的含义 1.手动运维时代 2.自动化运维时代 3.自动化运维工具给运维带来的好处 Ansible 基础及安装 1.什么是Ansible Ansible是一个自动化统一配置管理工具 2

自动化运维工具SaltStack详细部署【转】

==========================================================================================一.基础介绍==========================================================================================1.简介SaltStack是一个服务器基础架构集中化管理平台,具备配置管理.远程执行.监控等功能,一般可以理解为简化版的pupp