运维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,一经查实,立即删除!

相关文章

剑指offer面试题19 二叉树的镜像

考察点 树的遍历知识点 题目 分析 我们分析算法题目的思路基本上都是归纳法,即通过举一些普通的例子来推理出算法流程,而画图又是举例子的常用手段,比如针对树或者链表画画图,针对数字类的举一些数字的例子寻找规律&#xff0c…

《Docker极简教程》--Docker在生产环境的应用--Docker在生产环境的部署

一、准备工作 1.1 硬件和基础设施要求 硬件和基础设施要求是在部署 Docker 到生产环境之前需要认真考虑和准备的重要方面,以下是一般性的要求: 服务器硬件: CPU:建议使用多核处理器,以支持同时运行多个容器。内存&a…

复制策略深入探讨

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

在MFC对话框中嵌入web网页时事件失效问题

2010-04-20 日志 在MFC对话框中嵌入web网页时,网页初始化中添加事件无效 document.body.onkeydown function () {//onkeydown"keydownbody()" 不能激发alert(event.keyCode);if(event.keyCode 27)//VK_ESCAPE //String.fromcharcode(A);{if (external…

C语言推荐书籍

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

自然语言处理Gensim入门:建模与模型保存

文章目录 自然语言处理Gensim入门:建模与模型保存关于gensim基础知识1. 模块导入2. 内部变量定义3. 主函数入口 (if __name__ __main__:)4. 加载语料库映射5. 加载和预处理语料库6. 根据方法参数选择模型训练方式7. 保存模型和变换后的语料8.代码 自然语言处理Gens…

Leetcode 3047. Find the Largest Area of Square Inside Two Rectangles

Leetcode 3047. Find the Largest Area of Square Inside Two Rectangles 1. 解题思路2. 代码实现 题目链接:3047. Find the Largest Area of Square Inside Two Rectangles 1. 解题思路 这道题倒是没啥特别的思路,直接暴力求解就是了,因此…

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

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

Redis分布式锁正确使用

分布式锁在日常开发中,用处非常的多。包括但不限于抢红包,秒杀,支付下单,幂等,等等场景。 分布式锁的实现方式有多种,包括redis实现,mysql实现,zookeeper实现等等。而其中redis非常适合作为分布式锁使用,并且在各个公司都大规模的使用。 本文将由浅入深的探究Redis分…

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 "? 原因: 一、可能打开没有关闭 二、刚刚编辑的没成功,乱码了,格式问题,重新配置