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

news/发布时间2024/5/15 8:42:49
## 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.bcls.cn/kima/4200.shtml

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

相关文章

vue+node.js美食分享推荐管理系统 io551

,本系统采用了 MySQL数据库的架构,在开始这项工作前,首先要设计好要用到的数据库表。该系统的使用者有二类:管理员和用户,主要功能包括个人信息修改,用户、美食类型、美食信息、订单信息、美食分享、课程大…

基于Python网络爬虫的IT招聘就业岗位可视化分析推荐系统

文章目录 基于Python网络爬虫的IT招聘就业岗位可视化分析推荐系统项目概述招聘岗位数据爬虫分析系统展示用户注册登录系统首页IT招聘数据开发岗-javaIT招聘数据开发岗-PythonIT招聘数据开发岗-AndroidIT招聘数据开发岗-其它招聘岗位数据分析算法方面运维方面测试方面招聘岗位薪…

xff注入 [CISCN2019 华东南赛区]Web111

打开题目 看见smarty 想到模板注入 又看见ip 想到xff注入 一般情况下输入{$smarty.version}就可以看到返回的smarty的版本号。该题目的Smarty版本是3.1.30 在Smarty3的官方手册里有以下描述: Smarty已经废弃{php}标签,强烈建议不要使用。在Smarty 3.1&#xff…

vue3+js 实现记住密码功能

常见的几种实现方式 1 基于spring security 的remember me 功能 ​​​​​​​ localStorage 除非主动清除localStorage 里的信息 ,不然永远存在,关闭浏览器之后下次启动仍然存在 存放数据大小一般为5M 不与服务器进行交互通信 cookies 可以…

解决弹性布局父元素设置高自动换行,子元素均分高度问题(align-content: flex-start)

案例&#xff1a; <view class"abc"><view class"abc-item" v-for"(item,index) in 8" :key"index">看我</view> </view> <style lang"less">.abc{height: 100px;display: flex;flex-wrap: …

Sublime Text4配置C#运行环境

这里写自定义目录标题 前言部署.NET环境Sublime Text4配置C#编译环境1. 下载插件 运行测试 前言 今天把家里的9年前的远古神机搬了出来&#xff0c;重装了个win7的精简版&#xff0c;本打算装个VScode测试一下是否能写C#代码&#xff0c;结果是可以的&#xff0c;但&#xff0…

ESP8266智能家居(4)——开发APP基础篇

1.前期准备 安装好Android studio 开发环境 准备一台完好的安卓手机 手机要处于开发者模式 设置 --->关于手机---> 一直点击版本号 &#xff08;不同手机进入开发者模式的步骤可能不太一样&#xff09; 进入开发者模式后&#xff0c;找到辅助功能&#xff0c;打开开…

C++基础学习——哈希表的封装

目录 ​编辑 一&#xff0c;实现一个可封装的哈希表 1&#xff0c;哈希表的节点 2&#xff0c;哈希表的成员 3&#xff0c;哈希表成员方法的实现 4&#xff0c;迭代器的实现 5&#xff0c;在哈希表中加入迭代器 二&#xff0c;封装哈希表 1&#xff0c;unorder_map封装 2…

HarmonyOS—代码Code Linter检查

Code Linter代码检查 Code-Linter针对ArkTS/TS代码进行最佳实践、编程规范方面的检查&#xff0c;目前还会检查ArkTS语法规则。开发者可根据扫描结果中告警提示手工修复代码缺陷&#xff0c;或者执行一键式自动修复&#xff0c;在代码开发阶段&#xff0c;确保代码质量。 检查…

unity学习(41)——创建(create)角色脚本(panel)——UserHandler(收)+CreateClick(发)——发包!

1.客户端的程序结构被我精简过&#xff0c;现在去MessageManager.cs中增加一个UserHandler函数&#xff0c;根据收到的包做对应的GameInfo赋值。 2.在Model文件夹下新增一个协议文件UserProtocol&#xff0c;内容很简单。 using System;public class UserProtocol {public co…

基于django的购物商城系统

摘要 本文介绍了基于Django框架开发的购物商城系统。随着电子商务的兴起&#xff0c;购物商城系统成为了许多企业和个人创业者的首选。Django作为一个高效、稳定且易于扩展的Python web框架&#xff0c;为开发者提供了便捷的开发环境和丰富的功能模块&#xff0c;使得开发购物商…

基于Java SSM框架实现高校网课管理系统项目【项目源码+论文说明】

基于java的SSM框架实现高校网课管理系统演示 摘要 随着移动应用技术的发展&#xff0c;越来越多的学生借助于移动手机、电脑完成生活中的事务&#xff0c;许多的行业也更加重视与互联网的结合&#xff0c;以提高教学的教育水平和寻求更高的经济利益。针对高校网课管理系统&…

EI论文联合复现:含分布式发电的微网/综合能源系统储能容量多时间尺度线性配置方法程序代码!

适用平台&#xff1a;Matlab/Gurobi 程序提出了基于线性规划方法的多时间尺度储能容量配置方法&#xff0c;以满足微电网的接入要求为前提&#xff0c;以最小储能配置容量为目标&#xff0c;对混合储能装置进行容量配置。程序较为基础&#xff0c;算例丰富、注释清晰、干货满满…

[linux]进程间通信(IPC)———共享内存(shm)(什么是共享内存,共享内存的原理图,共享内存的接口,使用演示)

一、什么是共享内存 共享内存区是最快的&#xff08;进程间通信&#xff09;IPC形式。一旦这样的内存映射到共享它的进程的地址空间&#xff0c;这些进程间数据传递不再涉及到内核&#xff0c;换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据。注意&#xff1a;…

亿道丨三防平板丨加固平板丨三防加固平板丨改善资产管理

库存资产管理中最重要的部分之一是准确性&#xff1b;过时的库存管理技术会增加运输过程中人为错误、物品丢失或纸张损坏的风险。如今随着三防平板电脑的广泛使用&#xff0c;库存管理也迎来了好帮手&#xff0c;通过使用三防平板电脑能够确保库存管理、数据存储和记录保存的准…

Linux-用户和权限(黑马学习笔记)

认识root用户 root用户&#xff08;超级管理员&#xff09; 无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。 ● 在Linux系统中&#xff0c;拥有最大权限的账户名为&#xff1a;root&#xff08;超级管理员&#xff09; ● 而在前期&#xff0c;我们一直…

apidoc接口文档的自动更新与发布

文章目录 一、概述二、环境准备三、接口文档生成1. 下载源码2. 初始化3.执行 四、文档发布五&#xff0c;配置定时运行六&#xff0c;docker运行 一、概述 最近忙于某开源项目的接口文档整理&#xff0c;采用了apidoc来整理生成接口文档。 apidoc是一个可以将源代码中的注释直…

AWS安全组是什么?有什么用?

最近看到小伙伴在问&#xff0c;AWS安全组是什么&#xff1f;有什么用&#xff1f;今天我们大家就来简单聊聊&#xff0c;仅供参考哦&#xff01; AWS安全组是什么&#xff1f;有什么用&#xff1f; 【回答】&#xff1a;AWS安全组是一种虚拟防火墙&#xff0c;用于控制进出…

Zookeeper特性与节点数据类型详解

Zookeeper特性与节点数据类型详解 Zookeeper简介 一个基于观察者模式&#xff0c;主要是用来解决分布式集群应用系统一致性问题的协调框架&#xff0c;基于CP机制 本质是一个分布式的小文件存储系统(文件系统监听机制)提供基于类似于文件系统的目录树方式的数据存储&#xff…

Git合并固定分支的某一部分至当前分支

在 Git 中&#xff0c;通常使用 git merge 命令来将一个分支的更改合并到另一个分支。如果你只想合并某个分支的一部分代码&#xff0c;可以使用以下两种方法&#xff1a; 1.批量文件合并 1.1.创建并切换到一个新的临时分支 首先&#xff0c;从要合并的源分支&#xff08;即要…
推荐文章