运维SRE-15 自动化批量管理-ansible1

## 1.什么是自动化批量管理
重复性工作与内容: 思考如何自动化完成.
部署环境,批量查看信息,批量检查:自动化
一般步骤:1.如何手动实现2.如何自动化管理工具,批量实现3.注意事项:想要自动化一定要先标准化(所有环境,软件,目录一致)4.注意事项:尽量进行分组(比如:所有web服务器是1组)

2.自动化工具选择

自动化批量管理工具
Ansible基于python语言编写,使用极其简单,不需要客户端
Saltstack基于python语言编写,需要安装客户端
TereForm批量管理平台,批量创建阿里云服务器,批量创建aws服务器
Fabricpython使用它
Chef了解即可
puppet古老一些的批量管理工具

3.Ansible架构

在这里插入图片描述

4.Ansible极速使用指南

4.1 环境准备

ansible环境
ansible管理端m01,10.0.0.210
被管理机器web01 10.0.0.7
被管理机器backup 10.0.0.41
被管理机器nfs01 10.0.0.31
被管理机器db01 10.0.0.51
sh /server/scripts/ssh_check.sh hostname

4.2 ansible部署

m01

yum install -y ansible
#epel源中的软件包

4.3 初步配置主机清单(inventory)

root@m01 /etc/ansible]# cat hosts 
[hbinz]
172.16.1.7
172.16.1.31
172.16.1.41
172.16.1.51

4.4与ansible的第一次接触

ansible hbinz -m ping
#第一次会提示yes/no

在这里插入图片描述

4.5 小结

1.密钥认证
2.环境准备,部署ansible
3.修改ansible 主机清单
4.测试,ansible hbinz -m ping
ansible命令格式
ansible主机分组-m指定模块
ansible主机分组-m指定模块-a 指定模块中的选项
moduleaction

5.ansible配置文件

ansible.cfg   #ansible配置文件
#71:host_key_checking = False  主机校验关掉
hosts			#ansible默认的主机清单		

6.ansible主机清单

6.1 基本格式

[root@m01 /etc/ansible]# cat hosts 
[hbinz]  #[组的名字]
172.16.1.7
172.16.1.31
172.16.1.41
172.16.1.51[web]
172.16.1.7
[db]
172.16.1.51
[nfs]
172.16.1.31
[backup]
172.16.1.41

6.2指定用户名,密码,端口

主机清单中指定信息
连接的ssh端口ansible_ssh_root=22
连接的ssh端口ansible_ssh_user=root
连接的ssh端口ansible_ssh_pass=‘thinker’
[web]
172.16.1.7 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='1'
[db]
172.16.1.51
[nfs]
172.16.1.31
[backup]
172.16.1.41

6.3 子组

我想把多个主机分组进行合并,比如把db,nfs,backup合并成一个组叫data组.
[web]
172.16.1.7
[db]
172.16.1.51
[nfs]
172.16.1.31
[backup]
172.16.1.41[data:children] #data:children表示data是创建的子组,组里面包含 db,nfs,backup3个组.
db
nfs
backup

6.4主机清单案例

1)案例1:查看与使用指定的子组 data
ansible data -m command -a 'hostname'
2)案例2:查看指定的组db
ansible db -m command -a 'hostname'
3)案例3:查看所有主机情况
ansible all -m command -a 'hostname'
4)案例4:查看某一机器
ansible 172.16.1.7 -m command -a 'hostname'

7.ansible核心模块

7.1模块概述

模块分类
命令和脚本模块command模块,默认的模块,执行简单命令,不支持特殊符号
shell模块,执行命令,支持特殊符号
script模块,分发脚本并执行
文件file,创建目录,文件,软链接
copy,远程分发文件,修改权限,所有者,备份
服务systemd服务管理
service服务管理(了解)
软件包yum源,yum repository
yum命令
get_url下载软件
系统管理mount模块,挂载
cron模块,定时任务
用户管理group模块,管理用户组
user模块,管理用户
其他可以研究压缩解压(unarchive),rsync模块(synchronize),数据库模块(mysql_db,mysql_user)…
其他ansible管理docker k8s zabbix grafana…
用于调试模块ping 模块检查,ansible与其他节点连通性
debug模块,检查/显示变量

7.2如何查询帮助

通过命令: ansible-doc -s command
查看官网:

传送门

7.3ansible命令与脚本类模块

1)command模块

仅支持简单命令,不支持特殊符号,管道....
⚠ 这个模块是默认模块,ansible不加上模块,默认就使用这个模块.
ansible all -m command -a '命令'
ansible all -a 'hostname' #相当于省略 -m command

2)shell模块

与command类似,shell模块支持特殊符号,执行脚本...
ansible all -m shell -a 'ip a s eth0|sed -n 3p' #command不支持特殊符号
  • ansible颜色
    • 绿色表示正常
    • 黄色表示执行正常,状态变化
    • 红色表示错误,输出错误信息
    • 紫色表示警告,建议

3)script模块-传输脚本到被管理端并执行脚本

传输脚本
执行脚本
安装ipvsadm
cat /server/scripts/yum.sh
yum install -y ipvsadm#安装
ansible db -m script -a '/server/scripts/yum.sh'
#检查
ansible db -m shell -a 'rpm -qa|grep ipvsadm'
[root@m01 /etc/ansible]# ansible db -m shell -a 'rpm -qa|grep ipvsadm'
[WARNING]: Consider using the yum, dnf or zypper module rather than running 'rpm'.  If you need to use command because yum, dnf or zypper is insufficient you can add 'warn: false' to this command task
or set 'command_warnings=False' in ansible.cfg to get rid of this message.
172.16.1.51 | CHANGED | rc=0 >>
ipvsadm-1.27-8.el7.x86_64

4)命令与脚本模块

模块含义应用
command模块执行命令简单命令,不含特殊符号,默认的模块ansible all -a 'hostname'
shell模块执行命令或脚本执行含有特殊符号:管道,反引号,{}的命令,运行脚本(脚本在管理端).
script模块先传输脚本,然后运行脚本一般用于执行脚本

7.4ansible-文件与目录管理模块

  • file 创建文件,目录
  • copy 远程传输文件,目录,类似于scp

1)file模块
管理文件或目录,软链接

file模块中的选项
path路径(目录,文件)必须要写
src(source源)源文件一般用于link(创建软链接模式)用于指定源文件
state(状态)(模式)state=directory 创建目录state=file (默认)更新文件,如果文件不存在也不创建state=link 创建软链接state=touch 创建文件state=absent 删除

案例01-创建目录/hbinz/目录

ansible all -m file -a 'path=/hbinz state=directory'

案例02-创建文件/hbinz/hbinz.txt文件

ansible all -m file -a 'path=/hbinz/hbinz.txt state=touch'
ansible all -a 'ls -l /hbinz'

案例03-创建软链接 /hbinz/hbinz.txt到/tmp/hbinz.txt.soft

ansible all -m file -a 'src=/hbinz/hbinz.txt path=/tmp/hbinz.txt.soft state=link'ansible all -a 'ls -l /tmp/hbinz.txt.soft'

案例04-删除文件、目录、软链接

ansible all -m file -a 'path=/hbinz/hbinz.txt state=absent'
ansible all -m file -a 'path=/hbinz state=absent'
ansible all -m file -a 'path=/tmp/hbinz.txt.soft state=absent'

案例05-创建文件/tmp/hbinz.txt,所有者root,用户组root,权限755

ansible all -m file -a 'path=/tmp/hbinz.txt owner=root group=root mode=755 state=touch'
ansible all -a 'ls -l /tmp/oldboy.txt'

2)copy远程传输模块

copy模块
srcsource源文件
destdestination目标
backupbackup=yes 则会在覆盖前备份
mode修改权限
owner修改为指定所有者
group修改为指定用户组

案例01-传输/etc/hosts文件到/etc/hosts

ansible all -m copy -a 'src=/etc/hosts dest=/etc/hosts'

案例02–传输/etc/hosts文件到/etc/hosts-先备份然后修改

ansible all -m copy -a 'src=/etc/hosts dest=/etc/hosts backup=yes'

3)文件传输小结

文件管理与传输含义
file创建/删除 文件/目录,软链接
copy远程分发文件/目录,软件包,压缩包…

7.5ansible-服务管理模块

就是用了systemctl 命令
启动/关闭/重启服务
开机自启动/开机不自启动

1)systemd

systemd
name用于指定服务名称
enabled控制服务的开机自启动 enabled=yes /enable=no
state表示服务开,关,重启…state=started 开启state=stopped 关闭state=reloaded 重读配置文件(服务支持的情况下sshd nfs nginx)state=restarted 重启(关闭再开启)
daemon-reloadyes是否重新加载对应的服务的管理配置文件(讲解了systemctl配置文件.)
案例01-关闭firewalld
ansible all -m systemd -a 'name=firewalld enabled=no state=stopped'
ansible all -a 'systemctl state firewalld'

案例02-开启sshd服务

ansible all -m systemd -a 'name=sshd enabled=yes stat=started'
ansible all -a 'systemctl state sshd'

案例03-重启backup这台机器上面的rsync服务

ansible backup -m systemd -a 'name=rsyncd state=restarted'

2)service

服务管理模块systemd模块service模块
开机自启动enabledenabled
服务名称namename
服务开关重启statestate
运行级别runlevel(运行级别)
重启加载systemctl配置daemon_reload=yes systemctl daemon-reload

3)服务管理模块小结

模块
systemd管理linux 红帽7以上推荐使用,ubuntu…
service6及一下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/702693.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

复制策略深入探讨

在之前的博客中,我们讨论了复制最佳实践和不同类型的复制,例如批量、站点和存储桶。但是,随着所有这些不同类型的复制类型的出现,人们不得不想知道在哪里使用哪种复制策略?从现有 S3 兼容数据存储迁移数据时&#xff0…

C语言推荐书籍

本书详细讲解了C语言的基本概念和编程技巧。全书共17章。第1章、第2章介绍了C语言编程的预备知识。第3章~第15章详细讲解了C语言的相关知识,包括数据类型、格式化输入/输出、运算符、表达式、语句、循环、字符输入和输出、函数、数组和指针、字符和字符串…

WPF 【十月的寒流】学习笔记(1):DataGrid过滤

文章目录 相关链接代码仓库前言环境DataGrid 数据筛选项目配置使用原理主要代码(详细代码可以看我的GitHub仓库)Models.PersonDataGirdViewDataGridViewModel 实现效果 总结 相关链接 十月的寒流 在 WPF 中制作 DataGrid 的数据筛选功能 WPF 中如何制作 …

2024年上半年第一次课

文章目录 一、加入课程QQ群(一)加入QQ群(二)加群要求 二、加入超星学习通(一)安装超星学习通(二)利用学习通签到(三)查看课程内容(四)…

Python多线程编程:深入理解threading模块及代码实战【第99篇—Multiprocessing模块】

Python多线程编程:深入理解threading模块及代码实战 在Python编程中,多线程是一种常用的并发编程方式,它可以有效地提高程序的执行效率,特别是在处理I/O密集型任务时。Python提供了threading模块,使得多线程编程变得相…

CSS 的块级元素和行内元素

CSS 的块级元素和行内元素 常见的块级元素:h1 - h6,p,div, ul, ol, li等 常见的行内元素:a,strong,b,em,i,span等 块级元素的特点 独…

数字化转型导师坚鹏:政府数字化转型智慧城市类案例研究

政府数字化转型智慧城市类案例研究 课程背景: 很多地方政府存在以下问题: 不清楚政府数字化转型的智慧城市类成功案例 不清楚政府数字化转型的城市大脑类成功案例 不清楚政府数字化转型的综合实践类成功案例 课程特色: 针对性强 …

MATLAB环境下基于粒子群优化算法和离散小波变换的心电信号降噪

由于现实环境的复杂性以及信号获取设备的非理想特性等原因,导致人们在获得信号的过程中会引入各种各样的噪声成分,这不但会使得信号质量达不到实际要求,而且会掩盖信号中的重要细节。这也就要求我们在对数字信号进行具体地分析处理之前&#…

Unity接入SQLite (一):SQLite介绍

1.简介 SQLite是一个开源的嵌入式关系数据库管理系统。它是一种轻量级的数据库引擎,不需要单独的服务器进程,可以直接嵌入到应用程序中使用。Sqlite使用简单、高效,并且具有对标准SQL的完整支持。它适用于需要在本地存储和访问数据的应用程序…

Python读写XML文件的技术指南【第100篇—读写XML文件】

Python读写XML文件的技术指南 在软件开发中,XML(可扩展标记语言)是一种广泛用于数据存储和交换的格式。Python作为一门强大而灵活的编程语言,提供了许多库和工具来处理XML文件。本篇技术博客将介绍如何使用Python读写XML文件&…

免编程经验,搭建宠物店小程序轻松实现

在如今的互联网时代,小程序商城已成为各行业推广和销售的热门方式。对于花店来说,搭建一个自己的小程序商城不仅可以提升品牌形象,还可以方便顾客在线选购花卉产品。下面就来教大家如何轻松搭建一个花店小程序商城,并通过引流获得…

.NET Core使用NPOI导出复杂,美观的Excel详解

前言: 这段时间一直专注于数据报表的开发,当然涉及到相关报表的开发数据导出肯定是一个不可避免的问题啦。客户要求要导出优雅,美观的Excel文档格式的来展示数据,当时的第一想法就是使用NPOI开源库来做数据导出Excel文档&#xf…

【大数据】Flink 内存管理(四):TaskManager 内存分配(实战篇)

《Flink 内存管理》系列(已完结),共包含以下 4 篇文章: Flink 内存管理(一):设置 Flink 进程内存Flink 内存管理(二):JobManager 内存分配(含实际…

解决启动服务报./nginx -s reload nginx: [emerg] unknown directive “错误

重启服务报错 bug: ./nginx -s reload nginx: [emerg] unknown directive "? 原因: 一、可能打开没有关闭 二、刚刚编辑的没成功,乱码了,格式问题,重新配置

嵌入式学习 Day 23

一. 进程基本概念: 1.进程: 程序:存放在外存中的一段数据组成的文件 进程:是一个程序动态执行的过程,包括进程的创建、进程的调度、进程的消亡 2.进程相关命令: 1.top 动态查看当前系统中的所有进程信息(根据CPU占用率排序)…

01|Mysql底层存储引擎

1. 聚集索引(聚簇)与非聚集索引 1.1 聚集索引 索引和数据存储在一起。叶子节点存储了完整的数据记录; 1.2 非聚集索引 MyISAM存储引擎就是非聚集索引,索引和数据文件是分开存储的。索引在MYI文件中,数据在MYD文件中…

基于springboot+vue的音乐网站(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

【GameFramework框架内置模块】3、数据表(Data Table)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录: https://blog.csdn.net/q7…

zemax人眼模型

人眼模型可以从下面这张图来提取 按照前后顺序,简化模型中跟成像直接相关的就是: 角膜、前方(液状体)、瞳孔、晶状体、玻璃体、视网膜 一般情况下我们认为瞳孔可以作为光阑 入瞳4mm视场(近轴像高)5波长0…

【Java程序设计】【C00290】基于Springboot的网上书城管理系统(有论文)

基于Springboot的网上书城管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的网上书城管理系统 本系统分为系统功能模块、管理员功能模块以及用户功能模块。 系统功能模块:在系统首页可以查看首…