当前位置: 首页 > news >正文

RHCA - DO374 | Day03:通过自动化控制器运行剧本

一、  自动化控制器的架构

1.   Controller控制器及其架构

1)关于自动化控制器

红帽Ansible Automation Platform 2包括一个称为Controller自动化控制器的组件。自动化控制器提供了一个集中的处理中心,可以用来运行Ansible自动化代码。在早期版本的Ansible自动化平台中,这个控制器称为Ansible Tower。

企业IT部门需要可靠、可扩展的自动化任务执行,以及支持审计的集中式系统。有了自动化控制器,公司可以通过集中的位置来实现自动化的标准化部署,减少整个企业的自动化漂移和差异。

自动化控制器为企业高效地运行和管理Ansible提供了一个框架。Controller通过引入用来管理剧本的集中式网站UI、基于角色的访问控制(RBAC)以及集中的日志记录和审核等功能来维护组织安全。

还可以使用自动化控制器REST API集成企业现有的工作流和工具集,例如启用连续集成和部署。自动化控制器提供了一种保密机制,既能够集中使用和控制计算机证书和密码、密钥等其他机密,又不将证书或机密暴露给使用自动化控制器的最终用户。

2)自动化控制器的架构

红帽AAP2中引入的自动化执行环境将自动化控制器的控制平面与其执行环境解耦

早期版本的Ansible Tower将执行环境与运行Ansible Tower的系统紧密耦合,这就需要管理运行剧本所需要的各种模块的依赖关系。如果两个剧本需要不同的环境,那么就不得不在Ansible Tower系统上创建一个或多个Python虚拟环境,一些企业最终拥有数十或数百个Python虚拟环境。

而Ansible Controller对Ansible Tower的体系结构做了显著改进。Controller使用自动化执行环境,而不是使用系统可执行文件和Python安装或虚拟环境。这些环境是容器镜像,您可以从容器仓库服务器中提取,安装在自动化控制器上,并通过web UI进行管理。如果需要,还可以创建自定义的自动化执行环境,以及将容器镜像发布到容器仓库。使用相同的自动化执行环境有助于确保自动化代码在系统和自动化控制器中一致运行。

以下是早期的Ansible Tower与新的Ansible Controller的架构的比较。

Ansible Tower的架构(如图-1所示)。

  • 集中式、单片式应用程序

  • 控制节点包含控制平面和执行平面

  • 刚性体系结构的可扩展性较差

Ansible自动化平台2的架构(如图-2所示)。

  • 去中心化、模块化应用

  • 控制平面和执行平面解耦

  • 容器化虚拟环境

  • 通过使用容器编排器按需扩展

这种设计使Controller控制器能够在自动化控制器系统上运行控制平面(带有web UI和API),并在更靠近受管主机的其他主机上运行自动化执行环境,从而提高效率和扩展性。

2.   自动化控制器的特点

在企业环境中,Controller自动化控制器很多用来控制、安全加固以及管理Ansible的很多特性。

1)可视化仪表板

自动化控制器通过一个web UI面板来提供企业整个Ansible环境的摘要信息。从这个可视化面板可以直观地查看主机和清单的当前状态,以及最近作业执行的结果。这个web UI也提供了更好的安全性和性能,并通过新的过滤功能和独特的视图强化了直观效果。

2)基于角色的访问控制(RBAC)

自动化控制器使用基于角色的访问控制(RBAC)系统,简化了用户访问管理,同时确保系统安全性。管理员可以指定对自动化控制器对象的访问权限,例如组织、项目和清单。

3)图形化的清单管理

可以从自动化控制器的web UI来创建主机清单,然后将主机组和主机添加到清单中。或者,也可以从外部清单源来更新现有的主机清单,如公共云服务商、本地虚拟化环境、组织的自定义配置管理数据库(CMDB)或Git仓库中的内容。

4)任务管理器和作业调度

使用自动化控制器来安排剧本的执行、来自外部数据源的更新,无论是一次性的还是重复的。这意味着例行任务可以在无人值守的情况下运行,对于例行备份等任务尤其有用,这些任务最好在非工作时间执行。

5)实时和历史作业状态报告

在自动化控制器中运行剧本时,通过web UI可以实时看到剧本输出和执行结果。以前执行的作业和计划的作业运行的结果也可从自动化控制器获得,用于审计或审查。

6)用户触发的自动化

对于有适当权限的用户,只需单击图标即可启动作业模板或工作流作业模板。

7)凭据管理

自动化控制器集中管理认证凭据。这表示你可以在受管主机上运行剧本,同步来自动态清单源的信息,以及从版本控制系统导入Ansible的项目内容。

自动化控制器对提供的密码或密钥进行加密,使自动化控制器的用户无法检索到这些加密的数据。即使用户有使用或编辑凭据的权限,自动化控制器也不会公开现在的凭据密码或密钥。

8)集中式日志记录和审核

自动化控制器记录所有的剧本运行、远程命令执行的情况,这提供了审核每个作业何时执行以及由谁执行的能力。此外,自动化控制器可以将其日志数据集成到第三方日志聚合解决方案中,如Splunk和Sumologic。

9)集成通知

自动化控制器可以在作业执行开始时通知你,以及在作业成功或失败时通知你。自动化控制器可以向许多应用程序发送通知,包括电子邮件、Grafana、IRC、Mattermost、Slack、Rocket.Chat、Twilio和Webhooks。

10)多剧本工作流

复杂的操作通常涉及多个剧本的串行执行。多剧本工作流可以将大量的剧本链接在一起,以便于实现涉及供应、配置、部署和编排的复杂例程。可以使用直观的工作流编辑器,来对多剧本工作流进行建模。

11)可浏览的RESTful API

自动化控制器的RESTful API通过web UI公开了所有可用的自动化控制器功能。API的可浏览格式使其成为自文档,并允许你查找有关如何使用API的信息。 

自动化控制器用户指南v4.2.1:https://docs.ansible.com/automation-controller/4.2.1/html/userguide/index.html

二、  在自动化控制器上运行剧本

1.   控制器的资源、凭据类型

1)探索控制器的资源

自动化控制器为企业运行Ansible剧本提供了一个集中的位置。在创建作业模板以测试自动化控制器中的剧本之前,必须存在多个资源。通常,这些资源包括:

  1. Machine Credential:用于连接到受管主机的机器凭据

  2. Source Countrol Credential:用于下载和同步远程内容的源代码管理凭据,例如从Git仓库下载和同步

  3. Project:指定内容位置的项目,如剧本

  4. Inventory:至少有一个主机的清单

尽管自动化控制器提供了巨大的功能,这里的重点是创建启动作业模板所需的基本资源。有关单个资源的详细信息,包括选项和为这些资源分配权限,不在这里讨论。

2)常见的认证凭据

  • 访问Ansible Galaxy/Automation Hub的API凭据

为了让自动化控制器能够从Ansible Galaxy、Automation Hub和私有的自动化中心来下载内容集合和角色,需要提前创建凭据资源。创建凭据后,还需要为组织启用凭据。在这个过程中,可以通过对凭据进行排序来指定优先级。

注意:如果安装了自动化控制器,也安装了私有的自动化中心,则安装程序将自动创建用于community、publishedRed Hat Certified这三个仓库的自动化控制器凭据,安装程序还为Default这个组织启用这些凭据。

  • 容器仓库凭据

如果从容器仓库(如registry.redhat.io或私有自动化中心)中提取容器镜像时需要身份验证,请创建此类型的凭据。

注意:如果安装了自动化控制器,也安装了私有的自动化中心,则安装程序将自动创建用来访问私有自动化中心的容器仓库凭据

  • GitHub个人访问令牌

GitHub不再支持使用HTTPS协议同步项目的基于密码的身份验证。要继续使用HTTPS(而不是SSH),请创建并使用GitHub个人访问令牌,然后创建一个使用此令牌的自动化控制器凭据。

  • 机器凭据

自动化控制器可以使用机器凭据来访问并变更受管主机。这种凭据指定用户名、密码或用户SSH私钥的内容。如果此凭据要允许提权,还需要指定提权的目标用户名(通常为root),并在必要时指定提权密码。

  • 源码控制凭据

自动化控制器可以使用这种凭据来同步来自远程仓库的项目资源。使用这种凭据需要指定用户名和密码或用户的SSH私钥。

  • Vault保险库

保险库凭据用来解密已使用ansible-vault加密的文件。

2.   创建凭据(Credential)

1)列出凭据

在自动化控制器上导航到 Resources > Credentials可以显示每个凭据的名称和类型。单击任何凭据的名称,可以显示凭据详细信息(如图-3所示)。

2)创建机器凭据

要创建一个机器凭据,可以导航到 Resources > Credentials 点击Add来添加,为这个凭据起一个名称,类型选择 machine credential,其他设置按需填好点击 Save 保存即可(如表所示)

设置

描述

Username

自动化控制器用来连接受管主机的用户名,相当于ansible.cfg文件中的remote_user

Password

对应用户的密码或SSH私钥输入密码,或在使用凭据时提示输入密码。如果受管机禁止基于密码的方式来验证SSH身份,则使用密码无效

SSH Private Key

与已经上传到受管机的SSH公钥相匹配的SSH私钥。在登录到受管机时,密码或者SSH私钥是必需的(至少其中一个)

Private Key Passphrase

如果SSH私钥设置了密码短语保护,就需要这里的私钥短语,如果这里不提供,就会在使用过程中提示用户输入密码短语

Privilege Escalation Method

提权方式,相当于ansible.cfg文件中的become_method设置

Privilege Escalation Username

提权的目标用户,通常是root,相当于ansible.cfg文件中的become_user设置

Privilege Escalation Password

提权密码,如果这里不提供,就会在使用过程中提示用户输入密码短语

3)创建源码控制凭据

要创建一个源码控制凭据,可以导航到 Resources > Credentials 点击 Add来添加,为这个凭据起一个名称,类型选择 source control credential(如表所示)

设置

描述

Username

自动化控制器用来连接源代码仓库的用户名

Password

对应用户密码。当源码仓库禁止密码连接时,请改用SCM private key

SCM Private Key

与已经上传到受管机的SSH公钥相匹配的SSH私钥

Private Key Passphrase

如果SCM Private key设置了密码短语保护,请在这里指定密码短语

3.   创建项目(Project)

自动化控制器通过Project项目资源来提供对Ansible剧本的访问。若项目使用源代码管理,如Git或Subversion,则自动化控制器会同步远程仓库中的内容。

导航到 Resources > Projects 以列出现有的项目。单击某个项目名左侧的 > 图标可展开项目信息。从 Projects 页面也可以同步使用源代码管理的项目。

根据 Revision 栏来评估您的项目是否为最新项目。对于Git存储库,revision字符串相当于commit的哈希字串(如图-4所示)。

要创建新项目,请导航到 Resources > Projects,然后单击Add。

项目可以指定使用作业模板的默认执行环境,如果未指定,则项目默认为自动控制器定义的 Default执行环境。在作业模板中也可以选择不同的执行环境。

选择 Source Control凭据类型,如 Git,指定必要的其他设置(如表-3所示),然后单击Save。

设置

描述

Source Control URL

用来克隆项目的远程仓库的URL网址

Source Control Branch/Tag/Commit

指定的开发分支/标签/提交。如果勾选 Allow Branch Override,表示允许作业模板使用不同的分支/标签/提交

Source Control Credential

已经建好的用来访问远程仓库的源码控制凭据

自动化控制器会尝试自动同步新项目。项目同步可能因为不同的原因而失败,包括:

  • 项目指定了不正确的源代码管理URL

  • 项目未能指定或指定了错误的源代码管理凭据

  • 源代码管理凭据指定了错误的用户名、密码或SCM私钥

4.   创建清单(Inventory)

就像本地的清单文件或目录一样,在自动化控制器上也可以创建清单资源。清单可以包含主机组以及没有分组的主机。可以配置用在整个清单(类似于all这个组)、特定组(类似于groups_vars目录)和特定主机(类似于host_vars目录)的变量。创建作业模板时,必须指定要使用的清单就像在使用ansible-navigator命令时指定--inventory(-i)选项。

自动化控制器可以包含很多清单,包括静态清单和动态清单。包含动态内容的清单会显示最近一次清单同步尝试的状态;而静态清单会在Status栏显示Disabled(如图-5所示)。

要创建新的清单,请导航到 Resources > Inventories,然后单击 Add > Add inventory,指定清单的名称再单击Save

建好清单之后,可以通过 groupshosts来设置具体的受管主机,既可以手动指定,也可以直接调用一个已经几个存在的清单文件的内容

1)手动添加清单组、清单主机

  • 要手动添加组,请导航到 Groups选项卡,然后单击 Add。输入组的名称,然后单击 Save

  • 要手动添加未分组的主机,请导航到清单的 Hosts选项卡,然后单击 Add。输入要添加的主机的名称(通常是主机的完全限定域名),然后单击 Save

  • 要手动将主机添加到组中,请导航到清单的 Groups选项卡,单击组名称,然后单击该组的 Hosts选项卡。可以将清单中现有的主机关联到这个组,也可以将新的主机添加到这个组中。添加新主机时,输入主机的名称(通常是主机的完全限定域名),然后单击Save

导航页面显示了清单的名称和组的名称。在以下示例中,正在为Web服务器(Prod)清单中的 apache组 添加受管主机 serverb.lab.example.com(如图-6所示)。

2)使用清单文件来添加清单组、清单主机

如果在项目中已经包含了清单文件,还可以直接用清单文件的内容来设置控制器中的组和主机。在现有的组中,导航到 Sources选项卡,然后单击 Add。输入源的名称,然后从 Sources菜单中选择 Sourced from a Project。选择一个现有的项目,再选择项目中的某个清单文件,然后单击Add(如图-7所示)。

在现有的组中,导航到 Sources选项卡,然后单击这个源的 Start sync process图标。成功的清单同步会创建这个清单文件中定义的主机和组。

5.   创建作业模板(Job Template)

作业模板是一种运行剧本的特定方式。作业模板会包括主机清单,并可能指定要覆盖的变量、要使用或跳过的tag标签。

Templates页面列出了现有的模板,单击任何模板名称左侧的 > 图标可以展开模板信息,单击 Launch Template图标可以用模板来启动新的作业(如图-8所示)。

作业模板还包括了几个额外的可选字段,其中很多字段在使用ansible-navigator命令运行剧本时都有相应的命令行选项。可以将这些选项指定为作业模板的一部分,也可以在启动作业模板时根据提示再进行自定义(如表所示)

作业模板设置

相应的命令行选项

Inventory

--inventory (-i)

Execution Environment

--execution-environment-image (--eei)

Variables

--extra-vars (-e)

Forks

--forks (-f)

Limit

--limit (-l)

Verbosity

--verbose (-v)

Job Tags

--tags (-t)

Skip Tags

--skip-tags

Privilege Escalation

--become (-b)

6.   启动及审查作业

在启动作业模板时,自动化控制器使用执行环境来调用必要的资源运行剧本。如果将作业模板配置为按提示输入信息,则清单、凭据或变量、密码或密码短语这些,都会在用到时进行提示。同样地,如果作业模板使用的凭据提示输入密码或密码短语,则自动化控制器会提示您输入此信息。按提示输入信息的作业模板只能通过交互的方式来运行。

导航到 Views > Jobs可以查看作业的输出信息。除了剧本运行的输出以外,Jobs页面还显示了清单同步作业和源代码管理更新作业的输出信息。每个作业都包含一个数字,用于表示在自动化控制器运行作业中的顺序。

单击任何作业名称左侧的 > 图标可以展开作业信息。展开的详细信息包括谁启动了作业、使用了哪个清单,以及使用了哪个执行环境。单击作业名称可以查看完整的作业输出(如图-9所示)。

7.   课堂练习:在自动化控制器上运行剧本

开始练习(部署环境):

以用户student登入workstation虚拟机,使用lab命令来构建案例环境。

[student@workstation ~]$ lab start controller-playbooks

步骤说明:

步骤1:创建凭据

1)从自动化控制器的web UI中,创建名为Git Project Credential的源代码控制凭据,以便访问位于git.lab.example.com的Git仓库服务器

访问https://controller.lab.example.com,以用户admin登录,密码是redhat。

导航到 Resources > Credentials,然后单击Add,使用以下设置(如表所示)创建凭据,然后单击Save。

字段

Name

Git Project Credential

Organization

Default

Credential Type

Source Control

Username

student

SCM Private Key

/home/student/.ssh/gitlab_rsa

注意,在Workstation环境下完成实验,使用 ssh -X student@workstation

2)为受管机创建名为Devops Machine Credential的机器凭据,以便自动化控制器能够在受管机上运行剧本

导航到 Resources > Credentials,然后单击Add,使用以下设置(如表所示)创建凭据,然后单击Save。

字段

Name

Devops Machine Credential

Organization

Default

Credential Type

Machine

Username

devops

SSH Private Key

/home/student/.ssh/lab_rsa

Privilege Escalation Method

sudo

Privilege Escalation Username

root

步骤2:创建项目

3)创建名为Controller Playbooks Project的项目,这个项目指向含有清单和剧本的一个Git仓库,为这个项目指定一个默认的执行环境

导航到Resources > Projects,然后单击Add,使用以下设置(如表所示)创建项目,然后单击Save。

字段

Name

Controller Playbooks Project

Organization

Default

Execution Environment

Automation Hub Default execution environment

Source Control Type

Git

Source Control URL

git@git.lab.example.com:student/controller-playbooks.git

Source Control Credential

Git Project Credential

Options

Allow Branch Override

当你单击Save之后,自动化控制器会立即尝试同步这个项目,同步应该成功。

如果发现同步失败,请检查项目设置确保为Git源码项目指定了正确的URL网址,以及使用了正确的凭据,然后重新测试。

步骤3:创建清单

4)使用项目中的清单文件来创建名为Controller Playbooks Inventory(Dev)的清单

可以在自动化控制器web UI中管理清单文件,也可以直接编辑文件来更新它。

导航到Resources > Inventories,然后单击Add > Add inventory,使用以下设置(如表所示)创建一个新的清单,然后单击Save。

字段

Name

Controller Playbooks Inventory (Dev)

Organization

Default

找到Sources选项卡,单击Add,使用以下设置(如表所示)创建一个新的清单源,然后单击Save。

字段

Name

Controller Playbooks Source (Dev)

Source

Sourced from a Project

Project

Controller Playbooks Project

Inventory file

inventory

Options

Update on project update

单击导航器中的Sources,然后单击Controller Playbooks Source(Dev)源的Start sync process按钮,状态会更新以指示同步成功。

  • 单击Hosts选项卡,可以看到清单源已经导入serverf.lab.example.com这个主机。

  • 单击Groups选项卡,可以看到清单源已经导入了web组。

  • 单击web,然后单击Hosts选项卡,可以看到web组包含了serverf.lab.example.com这个主机。

步骤4:创建模板 

5)创建名为Basic Web的作业模板,配置这个作业模板以项目的默认执行环境来运行basic-web-fqcn.yml剧本。这个剧本用来在web清单组的受管主机上部署好网站服务器及网页

导航到Resources > Templates,然后单击Add > Add job template,使用以下设置(如表所示)创建新的作业模板,然后单击Save。

字段

Name

Basic Web

Inventory

Controller Playbooks Inventory (Dev)

Project

Controller Playbooks Project

Playbook

basic-web-fqcn.yml

Credentials

Devops Machine Credential

单击 Launch 以运行作业模板,生成的作业成功地运行了剧本。

导航到Views > Jobs,然后查找名称中包含Basic Web的带编号的作业。默认情况下,自动化控制器会在顶部列出最近的作业,名为Basic Web的作业的状态显示为Successful。

(可选)单击作业名称Basic Web以查看作业输出,看到的内容与刚启动作业的时候看到的一样。

使用curl访问网站http://serverf.lab.example.com,以验证作业是否已成功在serverf上部署web。

[student@workstation ~]$ curl http://serverf.lab.example.com
Hello world from serverf.lab.example.com.

结束练习(清理环境):

在workstation虚拟机上,切换到student用户主目录,使用lab命令来清理案例环境,确保先前练习的资源不会影响后续的练习。

[student@workstation ~]$ lab finish controller-playbooks

三、  综合实验:通过自动化控制器运行剧本

开始实验(部署环境):

以用户student登入workstation虚拟机,使用lab命令来构建案例环境。

[student@workstation ~]$ lab start controller-review

解决方案:

1.   创建名为reviewgitcred的源码控制凭据,属于Default组织,Git用户为student,使用/home/student/.ssh/gitlab_rsa文件中的私钥作为SCM私钥

从浏览器访问https://controller.lab.example.com,以用户名admin、密码redhat登入

导航到Resources > Credentials,然后单击Add,使用以下设置(如表所示)创建凭据,然后单击Save。

字段

Name

reviewgitcred

Organization

Default

Credential Type

Source Control

Username

student

SCM Private Key

/home/student/.ssh/gitlab_rsa

2.   创建名为reviewmachinecred的计算机凭据,属于Default组织,为devops用户配置此凭据。使用/home/student/.SSH/lab_rsa文件中的SSH私钥。通过sudo提权为root

导航到Resources > Credentials,然后单击Add,使用以下设置(如表所示)创建凭据,然后单击Save。

字段

Name

reviewmachinecred

Organization

Default

Credential Type

Machine

Username

devops

SSH Private Key

/home/student/.ssh/lab_rsa

Privilege Escalation Method

sudo

Privilege Escalation Username

root

3.   创建名为reviewinventory的清单,属于Default组织,在这个清单中添加主机server.lab.example.com

导航到Resources > Inventories,然后单击Add > Add Inventory,使用以下设置(如表所示)创建清单,然后单击Save。

字段

Name

reviewinventory

Organization

Default

单击Hosts选项卡,然后单击Add,添加servera.lab.example.com这个主机,然后单击Save。

4.   创建名为reviewproject的项目,属于Default组织。此项目必须使用git@git.lab.example.com:student/controller-review.git这个代码库,并使用reviewgitcred源码控制凭据来进行身份验证

导航到Resources > Projects,然后单击Add,使用以下设置(如表所示)创建项目,然后单击Save。

字段

Name

reviewproject

Organization

Default

Source Control Type

Git

Source Control URL

git@git.lab.example.com:student/controller-review.git

Source Control Credential

reviewgitcred

当你单击Save之后,自动化控制器会立即尝试同步这个项目,同步应该成功。

5.   创建名为reviewtemplate的作业模板,使用reviewinventory清单、reviewproject项目、webserver.yml剧本和reviewmachinecred机器凭据。将作业模板配置为使用Automation Hub默认执行环境。

启动使用reviewtemplate作业模板的作业,最终访问http://servera.lab.example.com显示以下消息:

Successful playbook run from automation controller.

导航到Resources > Templates,然后单击Add > Add job template,使用以下设置(如表所示)创建作业模板,然后单击Save。

字段

Name

reviewtemplate

Inventory

reviewinventory

Project

reviewproject

Execution Environment

Automation Hub Default execution environment

Playbook

webserver.yml

Credentials

reviewmachinecred

单击 Launch 创建一个使用这个作业模板的作业,生成的作业会运行剧本。

单击 Details 选项卡,注意作业的状态会显示为Successful。

访问网站http://servera.lab.example.com,可以看到正确的网页内容。

[student@workstation ~]$ curl http://servera.lab.example.com
Successful playbook run from automation controller.

结束实验(清理环境):

在workstation虚拟机上,切换到student用户主目录,使用lab命令来清理案例环境,确保先前练习的资源不会影响后续的练习。

[student@workstation ~]$ lab finish controller-review

思维导图:

小结:

本篇为 【RHCA认证 - DO374 | Day03:通过自动化控制器运行剧本】的学习笔记,希望这篇笔记可以让您初步了解自动化控制器的架构、如何在自动化控制器上运行剧本、综合实验:通过自动化控制器运行剧本等,不妨跟着我的笔记步伐亲自实践一下吧!


Tip:毕竟两个人的智慧大于一个人的智慧,如果你不理解本章节的内容或需要相关环境、视频,可评论666并私信小安,请放下你的羞涩,花点时间直到你真正的理解。

http://www.dtcms.com/a/524581.html

相关文章:

  • 深圳微商城网站建设温州 网站开发
  • 何谓RSS
  • 【SpringCloud】Eureka
  • 网站后台尺寸一般做多大的如何把优酷视频放到网站上
  • 帝国建站模板淘宝网络营销案例分析
  • 企业选择内容+人工智能供应商应该考虑什么?​
  • CI/CD(一)—— 从零搭建 GitLab 全流程(Docker 部署 + 实战指南)
  • 【Android】 Gradle 下载后本地使用方式(macOS / Windows通用)
  • 华为od面经-23届-Java面经
  • Kubernetes LoadBalancer系列|MetalLB介绍与配置
  • 网站制作及管理教程模板网站建设公司 东莞
  • 网站内容品质网站开发的相关语言有哪些
  • 淘宝自己网站怎么建设怎么制作网站编辑页面
  • SQLMap 终极渗透手册(2025全功能版)
  • 微硕WSP4884双N沟MOSFET:汽车智能座舱PMIC“微型稳压核”
  • 【Redis 全解析】高性能内存数据库的原理、实践与优化
  • 手机壳在线设计网站网站都不需要什么备案
  • Ubuntu 系统使用 Docker 部署 Jenkins 详细教程
  • 机器学习(9)正则化
  • 《3D手游光照算力精准分配:动态分层渲染的实践指南》
  • HarmonyOS分布式数据库深度应用
  • 南阳网站优化费用方太产品站网站建设
  • 从 rt.jar 到模块化:JDK9 类加载机制的全面演进
  • 列举一些数据仓库面向主题的设计的实际案例
  • 网站托管服务适合wordpress上传视频黑屏
  • MongoDB 8.x 制作一键部署安装包文档分享(Linux / Windows )
  • Data Warehouse简介
  • 若依 - idea集成docker一键部署springboot项目(docker-compose)
  • 2025 年 MathorCup 大数据建模竞赛 AB 题:高质量全方案・成品资料速取(含双代码 + 论文)
  • 为什么 idea 建议去掉 StringBuilder,使用“+”拼接字符串