小白到运维工程师的自学之路 第五十四集 (ansible自动化运维工具)

news2024/11/29 4:43:00

一、概述

Ansible是一种开源的自动化工具,用于自动化任务的执行、配置管理和应用部署。它采用基于Python编写的简单、轻量级的语法,可以通过SSH协议远程管理和配置多台计算机。

Ansible的主要特点包括:

1、简单易用:设计简单,语法清晰,无需特殊培训即可上手使用。

2、基于模块化的架构:使用各种内置和第三方的插件和模块,可以轻松地扩展功能。

3、配置管理:可以管理各种操作系统、网络设备和云平台等的配置。

4、任务自动化:可以自动执行各种任务,如软件安装、服务启停等。

5、基于剧本(Playbook)的自动化:可以编写剧本来定义一系列任务和配置,实现复杂的自动化流程。

6、可扩展性:可以与其他工具和平台集成,如监控系统、版本控制工具等。

二、工作原理

Ansible的工作原理基于以下几个核心概念:

1、控制节点(Control Node):控制节点是指安装了Ansible的机器,可以是任何一台可以访问到被管理节点的计算机。在控制节点上,管理员可以编写Ansible的配置文件和剧本,然后使用Ansible命令行工具来执行这些任务。

2、主机清单(Inventory):主机清单是一个文本文件,用于定义被管理节点的主机列表和相关的配置信息。其中可以包含主机名、IP地址、SSH连接信息等。管理员可以根据需要在主机清单中组织和分类主机。

3、模块(Modules):模块是Ansible的核心组成部分,用于执行特定的任务。Ansible自带了众多内置模块,如文件操作、软件包管理、服务管理等。管理员可以通过在剧本中使用模块来指定需要执行的任务,并传递参数。

4、剧本(Playbook):剧本是一个定义了一系列任务和配置的YAML格式文件。通过剧本,管理员可以描述需要在被管理节点上执行的操作。剧本由一个或多个Play组成,每个Play包含了一组任务和要操作的主机列表。

5、执行流程:管理员在控制节点上编写好剧本,然后使用Ansible命令行工具执行剧本。当执行命令时,Ansible会首先与被管理节点建立SSH连接,然后将剧本分发到被管理节点上,并在每个节点上按照剧本定义的任务进行执行。执行完成后,Ansible会将执行结果返回到控制节点。

三、ansible的应用

Ansible没有客户端,也不需要在被管理主机添加任何代理程序,通过SSH完成底层通信,而SSH在Linux的发型版本中默认已经安装并启用,而在Windows系统下则依赖于PowerShell,Ansible要求管理端必须是Linux系统,在管理节点通过应用模块将指令发送到被管理主机上,并在执行完毕后自动删除产生的临时文件,根据Ansible使用过程中不同角色,可将其分为三个部分。

1、使用者如何使用Ansible实现自动化运维?

2、Ansible的工具集,Ansible可以实现的功能?

3、作用对象,Ansible可以影响哪些主机?

四、ansible的使用者

1、CMDB:CMDB系统存储和管理着企业IT架构中的各种配置信息,是构建ITL项目核心工具,运维人员可以组合CMDB和Ansible,通过CMDB直接下发指令调用Ansible工具完成操作者所希望达到的目标。

2、PUBLIC/PRIVATE方式,Ansible除了丰富的内置模块外,同时提供丰富的API语言接口,如PHP,Pythone,PERL等多种流行语言,基于PUBLIC/PRIVATE,Ansible以API调用的方式运行。

3、Ad-Hoc命令集,Users直接通过Ad-Hoc命令集调用Ansible工具来完成工作。

4、Playbooks:Users预先编写好Ansible Playbooks,通过执行Playbooks中预先编排好的任务集按序执行命令。

五、ansible的工具集合

Ansible工具集合了inventory,Moudles,Plugins和API。其中,inventory用来管理设备列表,可以通过分组(不同的业务)实现,对组的调用直接影响组内所有的主机;Moudles是各种执行模块,几乎所有的管理任务都是通过模块来执行的;Plugins提供了各种附加功能;API为编程人员提供了一个调用接口,可以做Ansible的二次开发具体表现如下:

1、Ansible Playbook:任务脚本,编排定义Ansible任务集的配置文件,由Ansible按序依次执行,通常是JSON格式的YML/YAML文件;

2、inventory:Ansible管理主机清单

3、Moudle:Ansible执行命令功能模块,多数为内置的核心模块也可以用户自定义;

4、Plugins:模块功能的补充,如连接类型插件,循环插件,变量插件,过滤插件等,该功能不常用。

5、API:提供第三方程序调用的应用程序编程接口;

六、作用对象

Ansible的作用对象不仅仅是Linux和非Linux操作系统的主机,也可以作用于各类PUBLIC/PRIVATE,商业和非商业设备的网络设施。

使用者使用Ansible或Ansible-playbooks时,在服务器终端输入Ansible的Ad-Hoc命令集或playbooks后,Ansible会遵循预先定义安排的规则将Playbooks逐步拆解为Play,再将Play组织成Ansible可以识别的任务,随后调用任务涉及的所有模板和插件,根据inventory中自定义的主机列表通过SSH将任务集以临时文件或命令的形式传输给远程客户端执行并返回执行结果,如果是临时文件则执行完毕后自动删除。

七、准备工作

1、准备三台或多台服务器

2、三台主机关闭防火墙

3、三台主机互相通联

4、三台主机互相配置ssh免密登录

八、安装部署

三台主机都按照ansible
yum -y install ansible 

修改主机的配置文件

vim /etc/ansible/hosts
到最后一行插入
[syh]               组名
192.168.77.111      成员ip
192.168.77.115      成员ip

ok这样ansible就配置完成了

九、ansible的使用

ansible命令格式:ansible  要执行命令的组  -m  要使用的模块  -[选项]   指定模块参数

在ansible中有3000多个模块,ansible通过模块来控制组中的成员执行命令,修改文件内容,安装软件等这里只写几个常用的模块

配置完成后测试
ansible -i /etc/ansible/hosts  syh -m  ping
这里-i选项表示inventory 默认为/etc/ansible/hosts
-m表示指定模块
ping是一个模块用来测试

 1、command模块

command模块在远程主机执行命令,但是不支持管道,重定向等shell的特征,常用参数如下(不支持管道,不建议使用)。

  1. chdir:在远程主机上运行命令前要提前进入的目录

  2. creates:在命令运行时创建一个文件,如果文件已经存在,则不会创建任务

  3. removes:在命令运行时移除一个文件,如果文件不存在,则不会执行移除任务

  4. executable:指明运行命令的shell程序

远程查看组中成员家目录的内容
ansible syh -m command -a "chdir=/root ls -l"

查看组成员的的时间和平均负载
ansible syh -m command -a "uptime"

 2、shell模块

shell模块在远程主机执行命令,相当于调用远程主机的shell进程,然后在该shell下打开一个子shell运行命令,和command模块的区别是它支持shell特征,如管道,重定向等。

重定向
ansible syh -m shell -a "echo 111 > 1.txt"

测试管道符
ansible syh -m shell -a 'ifconfig ens33 | awk 'NR==2' "

 3.raw模块

最原始的方式运行命令(不依赖python,仅通过ssh实现)

清除yum缓存
ansible syh -m raw -a "yum clean all"

4、copy模块

copy模块用于复制指定主机文件到远程主机的指定位置,常见参数如下

  1. dest:指出复制文件的目标目录位置,使用绝对路径。如果源是目录,指目标也要是目录,如果目标文件已经存在会覆盖原有内容。

  2. src:指出源文件的路径,可以使用相对路径或绝对路径,支持直接指定目录,如果源是目录则目标也要是目录

  3. mode:指出复制时,目标文件的权限 可选

  4. owner:指出复制时,目标文件的属主 可选

  5. group:指出复制时,目标文件的属组 可选

  6. content:指出复制到目标主机上的内容,不能与src一起使用,相当于复制content指明的数据到目标文件中

特别提示:

参数:backup=yes===>意思是,如果目标路径下,有与我同名但不同内容的文件时,在覆盖前,对目标文件先进行备份。

所有被管理端节点必须安装libselinux-python包

将syh组中主机的/etc/hosts文件拷贝到/tmp下 指定权限为777 更改属主为syh更改属组为root
ansible syh -m copy -a "src=/etc/hosts dest=/tmp mode=777 owner=Rich group=root"

查看

 5、yum模块

Yum模块基于yum机制,对远程主机管理程序包,常用参数如下。

  1. name:程序包的名称,可以带上版本号,如不指定版本号默认安装为最新版本

  2. state=present | latest | absent:指明对程序包执行的操作,present表示安装程序包,latest表示安装最新版本的程序包,absent表示卸载程序包

  3. disablerepo:在用yum安装时禁用某个仓库的ID

  4. enablerepo:在用yum安装时启用某个参考的ID

  5. conf_file:yum运行时的配置文件而不是使用默认的配置文件

  6. diable_gpg_check=yes | no:是否启用完整性校验功能

在组成员中安装dns服务
ansible syh -m yum -a "name=bind state=present"

查看

7.service模块 

Service模块为用来管理远程主机上的服务的模块,常见参数如下:

  1. name:被管理的服务名称

  2. state=started | stopped | restarted:动作包含启动关机或重启

  3. enabled=yes | no:表示是否设置该服务开机自启动

  4. runlevel:如果设定了enabled开机自启动,则要定义在哪些运行目标下自启动

启动组成员中http服务,并设置为开机自启
ansible syh -m service -a "name=httpd state=started enabled=yes"

 查看

 8、user模块

User模块用于管理远程主机上的用户账户,常见参数如下:

  1. name:必选参数  账号名称

  2. state=present | absent:创建账号或者删除账号,present表示创建,absent表示删除

  3. system=yes | no:是否为系统账号

  4. uid:用户UID

  5. group:用户的基本组

  6. groups:用户的附加组

  7. shell:默认使用的shell

  8. home:用户的家目录

  9. move_home=yes | no:如果设置的家目录已经存在,是否将已经存在的家目录进行移动

  10. password:用户的密码,建议使用加密后的字符串

  11. comment:用户的注释信息

  12. remove=yes | no:当state=absent时,是否删除用户的家目录

创建一个程序用户
ansible syh -m user -a 'name=user1 system=yes uid=502 group=root groups=sshd shell=/sbin/nologin home=/home/user1 password=user1 comment="test user"' 

 9、script模块

script模块能够实现远程服务器批量运行本地的shell脚本

vim /opt/file.sh                  在opt目录下创建一个创建20个测试文件的脚本
#!/bin/bash

touch /tmp/file{1..20}.txt

 

查看

 十、playkook(剧本)的使用

playbook格式:ansible-playbook -[选项] 编写的yml文件路径

Playbook配置文件使用YAML语法,具有简洁明了,结构清晰等特点。Playbook配置文件类似于shell脚本,是一个YAML格式的文件,用于保存针对特定需求的任务列表,前面介绍的ansible命令虽然可以完成各种任务,但是当配置一系列任务时,逐条输入命令就显得效率非常低下,更有效的方式在playbook配置中配置所有的任务代码,利用ansible-playbook命令执行该文件,可以实现自动化运维,YAML文件的扩展名通常为.yaml或.yml

YAML语法和其他高级语言类似,其结构通过缩进来展示,通过“-“来表达选项,通过冒号“:”来分隔键和值。整个文件以“---”开始并以“”结束

1、playbook选项

--syntax-check:检测yaml文件的语法

-C(--check):测试,不会改变主机的任何配置

--list-hosts:列出yaml文件影响的主机列表

--list-tasks:列出yaml文件的任务列表

--list-tags:列出yaml文件中的标签

-t TAGS(--tags=TAGS):表示只执行指定标签的任务

--skip-tags=SKIP_TAGSS:表示除了指定标签任务,执行其他任务

--start-at-task=START_AT:从指定任务开始往下运行

2、修改配置文件(方便测试)

vim /etc/ansible/hosts
[test1]
192.168.77.112

[test2]
192.168.77.115

 3、编写playbook

所有的“-”和“:”后面均有空格,而且要注意缩进和对齐

Playbook的核心元素包含:

  1. hosts:任务的目标主机,多个主机用冒号分隔,一般调用/etc/ansible/hosts中的分组信息

  2. remote_user:远程主机上,运行此任务的默认为root运行

  3. tasks:任务,即定义的具体任务,由模块定义的操作列表

  4. handlers:触发器,类似tasks,只是在特定的条件下才会触发任务。某任务的状态在运行后changed时,可通过“notify”通知给相应的handlers进行触发执行。

  5. roles:角色,将hosts剥离出去,由tasks,handlers等所组成的一种特定的结构集合。

vim /etc/ansible/test1.yml

---										#开头格式(可忽略)
- hosts: test1							#表示对test01(192.168.77.112)的操作
  remote_user: root						#远端执行用户身份root
  tasks:								#任务列表
    - name: adduser						#任务名称
      user: name=user2 state=present	#执行user模块创建用户
      tags:								#创建tag标签
      - testa							#tag标签为testa
    - name: addgroup					#任务名称
      group: name=tests system=yes		#执行group模块创建一个组账号
      tags:								#创建tag标签
      - testb							#tag标签为testb
- hosts: test2							#表示对test02(192.168.77.115)的操作
  remote_user: root						#远端执行用户身份root
  tasks:								#任务列表
    - name: cf							#任务名称
      copy: src=/etc/passwd dest=/home	#执行copy模块复制文件
      tags:								#创建tag标签
      - testc							#tag标签为testsc
...										#结尾格式(可忽略)

测试palybook
ansible-playbook -C /etc/ansible/test.yml

没有报错就可以执行了(有些特殊情况就算没有报错也会执行失败)

 执行

十一、触发器

需要触发才能执行的任务,当之前定义在tasks中的任务执行完成后,若希望在基础上触发其他的任务,这时就需要定义handlers。例如,当通过ansible的模块对目标主机的配置文件进行修改之后,如果任务执行成功,可以触发一个触发器,在触发器中定义目标主机的服务重启操作,以使配置文件生效,handlers触发器具有以下优点。

  1. handlers是Ansible提供的条件机制之一,handlers和task很类似,但是他在被task通知的时候才会触发执行

  2. handlers只会在所有任务执行完成后执行,而且即使被通知了多次,它也只会执行一次,handlers按照定义的顺序依次执行

---											    //固定开头格式
- hosts: test1									//指定运行主机为test01组
  remote_user: root						        //指定对端运行用户的身份
  tasks: 									    //任务列表
        - name: change port				        //定义任务名称
          command: sed -i 's/Listen 80/Listen 8080/g' /etc/httpd/conf/httpd.conf
			                                    //模块为command:使用sed命令替换监听端口为8080
          notify: 				                //完成任务后调用restart httpd server触发器
          - restart httpd server		
  handlers: 			                        //配置触发器
  - name: restart httpd server				    //指定触发器名字
    service: name=httpd state=restarted			//指定触发条件为重启httpd服务

测试playbook (没有报错)

 执行playbook(成功)

十二、变量

vim /etc/ansible/test_vars.yml   编写自定义变量
---
- hosts: all
 vars:                           #定义变量
 - names: "cloud"                #第一个name变量
  age: "3"                       #第二个age变量
 tasks:
 - name: "{{ names }}"           #{{}}两对大括号引用变量,变量名两头空格
  shell: echo "myname {{ names }},myage {{ age }}"
  register: var_result
 - debug: var=var_result
...

 

图中红色的就是刚才定义的变量

 

十三、playbook中的角色

将多种不同的tasks的文件集中存储在某个目录下,则该目录就是角色,角色一般存放在/etc/ansible/roles/目录中,可通过ansible的配置文件来调整默认的角色目录。/etc/ansible/roles目录下有很多的子目录,其中每一个子目录对应一个角色。每个角色也有自己的目录结构。

/etc/ansible/roles/为角色集合,该目录下有自定义的各个子目录

  1. mariadb:mysql角色

  2. apache:httpd角色

  3. nginx:nginx角色

每个角色的定义,以特定的层级目录结构进行组织,以Mariadb(mysql角色) 为例

  1. files:存放copy或script等模块调用的文件

  2. templates:存放template模块查找所需要的模板文件的目录,如mysql配置文件等模板

  3. tasks:任务存放目录

  4. handlers:存放相关触发执行器的目录

  5. vars:变量存放的目录

  6. meta:用于存放此角色元数据

  7. default:默认变量存放目录,文件中定义了此角色使用的默认变量

上述目录中tasks,handlers,vars,meta,default至少应该包含一个main.yml,该目录下也可以有其他的yml文件,但是需要在main.yml文件中用include指定将其他.yml文件包含进来。

十三、用ansible-playbook给成员安装mariadb

创建数据库角色
mkdir -pv /etc/ansible/roles/mariadb/{files,tasks,handlers}

vim /etc/ansible/mariadb.yml                    创建mariadb角色
---
- hosts: test1:test2                            需要执行的主机
  remote_user: root                             执行的用户
  roles:                                        
    - mariadb                                   角色
...

cd /etc/ansible/roles/mariadb/tasks     进入任务存放目录
vim main.yml                            编写任务
---			                                    //固定开头格式
- name: install mariadb			                //指定任务名称安装mariadb数据库
  yum: name=mariadb-server state=present		//执行yum模块安装mariadb
- name: move config file		                //指定任务名称移除原有配置文件
  shell: "[ -e /etc/my.cnf ] && mv /etc/my.cnf /etc/my.cnf.bak"  //判断有就移除
- name: provide a new config file				//创建一个新的配置文件
  copy: src=my.cnf dest=/etc/my.cnf		        //src源会自动到files文件去找my.cnf文件
- name: reload mariadb					        //指定任务名称为重启mariadb
  shell: systemctl restart mariadb              //shell模块重启
- name: create database testdb		            //按要求添加执行如下sql语句
  shell: mysql -u root -e "create database testdb;grant all privileges on testdb.* to test@192.168.77.% identified by 'test123';flush privileges;"
  notify:				                        //配置触发器
  - restart mariadb		                        //为重启mariadb
...

cd ../handlers/                             进入触发器文件
vim main.yml                                编写触发器
---
- name: restart mariadb				        //引用上面配置的触发器
  service: name=mariadb state=restarted     //触发后重启mariadb
...

 

cd ../files/
cp /etc/my.cnf /etc/ansible/roles/mariadb/files/
ls
my.cnf				//准备my.cnf文件
cd /etc/ansible/
tree	

 

测试(成功)

 执行成功

 

以上就是ansible的基本使用

如有错误欢迎各位大佬批评指正,我们共同进步

 

 

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

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

相关文章

自动驾驶多任务框架 MultiTask V3、HybridNets和YOLOP比较

目标检测和分割是自动驾驶汽车感知系统的两个核心模块。它们应该具有高效率和低延迟,同时降低计算复杂性。目前,最常用的算法是基于深度神经网络的,这保证了高效率,但需要高性能的计算平台。 在自动驾驶汽车的场景下,大多使用的都是计算能力有限的嵌入式平台,这使得难以满…

Python 算法基础篇之散列查找算法:哈希表、哈希集合、哈希映射

Python 算法基础篇之散列查找算法:哈希表、哈希集合、哈希映射 引言 1. 散列查找算法概述2. 哈希表的概念3. 哈希集合的概念4. 哈希映射的概念5. 实例演示实例1:哈希表实例2:哈希集合实例3:哈希映射 总结 引言 散列查找算法是一种…

Spring Cloud 之 Gateway 网关

🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢…

Web安全基础

Web安全基础 一、Web应用安全概述1.1、什么是Web应用安全?1.2、WEB应用安全的兴起1.3、常见web应用1.3.1、常见Web应用—前后台 1.4、Web应用安全与传统安全的区别 二、Web应用的基本架构2.1、Web应用的基本架构2.2、Web服务的提供者——Web中间件2.3、简单的Web服务…

javascript实现久久乘法口诀表、document、write、console、log

文章目录 正序乘法口诀表倒序乘法口诀表logconsoledocumentwrite 正序乘法口诀表 function multiplicationTable() {for (let i 1; i < 9; i) {let val ;for (let j 1; j < i; j) {document.write(j * i (i * j) &nbsp );val ${j}*${i}${i * j} ;}consol…

肯尼亚税务局如何利用RPA、AI等创新技术来推动税务合规增加税收?

在当今的数字化时代&#xff0c;税务部门的工作变得日益复杂。依赖手动程序为税务部门带来了巨大的困难&#xff0c;这使得在有效管理税收和实现收入目标上遇到了阻碍。手动流程往往效率低下&#xff0c;易出错&#xff0c;而且难以应对大规模的数据处理需求。如果不能解决该问…

泛在电力物联网、能源互联网与虚拟电厂

导读&#xff1a;从能源互联网推进受阻&#xff0c;到泛在电力物联网名噪一时&#xff0c;到虚拟电厂再次走向火爆&#xff0c;能源领域亟需更进一步的数智化发展。如今&#xff0c;随着新型电力系统建设推进&#xff0c;虚拟电厂有望迎来快速发展。除了国网和南网公司下属的电…

【Redis-01】Redis的五种数据类型

Redis五种数据类型 1.String1.1特点1.2命令1.3实例 2.Hash2.1特点2.2命令2.3实例 3.List3.1特点3.2命令3.3实例 4.Set4.1特点4.2命令4.3实例 5. SortedSet5.1特点5.2命令5.3实例 1.String 1.1特点 String类型&#xff0c;也就是字符串类型&#xff0c;是Redis中最简单的存储类…

harbor仓库故障排除

harbor仓库无法用docker login登录&#xff0c;一直报x509: cannot validate certificate for 172.17.10.29 because it doesn’t contain any IP SANs 1、检查docker和harbor的服务是否启动 [rootk8s-harbor harbor]#systemctl status harbor.service [rootk8s-harbor harbo…

应对突发流量,如何快速为自建 K8s 添加云上弹性能力

作者&#xff1a;庄宇 以 Kubernetes 为代表的容器技术带来的是一种应用交付模式的变革&#xff0c;其正迅速成为全世界数据中心的统一 API。 为了保证业务持续稳定、用户访问不中断&#xff0c;高可用、高弹性等能力是应用架构设计不变的追求&#xff0c;多集群架构天然具备…

控制对文件访问

控制对文件访问 Linux文件权限 权限文件影响目录影响r读取文件内容列出目录内容w更改文件内容创建删除目录文件x作为命令执行目录可以变成当前工作目录 命令行管理文件系统权限 更改文件和目录权限 chmod chmod WhoWhatWhich file|directoryWho (u,g,o,a代表用户&#xff…

抖音seo源码搭建,抖音矩阵系统源码分发,抖音矩阵账号管理系统

前言&#xff1a; 抖音seo源码&#xff0c;抖音矩阵系统源码搭建&#xff0c;抖音矩阵同步分发。抖音seo源码部署是需要对接到这些正规接口再来做开发的&#xff0c;目前账号矩阵程序开发的功能&#xff0c;围绕一键管理多个账号&#xff0c;做到定时投放&#xff0c;关键词自动…

C# 提示:无法加载 DLL“XXX.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。

今天再调试程序时发现程序再笔记本上运行正常&#xff0c;然而拷贝到客户主机上之后出现了&#xff08;System.DllNotFoundException: 无法加载 DLL“msc.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。&#xff09;的问题&#xff0c;经过再三调试&#xff0c; …

python编程语言之数据类型

python数据类型 https://draw.io/ 画图 str 序列操作 字符串属于序列类型&#xff0c;所谓序列&#xff0c;指的是一块可存放多个值的连续内存空间&#xff0c;这些值按一定顺序排列&#xff0c;可通过每个值所在位置的编号&#xff08;称为索引、下标&#xff09;访问它们…

6.3.3 利用Wireshark进行协议分析(三)Wireshark基本操作

6.3.3 利用Wireshark进行协议分析&#xff08;三&#xff09; 一、启动Wireshark界面 如图 从上到下依次是 标题栏菜单栏工具栏过滤栏捕获窗口&#xff0c;在该区域用户可以选择网络接口&#xff0c;设置捕获选项 Wireshark允许用户将捕获到的数据包信息保存在指定的文件中…

ESD门禁闸机管理系统如何适应不同场景及需求

ESD门禁闸机是一种用于控制进出门禁区域的设备。ESD是英文Electrostatic Discharge的缩写&#xff0c;意指静电放电。该门禁闸机主要用于防止静电对敏感设备和产品造成的损害。 ESD门禁闸机具有以下功能和特点&#xff1a; 1. 静电防护&#xff1a;ESD门禁闸机使用特殊的材料…

前端Vue uni-app App/小程序/H5 通用tree树形结构图

随着技术的发展&#xff0c;开发的复杂度也越来越高&#xff0c;传统开发方式将一个系统做成了整块应用&#xff0c;经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改&#xff0c;造成牵一发而动全身。 通过组件化开发&#xff0c;可以有效实现…

【源码解析】一张图了解spring内部原理

从Spring框架流程上来看主要包含的是Bean对象的配置&#xff0c;读取配置&#xff0c;Bean工厂管理&#xff0c;构建对象。

Panabit iXCache后台命令执行

在我们短促而又漫长的一生中&#xff0c;我们在苦苦地寻找人生的幸福&#xff0c;可幸福往往又与我们失之交臂。当我们为此而耗尽宝贵的青春年华&#xff0c;皱纹也悄悄地爬上了眼角的时候&#xff0c;我们或许才能稍稍懂得生活实际上意味着什么。 漏洞描述 Panabit iXCache指…

三、图形化界面工具DataGrip

一、DataGrip软件下载 1、官网下载 官网地址&#xff1a;https://www.jetbrains.com/zh-cn/ 拉到主页面的最下面&#xff1a; 2、下载DataGrip软件 二、软件安装 1、双击安装包 2、进入安装界面&#xff0c;点击【Next】 3、选择安装路径&#xff0c;之后点击【Next】 尽量不…