Ansible--自动化运维工具

Ansible自动化运维工具介绍

1.Ansible介绍

Ansible是一款自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

Ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是Ansible所运行的模块,Ansible只是提供一种框架。主要包括:

(1) 连接插件connection plugins:负责和被监控端实现通信;

(2) host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;

(3) 各种模块核心模块、command模块、自定义模块;

(4) 借助于插件完成记录日志邮件等功能;

(5) playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

2.Ansible工作原理

基于 SSH 和模块

Ansible 通过 SSH 协议连接到目标主机。这意味着它不需要在目标主机上安装额外的代理软件。它使用一系列的模块来执行具体的任务。这些模块是 Ansible 的核心功能单元,比如 “yum” 模块用于在基于 RPM 的系统(如 CentOS、Red Hat)上安装软件包,“apt” 模块用于 Debian 和 Ubuntu 系统的软件安装,“service” 模块用于管理系统服务等。当 Ansible 执行一个任务时,它会将相应的模块发送到目标主机,然后在目标主机上运行模块来完成任务。

Inventory 文件

Ansible 使用一个名为 “Inventory” 的文件来管理目标主机列表。这个文件可以是简单的文本格式,列出了主机的 IP 地址或主机名,也可以按照组进行分类。例如,你可以将所有的 Web 服务器放在一个名为 “web_servers” 的组中,将数据库服务器放在 “db_servers” 的组中。在 playbook 中,就可以针对不同的组执行不同的任务,比如只在 “web_servers” 组中安装和配置 Web 服务器软件。

3.Ansible工作流程

(1)加载配置文件: Ansible 默认查找 /etc/ansible/ansible.cfg 配置文件,这个文件包含了Ansible运行时的行为设定,如连接方式、插件路径等。

(2)解析Inventory: Ansible 使用 Inventory 文件(默认是 /etc/ansible/hosts)来确定需要操作的目标主机或主机组。

(3)编译Playbook或命令: Ansible 准备执行的Playbook或直接执行的Ad-Hoc命令,并解析其中的任务和模块调用。

(4)模块加载与执行策略准备: 对于每个任务,Ansible 加载相应的模块(如 command 模块),并准备执行上下文,包括变量、环境等。

(5)生成并传输临时脚本: Ansible 会根据任务和模块生成一个或多个临时的Python脚本,并通过SSH连接传输到目标主机的临时目录,通常位于目标用户的 ~/.ansible/tmp/ansible-tmp-<UNIQUE_ID>/ 目录下。

(6)赋予执行权限: 在目标主机上,Ansible 会给这个临时Python脚本加上执行权限,以便能够运行。

(7)执行远程脚本: Ansible 通过SSH在目标主机上执行这个临时脚本,并收集执行结果。

结果收集与处理: 执行完毕后,各个主机的执行结果被收集并汇总,Ansible根据这些结果决定是否继续执行后续任务,或是根据Playbook中的错误处理逻辑(如 rescue 和 always 块)进行操作。

(8)清理: 一旦任务执行完成,无论成功还是失败,Ansible 会清理目标主机上的临时文件,包括删除之前上传的Python脚本。

(9)退出与报告: 清理完成后,Ansible 进程在目标主机上退出,并向控制机报告最终的执行状态和结果。

Ansible集群搭建

Server节点

192.168.100.51

Host1 节点

192.168.100.52

Host2 节点

192.168.100.53

Host3 节点

192.168.100.50

1.编写hosts文件

三个主机根据节点规划更改主机名,并编写映射文件

[root@server ~]# vi /etc/hosts

192.168.100.51 server

192.168.100.52 host1

192.168.100.53 host2

192.168.100.50 host3

2.配置免密登陆

主节点生成密钥对

[root@server ~]# ssh-keygen -P "" -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Created directory '/root/.ssh'.

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:C6R237cwGYEIGvMJRvFWj6ZQ3h1qLdagV/GKNjY//W0 root@server

The key's randomart image is:

+---[RSA 2048]----+

| .B.o o +.       |

| . X * @ +       |

|  o B % * o      |

|   o O o . .     |

|    + O S .      |

|   . + * + o     |

|        = * .    |

|         . = oE  |

|            o..  |

+----[SHA256]-----+

-P "":设置空密码

-t rsa: 指定生成密钥的类型为RSA

将公钥发给受管制节点

[root@server ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@host1

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"

The authenticity of host 'host1 (192.168.100.52)' can't be established.

ECDSA key fingerprint is SHA256:67lB1mL6LK/kJPxrKPAOU+3YIixzp0oA4aTCBoqf41c.

ECDSA key fingerprint is MD5:c2:17:dc:da:a3:3d:31:28:1f:74:10:77:85:9d:9d:36.

Are you sure you want to continue connecting (yes/no)? yes

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed

/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

root@host1's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@host1'"

and check to make sure that only the key(s) you wanted were added.

三个受管制的节点一次发送,测试免密登陆:

[root@server ~]# ssh host1

Last login: Sat Nov 23 14:41:46 2024 from server

[root@host1 ~]# exit

logout

Connection to host1 closed.

[root@server ~]# ssh host2

Last login: Sat Nov 23 14:41:51 2024 from server

[root@host2 ~]# exit

logout

Connection to host2 closed.

[root@server ~]# ssh host3

Last login: Sat Nov 23 01:33:26 2024 from 192.168.100.1

[root@host3 ~]# exit

logout

Connection to host3 closed.

[root@server ~]#

3.主节点安装Ansible

主节点安装epel-release源后,安装Ansible,并检查是否安装成功

[root@server ~]# yum install -y epel-release

[root@server ~]# yum install -y ansible

[root@server ~]# ansible --version

4.修改主机清单设置分组

ansible常见的配置文件

• /etc/ansible/ansible.cfg:主配置文件

• /etc/ansible/hosts:主机清单文件

• /etc/ansible/roles:角色目录

备份主机求清单文件

[root@server ~]# cd /etc/ansible/

[root@server ansible]# ls

ansible.cfg  hosts  roles

[root@server ansible]# cp -f hosts hosts.bak

[root@server ansible]# ls

ansible.cfg  hosts  hosts.bak  roles

编写主机清单文件

[root@server ansible]# vi hosts

[all-servers]

server

host1

host2

host3

[node1]

host1

[node2]

host2

[node3]

host3

[mysql_test]      #规划节点host1和host2节点为数据库节点

host1

host2

[web_test]       #规划节点host2和host3节点为web节点

host2

host3

[manager]

server

保存配置文件

Ansible模块基本使用

1.Ansible常用参数说明

参数

说明

-h

显示帮助信息

-i

指定inventory文件路径,默认路径为/etc/ansible/hosts

-l

限制palybook或命令的作用范围

-u

连接远程主机时使用的用户名。

-b

相当于sudo

--become-user=USER

提上权限后切换到的用户

-m

指定要使用的模块名

-a

指定模块的参数

-f

指定并发进程数,默认为5

-v

增加输出的详细程度

-e

指定变量名

--diff

修改文件时显示修改前后的差异

Ansible的执行状态

绿色:执行成功并且不需要做改变的操作

黄色:执行成功并且对目标主机做变更

红色:执行失败

粉色:警告信息

蓝色:显示ansible命令执行的过程

2.ping模块

ping模块用于检查指定节点机器是否连通,用法很简单,不涉及参数

主机如果在线,则回复pong

[root@server ansible]# ansible -m ping node1

[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details

host1 | SUCCESS => {

    "ansible_facts": {

        "discovered_interpreter_python": "/usr/bin/python"

    },

    "changed": false,

    "ping": "pong"

}

以组为单位测试

[root@server ansible]# ansible -m ping all

3.command模块

command模块用于在远程主机上执行命令,ansible默认就是使用command模块。

[root@server ansible]# ansible host1 -m command -a 'ls /etc/yum.repos.d/'

相当于远程让host1节点执行ls命令

在受管制主机host1的/opt/目录下创建文件

[root@server ansible]# ansible host1 -m command -a 'touch /opt/hzy'

command模块有一个缺陷就是不能使用管道符和重定向功能。

Command模块也可以多节点执行

[root@server ansible]# ansible -m command -a 'hostname' all

4.shell模块

shell模块用于在受控机上执行受控机上的脚本,亦可直接在受控机上执行命令。

shell模块亦支持管道与重定向。

[root@server ansible]# ansible host1 -m shell -a 'a=10086;echo $a'

查看web_test组远程主机的系统版本

[root@server ansible]# ansible web_test -m shell -a 'cat /etc/os-release | grep PRETTY_NAME | cut -d "=" -f2'

5.user模块

主要用于管理远程系统上的用户账户,包括创建、修改和删除用户。

它允许你设置用户的密码、shell、主目录、权限等属性

常用参数:

system

创建用户设置用户是系统用户

uid

指定uid

group

指定用户组

home

指定家目录

comment

用户的描述信息

password

指定用户密码

state

设置帐号状态,默认为present表示新建用户,指定值为absent表示删除

update_password

更新用户密码

name

指定用户名

remove

在使用state=absent时, 行为是与userdel –remove一致

[root@server ansible]# ansible host1 -m user -a 'system=yes name=hongzy uid=777 comment="hzy"'

指在host1节点创建一个名为hongzy的用户,uid为777,用户描述为hzy

检查hongzy用户是否被正确创建,调用shell模块

[root@server ansible]# ansible host1  -m shell -a 'id hongzy ; grep ^hongzy: /etc/passwd | awk -F ":" '\''{print $5}'\'''

删除hongzy用户

[root@server ansible]# ansible host1 -m user -a 'name=hongzy state=absent remove=yes'

再次调用shell模块检查hongzy是否被删除

[root@server ansible]# ansible host1  -m shell -a 'id hongzy ; grep ^hongzy: /etc/passwd | awk -F ":" '\''{print $5}'\'''

6.group模块

group模块用于在受控机上添加或删除组

常用参数

gid

用于设置组的GID

name

指定组名称(必选项)

non_uniue

允许组ID为非唯一值,与gid一起使用

state

指定用户组在远程主机上的状态,present和absent

system

创建的用户组是否是系统组

创建组

[root@server ansible]# ansible host1 -m group -a "name=footabll gid=1001 system=yes"

创件一个组名为footbal,组ID为1001,并且是系统组

使用shell模块检查是否创建成功

[root@server ansible]# ansible host1 -m shell -a "cat /etc/group | grep 1001"

删除组

[root@server ansible]# ansible host1 -m group -a "name=football gid=1001 state=absent"

7.copy模块

在 Ansible 中,copy模块主要是将本地(执行 Ansible 任务的控制节点)的文件或目录复制到远程的host主机(被管理节点)。

常用参数

src

被复制文件的本地路径

dest

复制到管控节点的绝对路径(必选)

content

可以指定文件的值(内容)

mode

设置文件权限

force

当目标主机含有该文件时,但内容不同时,设为yes表示强制覆盖,设置为no,表示目标主机的目标位置不存在才复制

backup

在覆盖前,将源文件备份,备份文件包含时间信息

创建一个txt文件并写入内容

[root@server ansible]# echo "hello word" > /root/test.txt

将该文件复制到被管理主机host1节点的/opt/目录下并赋予权限755

[root@server ansible]# ansible host1 -m copy -a 'src=/root/test.txt dest=/opt/copy.txt mode=755'

再次使用copy模块,进行覆盖文件操作,使用backup参数

[root@server ~]# ansible host1 -m copy -a 'src=/root/777.txt backup=yes dest=/opt/copy.txt'

使用 Ansible 来调用 copy 模块,目的是将本地/root/777.txt 文件复制到名为 host2 的远程主机的 /opt/copt.txt 位置,并且设置了 backup=yes 参数,意味着如果远程主机上 /opt 目录下已经存在 copt.txt 文件,那么会先对原有的文件进行备份,再将本地的文件复制过去。

查看这两个文件

8.fetch模块

Ansible 的 fetch 模块用于从远程节点抓取文件并存储到Ansible控制器(执行Ansible任务的机器)上的指定目录

常用参数

src

要远程拉取的文件(只能是文件)

dest

用来存放文件的目录

flat

设置为yes时,即使src是目录,也会将所有内容扁平化存储到dest

size

限制抓取文件的大小

force

即使本地文件已经存在了仍旧抓取,默认yes,设置为no只有当远程文件比本地文件新或不同才执行抓取

validate_checksum

当设置为yes时在下载完成后校验文件的校验和确保文件完整无误

fail_on_missing

当设置为yes时,如果远程文件不存在,则标记任务失败,否则只是简单地跳过该文件

从远程主机抓取文件

[root@server ~]# ansible host1 -m fetch -a 'src=/opt/copy.txt.2092.2024-11-24@10:33:45~ dest=/opt/'

使用校验机制

[root@server ~]# ansible host1 -m shell -a 'echo "fetch_text1" > /root/fetch.txt'

[root@server ~]# ansible host1 -m fetch -a 'src=/root/fetch.txt dest=/opt/ validate_checksum=yes fail_on_missing=yes size=100k'

增加了验证文件完整性,文件是否存在,文件大小限制

查看server节点下的/opt目录结构

9.file模块

file模块主要用于对文件的创建、删除、修改、权限、属性的更改。

常用参数

path

定义文件/目录的路径

mode

定义文件/目录的权限

owner

定义文件/目录的所有者

group

定义文件/目录的所属组

state

选项:directory、file、link、hard、touch、absent

dest

被链接到的路径(state=link)

src

被链接的源文件的路径(state=link)

在指定路径下创建目录

[root@server ~]# ansible web_test -m file  -a 'path=/root/web mode=644 owner=root group=root state=directory'

在/root目录下创建web目录,权限为644,所有者和所属组为root

查询root目录进行检查

[root@server ~]# ansible web_test -m shell  -a 'ls -l /root'

创建软链接

[root@server ~]# ansible web_test -m file -a 'path=/opt/web src=/root/web state=link'

查看软链接是否创建成功

[root@server ~]# ansible web_test -m command -a 'ls -l /opt'

删除文件操作

删除web目录

[root@server ~]# ansible web_test -m file -a 'path=/root/web state=absent'

查看是否删除

10.yum模块

主要用于在基于 RPM 的 Linux 系统上管理软件包,它允许用户安装、更新、卸载软件包,并可配置额外的选项以控制操作的具体行为。

常用参数

name

所安装的软件包的名称

state

安装present,安装最新版本latest,卸载软件包absent

update_cache

强制更新yum缓存

conf_file

指定远程安装是所依赖的配置文件

disablerepo

临时禁用yum源

skip_borken

跳过异常软件节点

让host1节点和host2节点安装net-tools软件包

[root@server ~]# ansible host1,host2 -m yum -a 'name=net-tools state=present'

使用netstat命令检测是否呗正确安装并且可以使用

[root@server ~]# ansible host1,host2 -m shell -a 'netstat -lnpt'

让host2卸载net-tools软件包

[root@server ~]# ansible host2 -m yum -a 'name=net-tools state=absent'

检测是否卸载成功

[root@server ~]# ansible host2 -m shell -a 'echo $?'

更新host1主机的所有软件包

[root@server ~]# ansible host1 -m yum -a 'name=* state=latest'

11.service模块

Ansible的service模块用于管理系统服务(如启动、停止、重启服务等)。

这个模块与特定的系统服务管理工具(如systemd、sysvinit、upstart等)兼容,能够跨不同的Linux发行版和系统管理框架工作

常用参数

name

服务的名称(必选)

state

started启动服务,stopped停止服务,restarted重启服务,reloaded重载配置

enabled

服务是否应该在系统启动时自动启动。至少需要指定state或enabled中的一个

sleep

当服务处于restarted状态时,停止与启动命令之间暂停的秒数

use

服务模块通常通过自动检测使用系统特定的模块,此设置可以强制使用特定模块。

arguments

额外的命令行参数,提供给服务管理命令。

使host1节点关闭防火墙

[root@server ~]# ansible host1 -m service -a 'name=firewalld state=stopped'

查看host1节点防火墙状态

再次启动host1节点的防火墙

12.script模块

Ansible的script模块允许你在远程主机上执行位于Ansible控制节点上的本地脚本

常用参数

free_form

直接提供脚本的路径以及可选参数

creates

指定远程运行的本地脚本的路径

removes

指定远程节点的一个文件名,文件不存在则不执行

cmd

要在远程节点上运行的本地脚本的路径

chdir

在远程节点执行脚本之前要切换到的目录路径

在server控制节点编写一个脚本

[root@server ~]# vi root.sh

#!/bin/bash

#检测当天用户是否为root用户

if [ $USER == "root" ]

then

echo "当前为root用户" > /root/test

else

echo "当前是$USER用户,不是root用户" > /root/test

fi

让host1节点和host2节点执行该脚本文件

[root@server ~]# ansible host1,host2 -m script -a '/root/root.sh'

查看/root/test文件,检查脚本是否执行成功

[root@server ~]# ansible host1,host2 -m shell -a 'cat /root/test'

13.setup模块

Ansible的setup模块用于收集远程主机的信息,并将这些信息以facts的形式返回给Ansible控制节点。这些facts可以包括系统变量(如操作系统类型、架构、网络配置、已安装软件包等),并且在Playbook执行期间可以被其他任务使用。

常用参数

filter

用于筛选出特定的系统信息。通过指定一个或多个关键字,可以只获取与这些关键字相关的系统变量信息。

fact_path

指定自定义事实(custom facts)的路径。自定义事实是用户自己定义的关于主机的信息,除了Ansible默认收集的系统事实之外,用户可以通过在指定路径下创建文件来添加自定义的主机信息。

gather_subnet

控制setup模块收集信息的子集。默认情况下,setup模块会收集大量的系统信息,包括硬件、网络、操作系统等多个方面。使用gather_subset可以指定收集某些特定方面的信息,或者排除某些方面的信息。可能的值包括:all(全部)、min(最小集合)、hardware(硬件信息)、network(网络信息)、virtual(虚拟化信息)、ohai(类似Chef Ohai的扩展信息)、facter(使用Facter收集的信息)。

查看host1主机的内存信息

[root@server ~]# ansible host1 -m setup -a "filter='*mem*'"

检查(由于内存信息是实时更新的,所以会有所偏差)

[root@server ~]# ansible host1 -m command -a "free -m"

将查询到的信息保存

[root@server ~]# ansible host1 -m setup -a 'filter="*mem*"' --tree /opt

保存的信息存放在了server控制节点的/opt目录下

至此,Ansible的介绍和Ansible模块的基本使用就结束了,接下来会是playbook文件的编写以及后续基于ansible的实验搭建等,拜拜各位看官

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

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

相关文章

WSL安装不同版本ubuntu(已有ubuntu20.04,再装ubuntu18.04)

参考&#xff1a; 如何在 WSL 中删除指定版本的 Ubuntu&#xff08;以删除 Ubuntu 22.04 为例&#xff09;_wsl卸载某个-CSDN博客 已有ubuntu20.04&#xff0c;现在再安装一个ubuntu18.04 直接参考下面我写的链接的第四步&#xff0c;前面的步骤都不需要再做了 Win11安装WSL…

深度学习:GPT-1的MindSpore实践

GPT-1简介 GPT-1&#xff08;Generative Pre-trained Transformer&#xff09;是2018年由Open AI提出的一个结合预训练和微调的用于解决文本理解和文本生成任务的模型。它的基础是Transformer架构&#xff0c;具有如下创新点&#xff1a; NLP领域的迁移学习&#xff1a;通过最…

websocket是什么?

一、定义 Websocket是一种在单个TCP连接上进行全双工通信的协议&#xff0c;它允许服务器主动向客户端推送数据&#xff0c;而不需要客户端不断的轮询服务器来获取数据 与http协议不同&#xff0c;http是一种无状态的&#xff0c;请求&#xff0c;响应模式的协议(单向通信)&a…

1-golang_org_x_crypto_bcrypt测试 --go开源库测试

1.实例测试 package mainimport ("fmt""golang.org/x/crypto/bcrypt" )func main() {password : []byte("mysecretpassword")hashedPassword, err : bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost)if err ! nil {fmt.Println(err)…

CSS —— 子绝父相

相对定位&#xff1a;占位&#xff1b;不脱标 绝对定位&#xff1a;不占位&#xff1b;脱标 希望子元素相对于父元素定位&#xff0c;又不希望父元素脱标&#xff08;父元素占位&#xff09; 子级是 绝对定位&#xff0c;不会占有位置&#xff0c; 可以放到父盒子里面的任何一…

风尚云网前端学习:一个简易前端新手友好的HTML5页面布局与样式设计

风尚云网前端学习&#xff1a;一个简易前端新手友好的HTML5页面布局与样式设计 简介 在前端开发的世界里&#xff0c;HTML5和CSS3是构建现代网页的基石。本文将通过一个简单的HTML5页面模板&#xff0c;展示如何使用HTML5的结构化元素和CSS3的样式特性&#xff0c;来创建一个…

django authentication 登录注册

文章目录 前言一、django配置二、后端实现1.新建app2.编写view3.配置路由 三、前端编写1、index.html2、register.html3、 login.html 总结 前言 之前&#xff0c;写了django制作简易登录系统&#xff0c;这次利用django内置的authentication功能实现注册、登录 提示&#xff…

ctfshow单身杯2024wp

文章目录 ctfshow单身杯2024wp签到好玩的PHPezzz_sstiez_inject ctfshow单身杯2024wp 签到好玩的PHP 考点&#xff1a;序列化反序列化 <?phperror_reporting(0);highlight_file(__FILE__);class ctfshow {private $d ;private $s ;private $b ;private $ctf ;public …

ISUP协议视频平台EasyCVR萤石设备视频接入平台银行营业网点安全防范系统解决方案

在金融行业&#xff0c;银行营业厅的安全保卫工作至关重要&#xff0c;它不仅关系到客户资金的安全&#xff0c;也关系到整个银行的信誉和运营效率。随着科技的发展&#xff0c;传统的安全防护措施已经无法满足现代银行对于高效、智能化安全管理的需求。 EasyCVR视频汇聚平台以…

【代码pycharm】动手学深度学习v2-08 线性回归 + 基础优化算法

课程链接 线性回归的从零开始实现 import random import torch from d2l import torch as d2l# 人造数据集 def synthetic_data(w,b,num_examples):Xtorch.normal(0,1,(num_examples,len(w)))ytorch.matmul(X,w)bytorch.normal(0,0.01,y.shape) # 加入噪声return X,y.reshape…

zotero安卓测试版下载和使用

2023年年底&#xff0c;Zotero官方就已经推出了安卓版的测试版Zotero for Android (beta),&#xff0c;但名额有限且只能通过Google商店下载。此外&#xff0c;还有一些第三方开发的安卓应用&#xff0c;如Zoo for Zotero、ZotDroid等。 在首次使用Zotero安卓版时&#xff0c;用…

基于FPGA的2FSK调制-串口收发-带tb仿真文件-实际上板验证成功

基于FPGA的2FSK调制 前言一、2FSK储备知识二、代码分析1.模块分析2.波形分析 总结 前言 设计实现连续相位 2FSK 调制器&#xff0c;2FSK 的两个频率为:fI15KHz&#xff0c;f23KHz&#xff0c;波特率为 1500 bps,比特0映射为f 载波&#xff0c;比特1映射为 载波。 1&#xff09…

Matlab 深度学习 PINN测试与学习

PINN 与传统神经网络的区别 与传统神经网络的不同之处在于&#xff0c;PINN 能够以微分方程形式纳入有关问题的先验专业知识。这些附加信息使 PINN 能够在给定的测量数据之外作出更准确的预测。此外&#xff0c;额外的物理知识还能在存在含噪测量数据的情况下对预测解进行正则…

【JavaScript】JavaScript开篇基础(7)

1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友们&#x1f44b;&#x1f44b;&#xff0c;这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章&#xff0c;请别吝啬你的点赞❤️❤️和收藏&#x1f4d6;&#x1f4d6;。如果你对我的…

JavaScript的基础数据类型

一、JavaScript中的数组 定义 数组是一种特殊的对象&#xff0c;用于存储多个值。在JavaScript中&#xff0c;数组可以包含不同的数据类型&#xff0c;如数字、字符串、对象、甚至其他数组。数组的创建有两种常见方式&#xff1a; 字面量表示法&#xff1a;let fruits [apple…

WebSocket详解、WebSocket入门案例

目录 1.1 WebSocket介绍 http协议&#xff1a; webSocket协议&#xff1a; 1.2WebSocket协议&#xff1a; 1.3客户端&#xff08;浏览器&#xff09;实现 1.3.2 WebSocket对象的相关事宜&#xff1a; 1.3.3 WebSOcket方法 1.4 服务端实现 服务端如何接收客户端发送的请…

周志华深度森林deep forest(deep-forest)最新可安装教程,仅需在pycharm中完成,超简单安装教程

1、打开pycharm 没有pycharm的&#xff0c;在站内搜索安装教程即可。 2、点击“文件”“新建项目” 3、创建项目&#xff0c;Python版本中选择Python39。如果没有该版本&#xff0c;选择下面的Python 3.9下载并安装。 4、打开软件包&#xff0c;搜索“deep-forest”软件包&am…

ES 和Kibana-v2 带用户登录验证

1. 前言 ElasticSearch、可视化操作工具Kibana。如果你是Linux centos系统的话&#xff0c;下面的指令可以一路CV完成服务的部署。 2. 服务搭建 2.1. 部署ElasticSearch 拉取docker镜像 docker pull elasticsearch:7.17.21 创建挂载卷目录 mkdir /**/es-data -p mkdir /**/…

分布式kettle调度平台v6.4.0新功能介绍

介绍 Kettle&#xff08;也称为Pentaho Data Integration&#xff09;是一款开源的ETL&#xff08;Extract, Transform, Load&#xff09;工具&#xff0c;由Pentaho&#xff08;现为Hitachi Vantara&#xff09;开发和维护。它提供了一套强大的数据集成和转换功能&#xff0c…

力扣hot100-->排序

排序 1. 56. 合并区间 中等 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 示例 1&#xff1a; 输…