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

自动化运维工具Ansible教程(一)【入门篇】

文章目录

  • 前言
  • Ansible 入门到精通
    • 入门篇
    • 进阶篇
    • 精通篇
    • 入门篇
      • 1. Ansible 简介
      • 2. 安装 Ansible
        • 1. 通过包管理器安装:
        • 2. 通过源码安装:
      • 3. Ansible 的基本概念和核心组件
      • 4. 编写和运行第一个 Ansible Playbook
      • 5. 主机清单和组织结构
        • 主机清单
        • 组织结构
      • 6. Ansible 常用模块和任务
      • 7. Ansible 变量和模板
      • 8. Ansible 条件和循环
  • 参考文档

在这里插入图片描述

前言

ansible 学习大纲
在这里插入图片描述
Ansible 是一个开源的自动化工具,用于配置管理、应用部署和任务执行。它以简单、可读性强的 YAML 格式的 Playbooks 为基础,使得自动化任务变得简单、可维护和可扩展。

  1. 简单易用:Ansible 的设计目标之一是简单易用。它使用 YAML 语法定义任务和配置,无需编写复杂的脚本或编程代码。初学者可以快速上手,同时也适用于复杂的自动化需求。

  2. 无代理:Ansible 使用 SSH 协议进行远程连接和执行任务,无需在远程主机上安装任何代理程序。这使得部署和管理变得简单,同时减少了对目标主机的依赖和配置要求。

  3. 基于模块化:Ansible 基于模块化的架构,提供了丰富的模块来管理各种不同类型的系统、服务和应用。这些模块可以执行各种任务,如安装软件包、配置文件、启动服务等。

  4. 声明式语法:Ansible Playbooks 使用声明式语法描述所需的状态和配置,而不是编写特定的步骤和命令。这使得配置管理和自动化任务的维护更加直观和可读性强。

  5. 可扩展性:Ansible 可以轻松扩展以适应不同规模和复杂度的环境。它支持分组管理、变量管理、角色和插件等功能,可以构建复杂的自动化流程和组织结构。

  6. 强大的生态系统:Ansible 拥有庞大的社区和活跃的贡献者,提供了大量的模块、角色和插件。Ansible Galaxy 是一个社区驱动的集市,提供了现成的角色和模块,可用于加速和共享自动化任务的开发。

Ansible 的应用场景广泛,可以用于服务器配置管理、应用部署、云基础设施管理、网络设备配置、持续集成/持续部署 (CI/CD) 等。它的简单性、可读性和可扩展性使得 Ansible 成为许多组织和开发团队的首选自动化工具。

Ansible 入门到精通

入门篇

  1. Ansible 简介
  2. 安装 Ansible
  3. Ansible 的基本概念和核心组件
  4. 编写和运行第一个 Ansible Playbook
  5. 主机清单和组织结构
  6. Ansible 常用模块和任务
  7. Ansible 变量和模板
  8. Ansible 条件和循环

进阶篇

  1. Ansible 的高级主题(例如:角色、动态清单、变量管理等)
  2. 使用 Ansible Vault 进行加密和解密
  3. Ansible 远程执行和连接方式
  4. 高级 Ansible Playbook 技巧
  5. 使用 Ansible 进行系统配置和部署
  6. Ansible 的容器和云集成
  7. Ansible 自动化测试和检查
  8. Ansible 运维和故障排除

精通篇

  1. Ansible 在企业级环境中的应用和扩展
  2. Ansible 与其他自动化工具的集成
  3. Ansible 最佳实践和实际案例分析
  4. Ansible 性能优化和容错机制
  5. Ansible 社区和资源

入门篇

1. Ansible 简介

2. 安装 Ansible

安装 Ansible 主要有两种方式:通过包管理器和源码安装。

1. 通过包管理器安装:

对于基于 Debian 的系统(如 Ubuntu),可以使用 apt-get 命令来安装 Ansible:

sudo apt-get update
sudo apt-get install software-properties-common
sudo apt-add-repository --yes --update ppa:ansible/ansible
sudo apt-get install ansible

对于基于 Red Hat 的系统(如 CentOS),可以使用 yum 命令来安装 Ansible:

sudo yum install epel-release
sudo yum install ansible

2. 通过源码安装:

如果你需要使用 Ansible 的最新版本,或者你的系统没有预包装的 Ansible,你可以选择通过源码安装。首先,你需要安装一些必要的依赖,然后从 GitHub 上克隆 Ansible 的源码,并安装:

sudo apt-get install git python3-pip
git clone https://github.com/ansible/ansible.git
cd ansible
sudo pip3 install .

安装完成后,你可以使用 ansible --version 命令来检查 Ansible 是否已经成功安装,以及其版本信息。

3. Ansible 的基本概念和核心组件

在这里插入图片描述

Ansible的一些基本概念和核心组件:

  1. 主机清单(Inventory):主机清单是一个定义可管理主机的文件或文件集合。它指定了Ansible应该在哪些主机上执行任务。主机清单可以是静态的(静态清单文件)或动态的(通过外部脚本或插件生成)。

  2. Playbook:Playbook是一个YAML格式的文件,用于定义Ansible的配置、部署和管理任务。它由一个或多个Play(任务集合)组成,每个Play定义了一组在一组主机上执行的任务。

  3. 模块(Modules):模块是Ansible的基本执行单元,用于执行具体的任务。Ansible提供了丰富的模块库,用于管理文件、安装软件包、配置服务等各种操作。

  4. 任务(Tasks):任务是在Playbook中定义的单个操作步骤。每个任务通常使用一个模块来执行特定的操作,例如安装软件包、复制文件、启动服务等。

  5. 角色(Roles):角色是一种组织和复用Playbook的机制。它将相关的任务、变量和文件组织到单个目录结构中,使得管理和维护复杂的配置变得更加容易。

  6. 变量(Variables):变量用于存储和传递数据,以在Playbook中进行配置和任务执行。变量可以在不同的层次(全局、主机组、主机、角色等)进行定义和使用。

  7. 模板(Templates):模板是一种允许在文件复制过程中进行动态渲染的机制。它使用Jinja2模板引擎,可以根据变量和条件生成最终的配置文件。

  8. 插件(Plugins):插件是可扩展Ansible功能的组件。它们可以修改或扩展Ansible的核心行为,包括主机清单解析、任务执行、变量处理等。

  9. 控制节点(Control Node):控制节点是运行Ansible的主机或服务器。它是执行Ansible命令和Playbook的机器,与目标主机通过SSH建立连接并进行管理操作。

这些是Ansible的一些基本概念和核心组件。通过理解这些概念,您可以开始编写和执行Ansible Playbook,实现自动化的系统配置和管理

4. 编写和运行第一个 Ansible Playbook

在这里插入图片描述

要编写一个部署包含 Spring Boot 项目、Redis、MySQL 和 Nginx 的 Ansible Playbook, 可以按照以下步骤进行操作:

  1. 主机清单(Host Inventory)
    指定你要在其中部署和管理应用程序的主机列表。它是一个文本文件,其中包含主机的名称或 IP 地址,并按组织和分类进行分组。主机清单告诉 Ansible 在哪些主机上执行特定的任务或角色。
    主机清单文件通常具有 .ini.yaml 扩展名
    我们有两个组 [web_servers][database_servers],每个组中列出了相应主机的名称和 IP 地址。你需要根据你的实际部署环境和需求来创建和维护主机清单文件。
[web_servers]
web1 ansible_host=192.168.1.10
web2 ansible_host=192.168.1.11[database_servers]
db1 ansible_host=192.168.1.20
db2 ansible_host=192.168.1.21
  1. 创建一个名为 deploy.yml 的 Ansible Playbook 文件。
    在这个 Playbook 中,我们首先定义了一些变量,例如项目名称、项目版本和 MySQL 的 root 密码。你可以根据实际情况修改这些变量的值。
    接下来,我们列出了一系列任务:
  • 更新 apt 缓存
  • 安装 Java Development Kit (JDK)
  • 安装 Redis
  • 安装 MySQL
  • 对 MySQL 进行安全设置
  • 安装 Nginx
  • 配置 Nginx
  • 部署 Spring Boot 项目
  • 启动 Spring Boot 项目
---
- name: Deploy Spring Boot Projecthosts: 172.16.57.56 # 替换为你的目标主机清单vars:project_name: icepip-first-project # 项目名称project_version: 1.0.0  # 项目版本mysql_root_password: your_mysql_root_password  # MySQL root 密码tasks:- name: Update apt cache  # 更新 apt 缓存become: yesapt:update_cache: yes- name: Install Java Development Kit (JDK)  # 安装 Java Development Kit (JDK)become: yesapt:name: openjdk-11-jdkstate: present- name: Install Redis  # 安装 Redisbecome: yesapt:name: redis-serverstate: present- name: Install MySQL  # 安装 MySQLbecome: yesapt:name: mysql-serverstate: present- name: Secure MySQL installation  # 安全设置 MySQL 安装become: yesmysql_user:name: rootpassword: "{{ mysql_root_password }}"login_unix_socket: /var/run/mysqld/mysqld.sockhost: localhostcheck_implicit_admin: yeslogin_user: rootlogin_password: ""priv: "*.*:ALL,GRANT"state: present- name: Install Nginx  # 安装 Nginxbecome: yesapt:name: nginxstate: present- name: Configure Nginx  # 配置 Nginxbecome: yestemplate:src: nginx.conf.j2dest: /etc/nginx/nginx.confvalidate: /usr/sbin/nginx -tnotify:- Restart Nginx- name: Deploy Spring Boot project  # 部署 Spring Boot 项目become: yescopy:src: target/{{ project_name }}-{{ project_version }}.jardest: /opt/{{ project_name }}.jar- name: Start Spring Boot project  # 启动 Spring Boot 项目become: yesshell: |nohup java -jar /opt/{{ project_name }}.jar > /dev/null 2>&1 &handlers:- name: Restart Nginx  # 重启 Nginxbecome: yesservice:name: nginxstate: restarted

Configure Nginx 任务中,使用了一个名为 nginx.conf.j2 的模板文件来配置 Nginx。你需要创建这个模板文件并定义适合你的项目的 Nginx 配置。定义了一个名为 Restart Nginx 的处理程序,在配置更改时重新启动 Nginx 服务。

  1. 创建一个名为 nginx.conf.j2 的模板文件
    Nginx 配置了一个监听端口为 80 的服务器块,将请求代理到运行在本地的 Spring Boot 项目的 8080 端口。
worker_processes auto;
events {worker_connections 1024;
}
http {server {listen 80;server_name your_domain;location / {proxy_pass http://localhost:8080;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}}
}
  1. 保存并关闭 deploy.ymlnginx.conf.j2 文件。

  2. 运行 Ansible Playbook:

		ansible-playbook deploy.yml

Ansible 将连接到目标主机并按照 Playbook中定义的任务顺序执行操作。它会安装和配置 Redis、MySQL 和 Nginx,然后部署和启动 Spring Boot 项目。

5. 主机清单和组织结构

主机清单(Host Inventory)和组织结构在 Ansible 中起着关键的作用。它们用于定义和组织要管理的主机以及如何对它们进行分类和分组。

主机清单

  1. 主机清单文件:主机清单文件是一个文本文件,其中列出了要在 Ansible 中管理的主机的信息。它可以包含主机名、IP 地址、连接信息和其他变量。主机清单文件可以使用 .ini.yaml 格式编写。

  2. 主机组:主机组是一种将主机按逻辑或功能进行分组的方式。你可以基于不同的标准(如角色、地理位置、环境等)将主机分成不同的组。这样,你可以根据需要在组级别或单个主机级别上执行任务。

  3. 组变量:组变量是应用于特定主机组的变量。它们以组的名称作为键,可以在主机清单文件中定义。通过组变量,你可以在一次性中为一组主机设置共享的属性和配置。

  4. 主机变量:主机变量是应用于单个主机的变量。它们以主机的名称作为键,可以在主机清单文件中定义。主机变量允许你为特定主机设置独立的属性和配置。

  5. 动态主机清单:动态主机清单是一种动态生成主机清单的机制。它可以从外部源(如云提供商、配置管理数据库等)获取主机信息,并在运行时构建主机清单。这对于动态环境中的自动化和弹性部署非常有用。

通过合理组织和使用主机清单和组织结构,你可以更好地管理和扩展 Ansible 部署。你可以根据你的项目需求和部署架构,灵活地定义主机组、变量和组织结构,以便有效地执行任务和角色。

在Ansible中,主机清单是一个配置文件,它包含了被Ansible管理的所有主机的列表。主机清单通常用于制定哪些主机应该接受哪些特定的命令和配置。

主机清单的基本结构是这样的:

在这个例子中,web_serversdatabase_servers就是组(组名),

[web_servers]
web1 ansible_host=192.168.1.10
web2 ansible_host=192.168.1.11[database_servers]
db1 ansible_host=192.168.1.20
db2 ansible_host=192.168.1.21

组织结构

Ansible的组织结构是通过主机清单来管理的,可以构建高级别的抽象结构,这意味着可以有子组、父组,甚至可以有嵌套的子组。 atlantaraleigh是子组;southeast是父组,它包含了两个子组(atlanta, raleigh);usa是一个更大的父组,包含了更多的子组。同时,在[southeast:vars]下定义的变量(some_server,halon_system_timeout,self_destruct_countdown,escape_pods) 将对southeast组以及其下的所有子组和主机生效。

[atlanta]
host1
host2[raleigh]
host3
host4[southeast:children]
atlanta
raleigh[southeast:vars]
some_server=foo.southeast.example.com
halon_system_timeout=30
self_destruct_countdown=60
escape_pods=2[usa:children]
southeast
northeast
southwest
northwest

这种组织结构的设计使得Ansible能够非常轻松地管理大型的网络结构。你可以简单地通过改变组或父组的配置来改变一大组机器的行为。

6. Ansible 常用模块和任务

Ansible 提供了丰富的模块来执行各种任务。下面是一些常用的 Ansible 模块和任务的示例:

  1. apt 模块:用于管理基于 APT(Debian、Ubuntu)的软件包。可以安装、升级、移除软件包,并更新本地的软件包缓存。
- name: Install nginxapt:name: nginxstate: present
  1. yum 模块:用于管理基于 YUM(Red Hat、CentOS)的软件包。可以安装、升级、移除软件包,以及管理软件包仓库。
- name: Install httpdyum:name: httpdstate: present
  1. copy 模块:用于将文件从控制节点复制到远程主机。可以指定源文件路径和目标路径,并设置文件权限和所有权。
- name: Copy configuration filecopy:src: /path/to/source/file.confdest: /etc/destination/file.confowner: rootgroup: rootmode: 0644
  1. template 模块:用于使用模板引擎生成文件,并将其复制到远程主机。可以使用变量和条件逻辑来自定义生成的文件。
- name: Generate configuration file from templatetemplate:src: /path/to/template.conf.j2dest: /etc/destination/file.confowner: rootgroup: rootmode: 0644
  1. service 模块:用于管理系统服务的状态。可以启动、停止、重新启动服务,并设置服务的启动状态。
- name: Start nginx serviceservice:name: nginxstate: started
  1. command 模块:用于在远程主机上执行命令并获取输出结果。
- name: Execute a commandcommand: ls -l /path/to/directoryregister: result- name: Print command outputdebug:var: result.stdout

这只是一小部分常用的 Ansible 模块和任务示例。Ansible 还提供了许多其他模块,涵盖了各种任务,包括文件操作、用户管理、数据库操作、云资源管理等。你可以根据具体需求选择适当的模块和任务,构建自己的 Ansible Playbooks。

7. Ansible 变量和模板

在 Ansible 中,变量和模板的定义可以在不同的位置和方式进行。以下是几种常见的定义方式:

1. 主机清单文件中定义变量: 可以在主机清单文件中为每个主机或主机组定义变量。这些变量将应用于特定的主机或主机组,可以在 Playbooks 和模板中使用。主机变量使用 host_varsgroup_vars 目录来组织,文件名与主机名或组名相对应。

示例(位于 host_vars 目录下的文件):

# host_vars/web1.yml
http_port: 8080

示例(位于 group_vars 目录下的文件):

# group_vars/web_servers.yml
http_port: 8080

2. Playbook 文件中定义变量: 可以在 Playbook 文件中定义变量,这些变量将应用于整个 Playbook 中的任务。可以使用 vars 关键字定义变量。

示例:

- name: Configure web serverhosts: web_serversvars:http_port: 8080tasks:- name: Install and configure web server...

3. 命令行中定义变量: 可以在运行 Ansible 命令时通过命令行参数定义变量。可以使用 -e--extra-vars 参数来传递变量。

示例:

ansible-playbook playbook.yml -e "http_port=8080"

4. 注册变量: 在任务执行期间,可以使用 register 关键字将命令执行的结果保存到变量中。注册变量可以在后续任务中使用。

示例:

- name: Execute a commandcommand: ls -l /path/to/directoryregister: result- name: Print command outputdebug:var: result.stdout

5. 模板文件中定义变量: 可以在模板文件中使用变量占位符,并在 Playbook 中通过 template 模块将变量值传递给模板。

示例模板文件 template.conf.j2

# Configuration file
server_ip = {{ ansible_host }}
http_port = {{ http_port }}

在 Playbook 中使用 template 模块:

- name: Generate configuration file from templatetemplate:src: template.conf.j2dest: /etc/destination/file.confowner: rootgroup: rootmode: 0644

8. Ansible 条件和循环

在 Ansible 中,条件和循环用于控制任务的执行流程和处理复杂的配置情况。以下是 Ansible 中条件和循环的用法和示例:

条件

使用条件语句可以根据不同的条件来执行或跳过任务。

  1. when 关键字:when 关键字允许你在任务级别使用条件判断。任务只有在条件为真时才会执行。
- name: Install package if OS is CentOS 7yum:name: package_namestate: presentwhen: ansible_distribution == 'CentOS' and ansible_distribution_major_version == '7'
  1. failed_when 关键字:failed_when 关键字允许你在任务执行失败时自定义失败的条件。
- name: Execute a command and ignore non-zero return codecommand: some_commandfailed_when: false
  1. changed_when 关键字:changed_when 关键字允许你自定义任务是否被标记为已更改的条件。
- name: Execute a command and always report as changedcommand: some_commandchanged_when: true

循环

使用循环结构可以对列表、字典等数据进行迭代,执行重复的任务。

  1. with_items 关键字:with_items 关键字用于循环遍历列表。
- name: Create multiple usersuser:name: "{{ item }}"state: presentwith_items:- user1- user2- user3
  1. loop 关键字:loop 关键字用于循环遍历任意可迭代对象,包括列表、字典等。
- name: Create multiple usersuser:name: "{{ item }}"state: presentloop:- user1- user2- user3
  1. with_dict 关键字:with_dict 关键字用于循环遍历字典。
- name: Set multiple factsset_fact:"{{ item.key }}": "{{ item.value }}"with_dict:key1: value1key2: value2key3: value3
  1. with_fileglob 关键字:with_fileglob 关键字用于循环遍历匹配指定文件模式的文件列表。
- name: Copy filescopy:src: "{{ item }}"dest: /path/to/destination/with_fileglob:- /path/to/files/*.txt- /path/to/files/*.conf

参考文档

  1. Ansible 官方文档 ↗: Ansible 官方文档是学习 Ansible 的最全面和权威的资源。它包含了 Ansible 的所有功能、模块和概念的详细说明,并提供示例和最佳实践指南。

  2. Ansible 官方示例 ↗: Ansible 官方示例库包含了一系列使用 Ansible 的示例 Playbooks,涵盖了各种常见的用例和场景。这些示例可以帮助你学习和理解如何使用 Ansible 进行自动化配置和部署。

相关文章:

自动化运维工具Ansible教程(一)【入门篇】

文章目录 前言Ansible 入门到精通入门篇进阶篇精通篇入门篇1. Ansible 简介2. 安装 Ansible1. 通过包管理器安装:2. 通过源码安装: 3. Ansible 的基本概念和核心组件4. 编写和运行第一个 Ansible Playbook5. 主机清单和组织结构主机清单组织结构 6. Ansi…...

计算机毕业设计 微信小程序 uniapp+vue大学生兼职平台

任何系统都要遵循系统设计的基本流程,本系统也不例外,同样需要经过市场调研,需求分析,概要设计,详细设计,编码,测试这些步骤,本系统前台采用微信开发者结合后台Java语言设计并实现了…...

JavaScript框架:构建交互性、现代化Web应用的利器

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 引言 JavaScript框架已…...

数据结构——二分查找法

二分查找法(Binary Search)是一种高效的查找算法,通常用于在已排序的数组或列表中查找特定的目标值。这个算法的基本思想是不断将查找范围缩小为原来的一半,直到找到目标值或确定目标值不存在。 二分查找是一种在每次比较之后将查…...

服务端渲染(SSR):提升Web应用性能和用户体验的关键技术

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 引言 服务端渲染&#…...

如何工作和生活相平衡?

之前待过一家外企,他们的口号是 Balancing work and life,工作和生活相平衡。辗转几家公司之后,发现这个越来越难了,越来越少的时间投入家庭和自己的生活。 人生的意义 (AI) 人生的意义是一个深奥而复杂的…...

semaphere部署,配置ldap

在处理 Ansible 相关项目时,我们经常面临繁琐的命令行操作,这对于不熟悉命令行的用户来说可能是一个挑战。此外,当项目规模扩大时,跟踪和管理多个 playbook 变得困难,同时缺乏对失败的及时通知和访问控制。这些问题催生…...

Java 泛型 T,E,K,V,?

泛型带来的好处 在没有泛型的情况的下,通过对类型 Object 的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况&#xf…...

软件测试技术之地图导航的测试用例

外观测试 屏幕显示不能有花屏、黑点和闪屏,清晰度、亮度、颜色要正常。 检测所有按键都能起到相应作用,是否手感不良。 UI显示状态、颜色、清晰度、效果。 控制:放大,缩小,音量调节功能测试。 交叉路口查询测试&am…...

【C++】常用集合算法

0.前言 1.set_intersection #include <iostream> using namespace std;// 常用集合算法 交集set_intersection #include<vector> #include<algorithm>void myPrint(int val) {cout << val << " "; }void test01() {vector<int>v…...

css flex:1;详解,配合demo效果解答

前言 给设置了display&#xff1a;flex的子组件设置了flex&#xff1a;1&#xff1b;就能让他填满整个容器&#xff0c;如果有多个就平均 flex&#xff1a;1&#xff1b;是另外三个样式属性的简写&#xff0c;等同 flex-grow: 0; flex-shrink: 1; flex-basis: auto;我们就针…...

discuzQ安装

我们开始配置php,安装两个扩展。 在宝塔面板中&#xff0c;单击软件商城->已安装&#xff0c;查找已安装的 PHP 软件。 然后在 php 管理中&#xff0c;单击禁用函数&#xff0c;进入设置页面。 在列表中单击删除函数 putenv、readlink、symlink、shell_exec &#xff0c;…...

深入解析NLP情感分析技术:从篇章到属性

目录 1. 情感分析概述1.1 什么是情感分析&#xff1f;- 情感分析的定义- 情感分析的应用领域 1.2 为什么情感分析如此重要&#xff1f;- 企业和研究的应用- 社交媒体和公共意见的影响 2. 篇章级情感分析2.1 技术概览- 文本分类的基本概念- 机器学习与深度学习方法- 词嵌入的力量…...

JVM的双亲委派模型

定义与本质&#xff1a; 类加载器用来把类文件加载到JVM内存中。从JDK1.2开始&#xff0c;类加载过程采用双亲委派模型&#xff0c;保证Java平台安全。 父类委托的定义&#xff1a; 一个类加载器在接到加载类请求的时候&#xff0c;首先不会去加载这个类&#xff0c;而是把这个…...

js中如何判断一个变量是否为数字类型?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐使用Number.isNaN()方法⭐使用正则表达式⭐使用isNaN()函数⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个…...

使用阿里PAI DSW部署Stable Diffusion WebUI

进入到网址https://pai.console.aliyun.com/里边。 点击创建实例。 把实例名称填写好&#xff0c;选择GPU规格&#xff0c;然后选择实例名称是ecs.gn6v-c8g1.2xlarge。 选择stable-diffusion-webui-env:pytorch1.13-gpu-py310-cu117-ubuntu22.04&#xff0c;然后点击下一步。…...

redisson使用过程常见问题汇总

文章目录 常见报错1. 配置方式使用错误2. 版本差异报错3. 配置文件中配置了密码或者配置错误4. 字符集和序列化方式配置问题5. Redisson的序列化问题6. 连接池问题&#xff1a;7. Redisson的高可用性问题&#xff1a;8. Redisson的并发问题9. Redisson的性能问题 2. 参考文档 常…...

代码随想录训练营 DP序列

代码随想录训练营 DP序列 718. 最长重复子数组&#x1f338;code 674. 最长连续递增序列&#x1f338;code 300.最长递增子序列&#x1f338;code 最后一题很巧妙&#xff0c;不能单纯的去把DP当作板子题&#xff0c;得思考才能得到最佳方式 718. 最长重复子数组&#x1f338; …...

Datastage部署与使用

Datastage部署与使用 - 码农教程 https://www.cnblogs.com/lanston/category/739553.html Streamsets定时拉取接口数据同步到HBase集群_streamsets api_webmote的博客-CSDN博客 【SDC】StreamSets实战之路-28-实战篇- 使用StreamSets实时采集指定数据目录文件并写入库Kudu_菜…...

【实用工具】Centos 安装ARL灯塔

文章目录 docker 安装安装docker-compose配置镜像加速器ARL安装和启动 docker 安装 yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm yum install docker-ce (若出现无法找到包可能是镜像源问题) 更…...

IP地址定位基础数据采集

在互联网时代&#xff0c;IP地址定位技术已经成为了广泛应用的一项重要技术。无论是用于网络安全、广告投放、市场调研还是用户体验优化&#xff0c;IP地址定位技术都发挥着关键作用。 什么是IP地址定位&#xff1f; IP地址定位是一种技术&#xff0c;它通过IP地址来确定设备…...

leetcode做题笔记138. 复制带随机指针的链表

给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff0c;其中每个新节点的值都设为其对应的原节点的值。新节点的 n…...

分布式文件系统的新兴力量:揭秘Alluxio的元数据管理机制【文末送书】

文章目录 写在前面01 分布式文件系统元数据的常见类型1.1 文件&#xff08;inode&#xff09;元数据1.2 数据块&#xff08;block&#xff09;元数据1.3 Worker元数据 02 分布式文件系统元数据的存储模式2.1 元数据存储在堆上&#xff08;HEAP模式&#xff09;2.2 元数据存储在…...

ArcGIS标注的各种用法和示例

标注是将描述性文本放置在地图中的要素上或要素旁的过程。 本文整理了ArcGIS中的各种标注方法、可能遇到的问题和细节,内容比较杂,想到哪写到哪。 一、正常标注某一字段值的内容 右键点击【属性】,在【标注】选项卡下勾选【标注此图层中的的要素】,在【文本字符串】栏中…...

修改ros中的控制器,便于仿真和驱动真实UR

UR机械臂学习&#xff08;5-3&#xff09;&#xff1a;驱动ur机械臂实物——问题及解决_error: 鈥榰r_msgs::setpayloadrequest {aka struct ur__冰激凌啊的博客-程序员宝宝 - 程序员宝宝 (cxybb.com) 问题5 Action client not connected: scaled_pos_traj_controller/follow_j…...

网络广播模块2*30W 智能4G广播终端开发模块

SV-704UG 4G网络广播模块2*30W 智能4G广播终端开发模块 一、描述 SV-704UG网络音频模块是一款带2*30W功放输出的4G广播音频模块&#xff0c;采用高性能ARM处理器及专业Codec&#xff0c;能接收4G广播音频数据流&#xff0c;转换成音频模拟信号输出。带有一路line in输入&#…...

优思学院|什么是精益项目管理?

正确地使用精益思想和技术是可以减少项目中的浪费、提高客户满意度&#xff0c;并提高项目的利润率。 在现实世界中&#xff0c;项目经理的工作充满了挑战。他们不仅需要专注于产品和团队&#xff0c;还必须确保客户的满意度。同时&#xff0c;他们还必须与矩阵组织打交道&…...

【Android取证篇】华为设备跳出“允许USB调试“界面方法的不同方法

【Android取证篇】华为设备跳出"允许USB调试"界面方法的不同方法 华为设备在鸿蒙OS3系统之后&#xff0c;部分设备启用"允许USB调试"方式会有所变化&#xff0c;再次做个记录—【蘇小沐】 1.实验环境 系统版本Windows 11 专业工作站版22H2&#xff08;2…...

在VSCode中移除不必要的扩展

在VSCode中移除不必要的扩展 在VSCode中安装扩展是编辑器缓慢且耗电的主要原因之一&#xff0c;因为添加的每个新扩展都会增加应用程序的内存和 CPU 使用率。 VSCode现在已经具备了非常多的功能&#xff0c;我们可以将一些重复工作的扩展移除掉。卸载这些现在可有可无的扩展将…...

算法刷题记录-树(LeetCode)

783. Minimum Distance Between BST Nodes 思路(DFS 中序遍历) 考虑中序遍历的性质即可 代码 class Solution { public:int min_diffnumeric_limits<int>::max();int prevnumeric_limits<int>::min()100000;int minDiffInBST(TreeNode* root) {inorderTraversa…...

做动态网站可以不写代码吗/百度提交入口网址截图

前言本文通过四种方式来告诉你如何使用&#xff0c;虽然有一种被放弃了。今日早读文章由老虎集团joking_zhang翻译授权分享。正文从这开始&#xff5e;&#xff5e;使用 React 时&#xff0c;我们的默认思维方式应该是 不会强制修改 DOM &#xff0c;而是通过传入 props 重新渲…...

网站开发前端好还是后端好/网站优化推广软件

InnoDB存储引擎 InnoDB是事务型数据库的首选引擎&#xff0c;支持事务安全表&#xff08;ACID&#xff09;&#xff0c;支持行锁定和外键&#xff0c;MySQL 5.5.5之后&#xff0c;InnoDB作为默认存储引擎&#xff0c;InnoDB主要特性有如下几点。 ⑴InnoDB给MySQL提供了具有提交…...

wordpress 备案 域名/网站推广优化的原因

参考高性能javascript for in 循环 使用它可以遍历对象的属性名&#xff0c;但是每次的操作都会搜索实例或者原型的属性 导致使用for in 进行遍历会产生更多的开销 书中提到不要使用for in 遍历数组 1 首先for in 会查找原型链上的属性 var arr [1,2,3]; Array.prototype.…...

自己服务器可以做网站/近期的重大新闻

RPA10.0该如何用&#xff0c;今天艺赛旗的工程师就手把手教您做一个**本教程只针对有并能够使用金蝶 Kis 应用的人员使用&#xff0c;艺赛旗设计器 10.0 版本及以上&#xff1b;第一步&#xff1a;开发流程中所需字段, 变量说明第二步&#xff1a;新建全局变量&#xff0c;运行…...

建设公司网站报价/今日军事头条

近几年来&#xff0c;区块链技术一直在彻底改变银行领域&#xff0c;区块链技术和数字银行也变得越来越普遍&#xff0c;而区块链技术也在不断改进金融系统的登录和身份验证领域。 区块链技术保护敏感信息并验证用户身份。该技术使用无密钥安全基础设施 (KSI) 来存储数据散列&…...

网站建设可以自学吗/推广普通话手抄报

QT 介绍 Qt是一个跨平台的 C 开发库&#xff0c;主要用来开发图形用户界面&#xff08;Graphical User Interface&#xff0c;GUI&#xff09;程序&#xff0c;当然也可以开发不带界面的命令行&#xff08;Command User Interface&#xff0c;CUI&#xff09;程序。且完全面向对…...