Ansible批量化管理

Ansible批量化管理

技能展示:
理解Ansible工作原理
配置Ansible配置文件
执行Ansible命令
编写Playbook配置文件
简介
随着移动互联网、物联网、互联网+、大数据、云计算等大规模的应用,以及人们日常生活中的互联网化,互联网也逐渐地普及干家万户,互联网的发展不仅影响我们的生活,同时也影响了整个经济体。在体验互联网带来便利的同时,人们也不再满足于"可以用",而"用得简单和方便"成为人们生活的标准。在国家政策、需求、利益的趋势下,互联网的发展速度可想而知。众所周知,智能的背后意味着复杂,意味着运维工程师的工作量加大,这一现象在互联网的发展中体现得淋漓尽致。在互联网迅速发展的同时,运维这个工作岗位也从默默无闻的后台逐步走向公众的视野,被更多的人所知晓,早期的互联网公司中服务器数量有十台、几十台的规模已经非常庞大,运维工程师同时操作十几乃至二十台机器,勉强可以完成。但是如何保证每个人的操作都完全一致呢?又如何保证所有的操作都能准确无误?今天的互联网公司,像淘宝、京东、腾讯等企业,拥有几十台甚至上百台机器早已不稀奇,再沿用传统的办法逐台维护已然不现实。在这样的背景下,运维自动化应运而生,而Ansible则是实现运维自动化的非常优秀的一款工具。
重点
理解Ansible工作机制
掌握Ansible的常用模块
编写Playbook文件实现自动化运维
理论讲解
Ansible概述
Ansible是近年越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为的失误. Ansible通过本身集成的非常丰富的模块实现各种管理任务,其自带模块超过上千个,更为重要的是,它的操作非常简单,即使新手也比较容易上手,但它提供的功能却非常丰富,在运维领域,它几乎可以做任何事情。
Ansible自2012年发布以来,很快在全球流行,其特点表现如下。
>Ansible基于Python开发,运维工程师对其二次开发相对较容易。
> Ansibled丰富的内置模块,基本可以满足一切需求。
> 管理模式非常简单,一条命令可以影响上千台机器。
>无客户端模式,底层通过SSH通信。
>Ansible发布后,也陆续被AWS, Google Cloud Platform, Microsoft Azure, Cisco, HP. VMware,Twitter等大公司接纳并投入使用。
Ansible没有客户端,也不需要在被管理主机添加代理程序,通过SSH完成底层通信,而SSH在Linux的发行版本中默认已经安装并启用。而在Windows系统下,则依赖于PowerShell, Ansible要求管理端必须是Linux系统,在管理节点通过应用模块将指令发送到被管理主机上,并在执行完毕后自动删除产生的临时文件。根据Ansible使用过程中的不同角色,可将其分为以下三个部分。
>使用者:如何使用Ansible实现自动化运维
>Ansible 工具集: Ansible可以实现的功能。
>作用对象: Ansible可以影响哪些主机?
1.使用者
如图所示, Ansible使用者可以采用多种方式和Ansible交互,图中为我们展示了四种方式:
CMDB: CMDB存储和管理着企业I架构中的各项配置信息,是构建TL项目的核心工具运维人员可以组合CMDB和Ansible,通过CMDB直接下发指令调用Ansible工具集完成操作者所希望达到的目标。
PUBLIC/PRIVATE方式: Ansible除了丰富的内置模块外,同时提供丰富的AP语言接口,如PHP. Python, PERL等多种流行语言,基于PUBLC/PRNATE, Ansible以AP调用的方式运行。
Ad-Hoc命令集: Users直接通过Ad-Hoc命令集调用Ansible工具集来完成任务。
Playbooks: Users预先编写好Ansible Playbooks, 通过执行Playbooks中预先编排好的任务集,按序执行任务。
在这里插入图片描述
2. Ansible工具集
Ansiple工具集包含nventory, Modules, Plugins和API,其中, Inventory用来管理设备列表,可以通过分组实现,对组的调用直接影响组内的所有主机; Modules是各种执行模块,几乎所有的管理任务都是通过模块执行的: Plugins提供了各种附加功能; APl为编程人员提供一个接口,可以基于此做Ansible的二次开发。具体表现如下。
Ansible Playbooks: 任务脚本,编排定义Ansible任务集的配置文件,由Ansible按序依次执行,通常是JSON格式的YML文件。
Inventory: Ansible管理主机清单。
Modules: Ansible执行命令功能模块,多数为内置的核心模块,也可以自定义。
Plugins:模块功能的补充,如连接类型插件、循环插件、变量插件,过滤插件等,该功能不常用。
API:供第三方程序调用的应用程序编程接口。
Ansible:该部分图中表示得不明显,组合Inventory, API, Modules, Plugins可以理解为是Ansible命令工具,其为核心执行工具。
3.作用对象
Ansibl的作用对象不仅仅是Linux和非Linux操作系统的主机,也可以作用于各类PUBLC/PRIVATE,商业和非商业设备的网络设施。
使用者使用Ansible或Ansible-playbooks时,在服务器终端输入Ansible的Ad-Hoc命令集或Playbooks后, Ansible会遵循预先安排的规则将Playbooks逐步拆解为Play,再将Play组织成Ansible可以识别的任务,随后调用任务涉及的所有模块和插件,根据Inventory中定义的主机列表通过SSH将任务集以临时文件或命令的形式传输到远程客户端执行并返回执行结果,如果是临时文件则执行完毕后自动删除。

基础知识
一.Ansible
1.Ansible的作用和特点
1)Ansible的作用
自动化运维工具
方便批量化配置服务或者执行命令
2)Ansible的特点
开源
使用python语言开发自动化运维工具
可以根据需要进行二次开发
管理模式简单,采用无客户端模式设计通过ssh通信
2.Ansible的角色
1)使用者
统一管理,批量化在客户端上配置访问运行命令
2)丰富的模块
Ansible的一个模块表示一个功能
模块越多功能越强大
3)作用对象
运维或者开发都可以快速上手
使用简单
二.配置ansible服务器端
1.配置ssh免交互验证
1)生成密钥对
[root@centos01 ~]# ssh-keygen -t rsa
2)上传公钥到管理客户端上
[root@centos01 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.100.20
[root@centos01 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.100.30
3)免交互式登录服务器端
[root@centos01 ~]# ssh root@192.168.100.20
[root@centos01 ~]# ssh root@192.168.100.30
2.配置ansible服务器端
1)安装ansible服务器端
切换光盘
在这里插入图片描述
把源的位置修改为ansible的位置

在这里插入图片描述
在这里插入图片描述
[root@centos01 ~]# yum -y install ansible
2)检查ansible版本
[root@centos01 ~]# ansible --version
在这里插入图片描述
3)配置ansible客户端
[root@centos01 ~]# vim /etc/ansible/hosts
在这里插入图片描述
3.测试客户端
1)加载配置文件方式测试
[root@centos01 ~]# ansible -i /etc/ansible/hosts client -m ping
在这里插入图片描述
2)ping客户端组测试
[root@centos01 ~]# ansible client -m ping
在这里插入图片描述
4.ansible的应用场景和常见选项
1)应用场景
非固化对客户端批量化操作
临时性对客户端管理或者状态检测操作
二次开发接口调用
2)ansible常见的选项
-v:显示详细信息
-i:加载客户端列表配置文件
-f:指定工具使用线程,默认5个
–private-key:指定密钥
-a:指定模块参数
-u:指定模块参数
–host-list:指定计算机列表
-m:指定模块
-M:加载自定义模块
三.Ansible模块的基本使用
在这里插入图片描述
1.交换式使用ansible
1)使用交换工具
[root@centos01 ~]# ansible-console
2)切换管理客户端组
root@all (2)[f:5]$ cd web
3)列出组中客户端
root@all (2)[f:5]$ list
在这里插入图片描述
2.shell模块
1)shell模块作用
远程执行linux系统命令
支持重定向和管道符
2)使用shell重定向操作
[root@centos01 ~]# ansible client -m shell -a ‘echo hello world!! > /root/1.txt’
在这里插入图片描述
输出查看
[root@centos01 ~]# ansible client -m shell -a ‘cat /root/1.txt’
在这里插入图片描述
3)查看客户端服务运行状态
[root@centos01 ~]# ansible client -m shell -a ‘netstat -anptu | grep sshd’
在这里插入图片描述
在这里插入图片描述
3.command模块
1)command模块的作用
远程主机执行linux命令
不支持管道符和重定向功能
2)command切换目录,切换到根目录显示根目录内容
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3)远程主机创建目录
在这里插入图片描述
4.copy模块
1)copy模块的作用
复制目录文件使用
修改复制目录文件所有者和权限
2)copy常见的选项
Dest:复制目标文件或者目录
Src:复制源文件或者目录
Mode:修改复制目录文件权限
Owner:修改所属用户信息
Group:修改所属组信息
Content:修改复制指定目标主机内容
3)使用copy模块
[root@centos01 ~]# ansible client -m copy -a ‘src=/etc/hosts dest=/root/hosts/ mode=777 owner=test group=root’
在这里插入图片描述
5.yum模块
1)yum模块作用
批量化安装程序
2)常见选项
Name:指定安装程序名字
Stare:程序操作persent安装,latest卸载程序
Enablerepo:开启指定源的ID
3)使用yum安装apache
[root@centos01 ~]# ansible client -m shell -a ‘mount /dev/cdrom /mnt’
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
[root@centos01 ~]# ansible client -m yum -a ‘name=httpd state=present’
4)检查apache是否安装成功
[root@centos01 ~]# ansible client -m shell -a ‘rpm -qa | grep httpd’
在这里插入图片描述
5)启动服务
[root@centos01 ~]# ansible client -m shell -a ‘systemctl start httpd’
在这里插入图片描述
6.service模块
1)service模块作用
管理Linux系统服务
2)常见的管理选项
Name:指定服务名字
State:started启动.stoped停止.restarted重新启动服务
Enabled=yes|no 是否设置开机自动启动
Runlevel:设置运行级别开机自动启动
3)管理apache服务
[root@centos01 ~]# ansible client -m service -a ‘name=httpd state=started enabled=yes’
7.user模块
1)user模块作用
批量化创建用户设置密码使用
2)常见选项
Name:用户名字
State=创建用户使用present.删除用户absent
Uid:指定用ID号
System=yes|no:是否设置系统账号
Group:指定基本组
Groups:指定附加组
Home:设置宿主目录
Move-home=yes|no:用户目录是否存在
Password:设置密码
Remove=yes|no:删除用户是否删除宿主目录
Comment:用户描述
3)创建用户
[root@centos01 ~]# ansible client -m user -a ‘name=bob system=yes uid=501 group=root
groups=root shell=/bin/bash password=pwd@123 comment=bob’
在这里插入图片描述
4)查看创建用户信息
[root@centos01 ~]# ansible client -m shell -a ‘tail -2 /etc/passwd’
在这里插入图片描述
8.Playbook
1)playbook作用
批量化部署服务或者修改服务配置信息
文件后缀类型是*.yml
2)playbiik常见的选项
Host:运行任务主机
Remote_user:远程主机运行任务的账号默认root
Task:创建任务列表,可以包含多个任务列表
Handlersl:触发器
Roles:角色
3)常见的选项
–syntax-check:检查yml文件是否有错误
-C:预测试
–list-hosts:将yml应用到计算机列表
–list-task:列出yml文件中的任务列表
–list-tages:任务列表的标签
-t:查看任务列表
–skip-tages:跳过特点任务
–start-at-task:从指定的任务列表表文件运行yml文件

感谢观看,拜拜ヾ(•ω•`)o啊啊😊😒😁

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值