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

自动化运维之Ansible

Ansible概述

由于互联网快速展导致产品更新换代速度逐渐加快,运维人员每天都要进行大量维护操作,人就按照传统方式进行维护会使工作效率低下,只是,部署自动化运维就尽可能安全,高校的完成工作

一般会把自动化运维工具划分为两类

(一)需要使用代理工具的,也就是基于专用的Agent程序完成管理功能,如:Puppet、Func、Zabbix等
(二)不需要配置代理工具,可以直接基于SSH服务来管理完成,如:Ansible,Fabric等

下面介绍几款空能和类似的自动化运维工具

  • Puppet
    Puppet基于Ruby开发,支持Linux、UNIX、Windows平台,可以针对用户、系统服务、配置文件、软件包等进行管里,有很强的扩展性、但远程执行命令相对较弱
  • SaltStack
    SaltStack基于Python开发,允许管理员对多个操作系统创建统一的管理系统,比Puppet更轻量级
  • Ansible
    Ansible基于Pythpn开发,集合了众多优秀运维工具的优点,实现批量运行命令、部署程序、配置系统等功能。默认通过SSH协议进行远程命令执行或下发配置,无需部署任何客户端代理软件,从而使得自动化环境部署变得更加简单

Ansible核心组件

Ansilbe基本结构框架如下图:
---插图---

可以看出Ansible由六个部分组成

  • Ansible core核芯引擎
  • Host inventory主机清单:用来定义Ansible所管理的主机,默认在Ansible的hosts配置文件中定义被管理主机,同时也支持自定义状态主机清单和制定其他配置文件位置
  • Connection plugins连接插件:负责和被管理主机实现通信,除支持使用SSH连接被管理主机外,还支持其他连接方式
  • Playbooks (yam1,jinja2)剧本:用来定义Ansible任务配置文件,即将多个任务定义在同一个剧本中有Ansible执行,可以自由控制主机针对多台被管理主机同时运行多个任务
  • Core modules核心模块:是Ansible自带模块,使用这些模将资源分配到被管理主机
  • Custom modules自定义模块:用完成模块功能的补充,可借助相关插件完成记录日志、发送邮件等功能

部署Ansible服务

案例环境

角色 主机名 IP地址 组名
控制主机 n1 192.168.179.134
被管理主机 n2 192.168.179.135 mysql
被管理主机 n3 192.168.179.141 hostserver

(1)安装Ansible

[[email protected] ~]# yum install -y epel-release #//安装epel源
[[email protected] ~]# yum install ansible -y #//安装ansible
[[email protected] ~]# ansible --version #//查看版本
ansible 2.6.2
[[email protected] ~]# yum install tree -y #//安装树状结构工具
[[email protected] ~]# tree /etc/ansible #//树状结构展示文件夹
/etc/ansible/
├── ansible.cfg   #ansible的配置文件
├── hosts         #ansible的主仓库,用于存储需要管理的远程主机的相关信息
└── roles         #角色

(2)配置ansible

[[email protected] ~]# vim /etc/ansible/hosts  #////配置主机清单
[mysql]
192.168.179.135

[hostserver]
192.168.179.141

(3)配置密钥

#关闭防火墙<三个都要关>
[[email protected] ~]# systemctl stop firewalld.service
[[email protected] ~]# setenforce 0

[[email protected] ~]# ssh-keygen -t rsa
Enter file in which to save the key (/root/.ssh/id_rsa):[回车默认] #输入保存密钥的文件(/root/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):  #//输入密码(无密码):

Enter same passphrase again:  再次输入相同的密码:

The key‘s randomart image is:
+---[RSA 2048]----+
|    .=+++B++     |
|    ..o * oo .   |
|  .      *  +    |
| o      . *  E   |
|o       So +     |
|.= ..  ..+  .    |
|..*oo o o.       |
| oo= + =.        |
|  ++= .o+        |
+----[SHA256]-----+

[[email protected] ~]# ssh-copy-id -i /root/.ssh/id_rsa [email protected]  #//远程复制
Are you sure you want to continue connecting (yes/no)? yes  #//是否确认连接
#/usr/bin/ssh-copy-id: INFO:尝试使用新键登录,以过滤任何已经安装的键
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
#/usr/bin/ssh-copy-id: INFO: 1 key(s)仍然需要安装——如果您现在收到提示,它将安装新的key
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

[email protected]‘s password:[输入root密码] 

Number of key(s) added: 1 #新增键数:1

#现在尝试登录到机器,:“ssh [email protected]”并且检查确保只添加了你想要的密钥。
Now try logging into the machine, with:   "ssh ‘[email protected]‘"
and check to make sure that only the key(s) you wanted were added.

到此为止Ansible环境部署就算完成了


Ansible命令模块

(1)commoand模块

命令格式:ansible [主机] [-m 模块] [-a args]

ansible-doc -l     //列出所有已安装的模块 注:按q退出

ansible-doc -s yum   //-s列出yum模块描述信息和操作动作

--command模块操作,下图:

1.1:指定192.168.179.135执行查看日期datwe操作

-----------------密钥面交互设置------------------------
[[email protected] ~]# ssh-agent bash
[[email protected] ~]# ssh-add
Enter passphrase for /root/.ssh/id_rsa:
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
----------------------------------------------

1.2:ansible hostserver -m command -a ‘date‘ //指定分类执行date

ansible mysql -m command -a ‘date‘

1.3:ansible all -m command -a ‘date‘

1.4:如果不加-m 则默认运行command模块

--cron模块

1:cron模块,如下图:
两种状态(state):present表示添加(可以省略),absent表示移除。

1.1:ansible-doc -s cron //查看cron模块信息

1.2:添加计划性任务

查看任务

1.3:移除计划任务,假如该计划任务没有取名字,name=None即可

--user模块

1:user模块操作,如下图:

user模块是请求的是useradd, userdel, usermod三个指令

ansible-doc -s user #查看模块信息

1.1:创建用户test01并查看有没有添加test01这个用户

1.2:删除用户test01

--group模块

group模块请求的是groupadd, groupdel, groupmod 三个指令。

1:查看模块信息
ansible-doc -s group

1.1:创建名为mysql的用户gid是306 system=yes是添加到系统用户

创建一个test01的用户,添加到mysql组,添加到系统用户,查看添加的用户

1.2:查看组:
ansible mysql -a ‘tail /etc/group‘

--copy模块

查看模块信息:
ansible-doc -s copy
1.在mysql主机上操作复制etc低下fstab到opt低下名为fstab.back 添加到root组

--file模块

1:创建名为mysql的用户并指定用户和组

    ansible mysql -m user -a ‘name=mysql system=yes‘
ansible mysql -m group -a ‘name=mysql system=yes‘

    //修改文件的属主属组权限等

  //设置/opt/fstab.link为/opt/fstab.back的链接文件

          //删除一个文件

      创建一个文件

      创建目录

--ping模块

ansible all -m ping

--service模块

ansible-doc -s service #//查看模块

#在hostserver主机上安装httpd服务

[[email protected] ~]# yum install httpd 
#//启动httpd服务
ansible hostserver -m service -a ‘enabled=true name=httpd state=started‘

#//在hostserver主机上查看是否开启
systemctl status httpd

script模块

ansible-doc -s script #//查看模块信息

--yum模块

#//查看模块信息

    ansible-doc -s yum
ansible mysql -m yum -a ‘name=zsh‘  

去mysql主机查看zsh

--setup模块

    #//查看模=模块信息
    ansible-doc -s setup
ansible mysql -m setup
//获取mysql组主机的facts信息

原文地址:http://blog.51cto.com/13645280/2155505

时间: 2024-10-12 17:07:10

自动化运维之Ansible安装与模块应用的相关文章

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

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

自动化运维之Ansible安装及基本模块应用

ansible简介 Ansible可以同时管理Redhat系的Linux,Debian系的Linux,以及Windows主机.管理节点只在执行脚本时与远程主机连接,没有特别的同步机制,所以断电等异常一般不会影响ansbile. 2.ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真

自动化运维之 Ansible——安装配置

Ansible相对于其他自动化运维工具(saltstack.puppet)的优势: Ansible是一款轻量级框架,基于各个模块实现各种功能,模块可根据需要自行开发 agentless 无需安装agent,可根据具体情况建立一台操作机 支持playbook剧本 python语言开发,做运维的都比较容易接受的语言 其他等等,一百度一大堆,自行百度吧~ 环境说明: 系统环境centos6.8 操作机 192.168.1.121 客户机 192.168.1.122 基本安装 安装gcc,用于编译pyt

自动化运维之Ansible应用基础模块(超详细)

Ansible是一种基于模块进行工作的框架结构.批量部署能力就是由Ansible所运行的模块实现的.简而言之Ansible是基于"模块"完成各种"任务"的. Ansible常用的核心模块 模块的基本语法如下 ansible [主机] [-m 模块] [-a args] //命令格式 # ansible-doc -l //列出所有已安装的模块 注:按q退出 # ansible-doc -s yum //-s列出yum模块描述信息和操作动作 1.command 模块 c

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

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

自动化运维工具——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

自动化运维之Ansible的安装部署与命令模块

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