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

3.1 Ansible 的使用和配置管理

Ansible 的使用和配置管理

文章目录

  • Ansible 的使用和配置管理
    • Ansible 基础
    • Ansible 模块和变量
    • 主机管理和组织
    • 角色和剧本
    • 部署应用和配置
    • 自动化与批量操作
    • Ansible 常见用例
    • Ansible 最佳实践和性能优化

大纲

  1. Ansible 简介和特点
  • 介绍 Ansible 的定义和作用,以及它在配置管理和自动化部署中的优势。
  • 强调 Ansible 的无代理(Agentless)特性和简单易用的语法。
  1. Ansible 安装和配置
    • 演示如何安装 Ansible,并配置主控节点(Control Node)和被控节点(Managed Node)。
    • 详细介绍 Ansible 配置文件和目录结构。
  2. Ansible 基础
    • Ansible Ad-Hoc 命令:使用 Ad-Hoc 命令来进行简单的操作,如文件复制、命令执行等。
    • Ansible Playbook:介绍 Playbook 的概念,以及如何编写 Playbook 文件来描述配置和任务。
  3. Ansible 模块和变量
    • 了解 Ansible 模块的种类,包括系统管理、文件操作、软件包管理等。
    • 演示如何在 Playbook 中使用变量,以及如何从外部文件或命令中获取变量值。
  4. 主机管理和组织
    • 介绍如何定义主机清单文件(Inventory),包括主机的分组和变量设置。
    • 演示如何在 Playbook 中根据主机组织和特定变量来执行任务。
  5. 角色和剧本
    • 引入 Ansible 角色的概念,将 Playbook 中的任务和变量封装成可重用的角色。
    • 展示如何创建和组织 Ansible 角色,以实现模块化的配置管理。
  6. 部署应用和配置
    • 使用 Ansible 部署应用程序,包括下载代码、安装依赖、配置文件等。
    • 演示如何根据不同环境(开发、测试、生产)来应用不同的配置。
  7. 自动化与批量操作
    • 强调 Ansible 的自动化能力,例如自动化部署、配置更新和系统维护。
    • 演示如何编写 Cron 任务、自动化备份和批量操作。
  8. Ansible 常见用例
    • 分析 Ansible 在不同场景下的应用,如基础设施自动化、应用部署、配置管理等。
    • 通过实际案例,展示 Ansible 如何提高效率、减少人工操作和确保一致性。
  9. 最佳实践和性能优化
    • 提供 Ansible 的最佳实践,包括目录结构、变量命名规范等。
    • 强调性能优化技巧,如并发执行、减少 Playbook 执行时间等。

通过本节的内容,读者将深入了解 Ansible 的基本使用方法和配置管理原理。同时,通过实际案例的引导,读者能够将 Ansible 应用于真实的运维场景,提高效率、减少错误和确保系统的一致性。

##Ansible 简介和特点

Ansible 是一款强大的自动化工具,广泛用于配置管理、应用部署和任务自动化。它的主要特点使得它成为运维工程师和开发人员的首选工具之一。

定义和作用:Ansible 是一种开源的配置管理和自动化工具,它可以帮助管理大规模的基础设施、应用程序和网络。Ansible 的主要作用包括自动化部署、配置管理、任务协调和应用程序发布。

优势:Ansible 具有以下优势,使得它在运维领域备受欢迎:

  • 无代理(Agentless):Ansible 无需在被管理的目标主机上安装任何代理或客户端,通过 SSH 协议进行通信,降低了管理和维护的复杂度。
  • 简单易用的语法:Ansible 使用 YAML 格式的 Playbooks,让配置管理和自动化任务的编写变得简单明了。即使对于初学者,也可以快速上手并编写出功能强大的自动化任务。
  • 基于剧本(Playbooks):Ansible 使用 Playbooks 定义配置和任务,使得多步骤的自动化任务变得可读性高,并能够轻松扩展。
  • 强大的模块库:Ansible 提供了丰富的模块,用于执行各种任务,包括文件操作、软件安装、系统配置等。用户也可以自定义模块来满足特定需求。
  • 支持多种平台:Ansible 可以管理多种操作系统和云平台,包括 Linux、Windows、虚拟化平台和公有云服务商。
  • 可扩展性:Ansible 支持多种插件和扩展机制,可以与其他工具和平台集成,满足不同场景的需求。

通过这些特点,Ansible 成为了自动化运维、持续集成和配置管理领域的强大工具。其简单的语法和强大的功能使得团队能够更高效地管理基础设施和应用,降低了运维的负担。在接下来的内容中,我们将深入探讨如何使用 Ansible 进行配置管理和自动化部署,以及一些最佳实践。

##Ansible 安装和配置

Ansible 是一款跨平台的自动化工具,安装和配置它是开始使用的第一步。本节将演示如何安装 Ansible 并配置主控节点和被控节点。

1. 安装 Ansible

首先,我们需要在主控节点上安装 Ansible。Ansible 可以在 Linux、macOS 和 Windows 上运行。以下是在不同操作系统上安装 Ansible 的基本步骤:

  • Linux(例如 Ubuntu):在大多数 Linux 发行版上,你可以使用包管理器安装 Ansible。例如,在 Ubuntu 上,可以使用以下命令进行安装:
sudo apt update
sudo apt install ansible
  • macOS:在 macOS 上,你可以使用 Homebrew 来安装 Ansible:

brew install ansible
  • Windows:在 Windows 上,可以使用 Windows 子系统(WSL)安装 Ansible。首先安装 WSL,然后在 WSL 中安装 Ansible。

2. 配置主控节点

一旦安装了 Ansible,你需要配置主控节点。主控节点是你执行 Ansible 命令的机器。默认情况下,Ansible 配置文件位于 /etc/ansible/ansible.cfg,但你可以根据需要进行自定义配置。

配置主控节点涉及以下几个主要步骤:

  • 设置 SSH 密钥认证:确保你的主控节点可以通过 SSH 访问被控节点,最好使用密钥认证而不是密码认证。
  • 编辑 Ansible 配置文件:在 /etc/ansible/ansible.cfg 中,你可以设置一些全局配置,如默认用户、库路径等。

3. 配置被控节点

被控节点是你希望管理的目标主机,Ansible 会通过 SSH 连接到这些节点并执行任务。

配置被控节点需要以下步骤:

  • 安装 SSH 服务器:确保被控节点上有 SSH 服务器,以便主控节点可以通过 SSH 连接。
  • 添加被控节点到 Ansible 的 inventory(清单):Ansible 使用一个称为 “inventory” 的文件来跟踪被控节点。默认情况下,这个文件位于 /etc/ansible/hosts

配置好主控节点和被控节点后,你就可以开始使用 Ansible 进行配置管理和自动化部署了。在接下来的内容中,我们将深入研究 Ansible Playbooks、模块、任务等核心概念,以及如何进行系统配置和应用部署。

Ansible 基础

1. Ansible Ad-Hoc 命令

Ansible Ad-Hoc 命令是用于在被控节点上执行一次性任务的命令行工具。这些命令非常适合简单的任务,如文件操作、命令执行、软件包安装等。

Ad-Hoc 命令使用的语法格式如下:

ansible <host-pattern> -m <module> -a "<module-args>"

其中:

  • <host-pattern> 是指定目标主机的模式,可以是具体的主机名、IP 地址,也可以是 Ansible Inventory 中定义的主机组。
  • -m <module> 指定要使用的 Ansible 模块,如 copy(复制文件)、command(执行命令)、apt(包管理)等。
  • -a "<module-args>" 指定模块的参数,根据不同的模块而变化。

示例 Ad-Hoc 命令:

  • 复制本地文件到远程主机:ansible webserver -m copy -a "src=/path/to/local/file dest=/remote/path/"
  • 在远程主机上执行命令:ansible database -m command -a "ls /var/www"
  • 安装软件包:ansible appserver -m apt -a "name=nginx state=present"

2. Ansible Playbook

Ansible Playbook 是一种用于描述配置和任务的 YAML 文件。它允许你定义一系列的操作,以便在目标主机上执行。Playbook 是用来实现复杂的自动化操作和配置管理的工具。

一个简单的 Playbook 示例:

---
- name: 安装 Nginxhosts: webservertasks:- name: 安装 Nginxapt:name: nginxstate: present

在这个 Playbook 中:

  • name 字段是 Playbook 的名称。
  • hosts 字段指定了目标主机组。
  • tasks 字段包含要执行的任务,本例中只有一个任务,即安装 Nginx。

使用 Playbook 时,可以通过 ansible-playbook 命令来运行:

ansible-playbook nginx-install.yml

这是一个简单的 Playbook 示例,实际使用中可以包含更多复杂的任务、变量、条件等。Playbook 是 Ansible 中的核心概念,通过编写 Playbook,你可以实现自动化的配置管理和系统部署。

Ansible 模块和变量

1. Ansible 模块

Ansible 模块是 Ansible 用来在目标主机上执行任务的工具。模块包括各种功能,如系统管理、文件操作、软件包管理、数据库操作等,可以覆盖多个领域。

一些常见的 Ansible 模块包括:

  • 系统管理模块:ping(检查主机连通性)、reboot(重启主机)、user(管理用户)、group(管理用户组)等。
  • 文件操作模块:copy(复制文件)、template(模板文件)、file(管理文件属性)等。
  • 软件包管理模块:apt(Debian/Ubuntu 软件包管理)、yum(CentOS/RHEL 软件包管理)、dnf(Fedora 软件包管理)等。

示例:在 Playbook 中使用 user 模块创建用户

---
- name: 创建用户hosts: webservertasks:- name: 创建用户 johnuser:name: johnstate: present

2. Ansible 变量

在 Ansible 中,变量用于存储数据,使 Playbook 更加灵活和通用。变量可以包括静态变量、动态变量、外部变量等。

在 Playbook 中使用变量的方式:

  • 定义主机或主机组的变量。
  • 定义全局变量。
  • 使用 Facts(事实),这是 Ansible 在目标主机上自动收集的信息。

示例:在 Playbook 中使用变量

---
- name: 使用变量hosts: webservervars:app_name: myapptasks:- name: 创建目录file:path: /var/www/{{ app_name }}state: directory

在这个示例中,app_name 是一个变量,用于指定应用程序的名称。通过 vars 关键字可以在 Playbook 中定义变量,然后可以在任务中使用这个变量。这使得 Playbook 更具通用性,易于修改和管理。

变量可以从 Ansible Inventory 中获取,也可以从外部文件或命令中获取。使用变量可以让 Playbook 更加灵活,适应不同环境和需求。

主机管理和组织

1. 定义主机清单文件(Inventory)

主机清单文件是 Ansible 配置的核心之一,它用于定义 Ansible 将要管理和操作的主机和主机组。通过主机清单文件,我们可以将主机组织起来,分配变量,并对不同的主机组应用不同的操作。

示例:简单的主机清单文件

iniCopy code[webserver]
server1 ansible_host=192.168.1.10 ansible_user=admin ansible_ssh_pass=123456
server2 ansible_host=192.168.1.11 ansible_user=admin ansible_ssh_pass=123456[database]
db1 ansible_host=192.168.1.20 ansible_user=dbadmin ansible_ssh_pass=dbpassword

在这个示例中,我们定义了两个主机组:webserverdatabase。每个主机组下都有相应的主机,以及主机的连接信息,如 IP 地址、用户名和密码等。这些信息将被用于连接到主机执行任务。

2. 在 Playbook 中组织和使用主机

在 Ansible Playbook 中,我们可以根据主机组织和变量设置来执行任务。这使得可以针对不同的主机组应用不同的配置和操作。

示例:在 Playbook 中使用主机组织和变量

---
- name: 配置 Web 服务器hosts: webservertasks:- name: 安装 Apacheapt:name: apache2state: present- name: 配置数据库hosts: databasetasks:- name: 安装 MySQLapt:name: mysql-serverstate: present

在这个示例中,我们定义了两个 Playbook,分别用于配置 Web 服务器和数据库。通过 hosts 关键字,我们指定了每个 Playbook 应该在哪个主机组上执行。这样,我们可以将不同的任务针对不同的主机组来执行,实现更灵活的配置管理。

在 Ansible 中,主机管理和组织是非常重要的,可以根据实际需求对主机进行分组,分配变量,以便更好地管理和执行任务。

角色和剧本

1. Ansible 角色概述

Ansible 角色是一种组织和封装 Ansible Playbook 中的任务和变量的机制,它使得配置管理可以更加模块化和可重用。通过将一组任务、变量和模板封装在一个角色中,我们可以在多个 Playbook 中重复使用这些角色,从而实现更好的代码复用和维护性。

2. 创建和组织 Ansible 角色

创建 Ansible 角色通常包括以下步骤:

  1. 创建角色目录:在 Ansible 项目中,可以创建一个专门用于存放角色的目录,通常位于项目的 roles 目录下。
  2. 定义角色的结构:一个角色通常包含 tasksvarsfilestemplates 等子目录,分别用于存放任务、变量、文件和模板等资源。
  3. 编写角色的任务:在 tasks 目录下编写任务文件,用于定义角色的操作和配置。
  4. 定义角色的变量:可以在 vars 目录下定义角色的默认变量,也可以在 Playbook 中覆盖这些变量。
  5. 使用角色:在 Playbook 中引用角色,并将其应用到特定的主机组或主机上。

示例:创建和使用 Ansible 角色

my_project/
|-- roles/
|   |-- webserver/
|   |   |-- tasks/
|   |   |   |-- main.yml
|   |   |-- vars/
|   |   |   |-- main.yml
|-- my_playbook.yml

在这个示例中,我们创建了一个名为 webserver 的角色,用于配置 Web 服务器。角色目录包括 tasksvars 子目录,分别用于存放任务和变量。在 Playbook my_playbook.yml 中,我们可以引用这个角色并将其应用到指定的主机组。

使用 Ansible 角色可以将配置管理的逻辑和模块进行良好的封装,使得 Playbook 更加清晰和简洁,同时也方便了角色的复用和维护。

部署应用和配置

1. 使用 Ansible 部署应用程序

在运维中,自动化应用程序的部署是一项关键任务。Ansible 提供了丰富的模块和功能,可以帮助我们实现应用程序的自动化部署。以下是部署应用程序的一般步骤:

  1. 下载代码:使用 Ansible 提供的模块(如 gitsvn 等)从代码仓库下载应用程序的源代码。
  2. 安装依赖:通过 Ansible 模块(如 yumapt 等)安装应用程序所需的依赖包。
  3. 配置文件:将事先准备好的配置文件部署到目标主机,可以使用 Ansible 的 copy 模块或模板来实现。
  4. 启动应用:使用 Ansible 模块(如 commandsystemd 等)启动应用程序。
  5. 验证部署:通过合适的检查机制(如端口检测、API 调用等)来验证应用程序的部署是否成功。

2. 针对不同环境的配置

在真实的运维场景中,我们通常需要将应用程序部署到不同的环境中,如开发、测试、生产等。每个环境可能有不同的配置需求,比如数据库连接、日志级别、调试模式等。使用 Ansible,可以根据不同的环境应用不同的配置。具体实现方式包括:

  • 在 Ansible 的主机清单文件中,为不同环境分别定义主机组,如 [dev][test][prod]
  • 在角色或 Playbook 中,根据主机组来引用不同的配置文件或变量文件。
  • 通过 Ansible 的 when 条件判断,在 Playbook 中根据不同环境来应用不同的配置。

这样,我们可以灵活地根据不同环境的需要,将适当的配置应用到不同的主机组上,从而实现了配置的分离和环境的隔离。

自动化与批量操作

1. Ansible 的自动化能力

Ansible 是一款强大的自动化工具,可以帮助运维团队实现自动化部署、配置更新和系统维护等任务。通过编写 Ansible Playbook,可以描述系统的期望状态,然后 Ansible 会自动将系统配置更新到这个期望状态,从而实现自动化。

2. 编写 Cron 任务

Cron 是用于定期执行任务的工具,在运维中经常用于自动化的定时任务。我们可以使用 Ansible 来编写和管理 Cron 任务,例如定期备份、日志清理等任务。以下是编写 Cron 任务的示例:

- name: 添加定时备份任务cron:name: "Backup My App"minute: "0"hour: "3"job: "bash /path/to/backup_script.sh"

上述 Ansible Playbook 会在每天凌晨 3 点执行 /path/to/backup_script.sh 脚本。

3. 自动化备份和批量操作

使用 Ansible 还可以实现自动化备份和批量操作。我们可以编写 Playbook 来定期执行备份任务,保护重要数据。另外,Ansible 的 Ad-Hoc 命令和 Playbook 都支持同时操作多个主机,可以实现批量操作的需求。例如,以下 Playbook 可以同时在多台主机上执行命令:

- name: 在多台主机上执行命令hosts: my_grouptasks:- name: 执行命令command: echo "Hello from Ansible"

上述 Playbook 会在 my_group 主机组中的所有主机上执行命令 echo "Hello from Ansible"

通过这些自动化和批量操作的功能,Ansible 能够大幅提高运维效率,减少手动操作的工作量,确保任务的一致性和可靠性。

Ansible 常见用例

Ansible 是一个多功能的自动化工具,适用于许多不同的运维场景。下面我们将分析 Ansible 在几个常见的用例中的应用,以及通过实际案例展示其如何提高效率、减少人工操作和确保一致性。

1. 基础设施自动化

在基础设施自动化中,Ansible 可以用于自动化服务器和网络设备的配置、初始化和部署。例如,使用 Ansible 可以轻松创建和配置大量的虚拟机、物理服务器和云实例,确保它们都按照统一的标准进行配置。同时,Ansible 可以协助网络设备的自动化配置,如交换机、路由器等。

实际案例:

- name: 配置服务器hosts: my_grouptasks:- name: 安装必要的软件包apt:name: "{{ item }}"with_items:- nginx- mysql- php- name: 启动服务service:name: "{{ item }}"state: startedwith_items:- nginx- mysql- php-fpm

上述 Ansible Playbook 可以自动在 my_group 主机组的所有主机上安装并启动 nginx、mysql 和 php-fpm 服务。

2. 应用部署

Ansible 在应用部署方面表现出色。通过编写 Ansible Playbook,可以实现应用的自动化部署、更新和升级。这在持续集成和持续部署中尤为重要,能够提高交付效率,确保应用的一致性和可靠性。

实际案例:

- name: 部署应用hosts: my_app_serverstasks:- name: 从 Git 下载代码git:repo: https://github.com/my_org/my_app.gitdest: /path/to/appversion: masternotify:- restart my_app- name: 安装依赖command: npm installargs:chdir: /path/to/apphandlers:- name: 重启应用service:name: my_appstate: restarted

上述 Ansible Playbook 可以自动从 Git 下载应用代码,并在应用服务器上进行部署和依赖安装。当应用代码更新时,会自动触发应用的重启。

3. 配置管理

配置管理是 Ansible 的另一大用例。它可以帮助管理大规模的配置文件,确保不同的主机和应用之间的配置一致性。通过 Ansible,可以轻松管理各种配置,如系统配置、应用配置、数据库配置等。

实际案例:

- name: 配置数据库连接hosts: my_app_serverstasks:- name: 创建数据库配置文件template:src: db_config.j2dest: /path/to/app/db_config.ininotify:- restart my_apphandlers:- name: 重启应用service:name: my_appstate: restarted

上述 Ansible Playbook 可以自动在应用服务器上创建数据库连接的配置文件,并在配置文件发生更改时触发应用的重启。

通过以上实际案例,我们可以看到 Ansible 在基础设施自动化、应用部署和配置管理中的应用场景,它能够帮助运维团队提高效率,减少人工操作,确保配置一致性,使得系统更加稳定可靠。

Ansible 最佳实践和性能优化

在使用 Ansible 进行配置管理和自动化部署时,遵循最佳实践可以提高代码的可维护性、可读性和性能。此外,优化 Ansible 的执行性能也是很重要的,可以提高效率和响应速度。下面是一些 Ansible 的最佳实践和性能优化技巧:

1. 目录结构和组织

  • 将 Ansible 项目按照功能、环境或项目来组织。
  • 使用清晰的目录结构,例如 inventory 存放主机清单、playbooks 存放 Playbook 文件、roles 存放角色等。
  • 使用合理的命名规范,使得文件和变量的命名具有可读性。

2. 使用版本控制

  • 将 Ansible 项目纳入版本控制系统(如 Git),确保历史记录可追溯。
  • 使用版本标签和分支来管理不同环境的配置。

3. 使用 Ansible Galaxy

  • Ansible Galaxy 是一个用于分享和管理 Ansible 角色的平台。
  • 在 Ansible Galaxy 中搜索和使用已有的角色,避免重复造轮子。

4. 使用变量和模板

  • 使用变量来管理可配置项,使得配置信息易于修改和维护。
  • 使用 Jinja2 模板来动态生成配置文件,使得配置文件具有灵活性。

5. 并发执行

  • 针对适当的任务和剧本,启用 Ansible 的并发执行模式,提高任务的执行效率。
  • 通过配置 forks 参数来控制并发数,但要注意不要过多影响系统性能。

6. 优化 Playbook 执行时间

  • 将大的 Playbook 拆分成多个小的角色和剧本,有助于减少执行时间。
  • 使用异步执行模式来处理需要较长时间的任务,提高整体执行效率。

7. 避免不必要的任务

  • 定期审查和清理不再需要的任务和角色,减少不必要的执行和资源占用。

8. 控制 Ansible 输出

  • 在执行命令时,使用 -v 参数来控制输出的详细程度,避免输出过多影响可读性。

享和管理 Ansible 角色的平台。

  • 在 Ansible Galaxy 中搜索和使用已有的角色,避免重复造轮子。

4. 使用变量和模板

  • 使用变量来管理可配置项,使得配置信息易于修改和维护。
  • 使用 Jinja2 模板来动态生成配置文件,使得配置文件具有灵活性。

5. 并发执行

  • 针对适当的任务和剧本,启用 Ansible 的并发执行模式,提高任务的执行效率。
  • 通过配置 forks 参数来控制并发数,但要注意不要过多影响系统性能。

6. 优化 Playbook 执行时间

  • 将大的 Playbook 拆分成多个小的角色和剧本,有助于减少执行时间。
  • 使用异步执行模式来处理需要较长时间的任务,提高整体执行效率。

7. 避免不必要的任务

  • 定期审查和清理不再需要的任务和角色,减少不必要的执行和资源占用。

8. 控制 Ansible 输出

  • 在执行命令时,使用 -v 参数来控制输出的详细程度,避免输出过多影响可读性。

通过遵循以上最佳实践和性能优化技巧,可以使得 Ansible 在配置管理和自动化部署中更加高效、可靠,提升运维效率,同时减少潜在的问题和错误。

相关文章:

3.1 Ansible 的使用和配置管理

Ansible 的使用和配置管理 文章目录 Ansible 的使用和配置管理Ansible 基础Ansible 模块和变量主机管理和组织角色和剧本部署应用和配置自动化与批量操作Ansible 常见用例Ansible 最佳实践和性能优化 大纲 Ansible 简介和特点 介绍 Ansible 的定义和作用&#xff0c;以及它在配…...

神经网络基础-神经网络补充概念-06-计算图

概念 “计算图”&#xff08;Computational Graph&#xff09;是一种用于表示数学表达式计算过程的图结构&#xff0c;广泛用于深度学习和自动微分等领域。计算图将复杂的数学表达式分解为一系列简单的计算节点&#xff0c;这些节点之间通过边连接&#xff0c;形成了一个有向无…...

【【STM32之GPIO】】

STM32之GPIO 学完了正点原子自带的视频课之后感觉仍然一知半解现在更新一下来自其他版本的STM32学习 GPIO 就是 General Purpose Input Output 中文名叫通用输入输出口 可配置8种输入输出模式 引脚电平 0V~3.3V 部分引脚可容忍5V 输出模式下可控制端口输出高低电平&#xff…...

【动画】p60动画蓝图、播放蒙太奇、打包

p60动画蓝图、播放蒙太奇、打包 p60动画蓝图、播放蒙太奇、打包添加动画动画蓝图使模型使用动画蓝图奔跑跳舞蒙太奇 移动打断蒙太奇打包退出游戏 p60动画蓝图、播放蒙太奇、打包 添加动画 右键内容浏览器-》动画-》混合空间1D-》选择新的角色的骨骼 如下图在资产详情修改参数…...

去趋势化一个心电图信号、信号功率谱、低通IIR滤波器并平滑信号、对滤波器引起的延迟进行补偿研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

NTN(六) switchover

NTN中的switchover包括feeder link switchover和 serving link switch。所谓feeder link switchover就是将feeder link从source NTN 网关更改为特定 NTN payload的target NTN 网关的过程。 feeder link switchover是网络层过程。 而service link switch则是指serving NTN paylo…...

Ceph三个接口的创建

目录 一、创建 CephFS 文件系统 MDS 接口 服务端操作 1&#xff09;在管理节点创建 mds 服务 2&#xff09;查看各个节点的 mds 服务 ​编辑3&#xff09;创建存储池&#xff0c;启用 ceph 文件系统 创建 cephfs 4&#xff09;查看mds状态&#xff0c;一个up&#xff0c;其…...

接口测试和功能测试的区别

接口测试和功能测试的区别&#xff1a; 2023最新Jmeter接口测试从入门到精通&#xff08;全套项目实战教程&#xff09; 本文主要分为两个部分&#xff1a; 第一部分&#xff1a;主要从问题出发&#xff0c;引入接口测试的相关内容并与前端测试进行简单对比&#xff0c;总结两者…...

LeetCode 1572. 矩阵对角线元素的和

【LetMeFly】1572.矩阵对角线元素的和 力扣题目链接&#xff1a;https://leetcode.cn/problems/matrix-diagonal-sum/ 给你一个正方形矩阵 mat&#xff0c;请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1&…...

SQLSERVER 查询语句加with (NOLOCK) 报ORDER BY 报错 除非另外还指定了 TOP、OFFSET 或 FOR XML

最近有一个项目在客户使用时发现死锁问题&#xff0c;用的数据库是SQLSERVER &#xff0c;死锁的原因是有的客户经常去点报表&#xff0c;报表查询时间又慢&#xff0c;然后又有人在做单导致了死锁&#xff0c;然后主管要我们用SQLSERVER查询时要加with (NOLOCK),但是我在加完 …...

创建react native项目的笔记

创建react native项目的笔记 重新下载 ruby安装 watchman安装 cocoapods安装 react native 项目创建好项目后安装 ios 依赖清除设备缓存安装 android 依赖链接 网易 mumu 模拟器安装路由 Navigation页面之间的跳转逻辑自定义头部样式判断不同设备平台代码示例安装 Axios安装本地…...

Java自动化测试之Chrome网页爬取

记录一个好玩的小插件&#xff0c;可以通过它获取网页上的某个元素&#xff0c;然后得到他的值&#xff0c;不过需要懂前端技术&#xff0c;同时还需要一个chrome的小工具&#xff0c;工具放在我的共享文件里了&#xff0c;叫 chromedriver插件 pom 依赖 <dependency>&…...

boost下的asio异步高并发tcp服务器搭建

C 网络编程 asio 使用总结 - 知乎 (zhihu.com) 基于Boost::asio的多线程异步TCP服务器&#xff0c;实现了io_service线程池&#xff0c;测试了1万左右的并发访问&#xff0c;读写无压力_boost asio支持最大并发_E404的博客-CSDN博客 单线程 server.cpp #include <cstdlib&g…...

HCIP第五节------------------------------------------ospf

一、OSPF基础 1、动态路由分类 2、距离矢量协议 运行距离矢量路由协议的路由器周期性地泛洪自己的路由表。通过路由的交互&#xff0c;每台路由器都从相邻的路由器学习到路由&#xff0c;并且加载进自己的路由表中&#xff0c;然后再通告给其他相邻路由器。 对于网络中的所有…...

Golang下载安装

目录 1. 下载压缩包 2. 解压 3. 查看SDK是否安装成功 4. 配置环境变量 5. 查看环境变量是否配置成功 1. 下载压缩包 官网下载地址&#xff1a; All releases - The Go Programming Language Windows64位选择如下下载&#xff1a; 2. 解压 解压后内容如下&#xff1a; …...

工作时使用redis,kafka查阅的资料链接

不分先后 一 、redis查阅地址 一篇文章讲清楚RedisRedis原理介绍一篇详文带你入门 Redis内存耗尽后Redis会发生什么Redis 深入了解键的过期时间redis持久化机制Redis延迟问题全面排障指南一文搞定Redis高级特性与性能调优Redis 在 Linux 系统的配置优化Redis 的延迟问题&…...

上传excel文件

文件上传&#xff0c;其实就是用el-upload组件来实现上传&#xff0c;只是换了样式&#xff0c;和图片上传一样 <el-form-item label"选择文件"><el-input placeholder"请选择文件" v-model"form.file" disabled style"width: 45…...

leetcode 力扣刷题哈希表初尝试

哈希表 刷题初尝试 哈希表基础知识242. 有效的字母异位词383. 赎金信49. 字母异位词分组438. 找到字符串中所有字母异位词 哈希表基础知识 哈希表是一种数据结构&#xff0c;也叫散列表。哈希表中存储的是键值对&#xff0c;即(key&#xff0c;value)&#xff0c;根据key直接查…...

Docker 本地镜像发布到私有仓库

1. 本地镜像发布到私有库流程 2. 是什么 1 官方Docker Hub地址&#xff1a;https://hub.docker.com/&#xff0c;中国大陆访问太慢了且准备被阿里云取代的趋势&#xff0c;不太主流。 2 Dockerhub、阿里云这样的公共镜像仓库可能不太方便&#xff0c;涉及机密的公司不可能提供镜…...

计算机网络和 Internet 的基本概念

计算机网络和互联网&#xff08;Internet&#xff09;是现代计算机科技中的重要概念。它们为计算机之间的通信和数据交换提供了基础架构。以下是它们的基本概念&#xff1a; **计算机网络&#xff1a;** 计算机网络是指将多台计算机连接在一起&#xff0c;以便它们可以共享资…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...