【运维】自动化运维工具,使用 Ansible 进行开发环境配置管理(本地/远程,brew/scoop/yum,docker/packer/openstack)

news2024/12/23 11:31:53

【运维】自动化运维工具,使用 Ansible 进行开发环境配置管理(本地/远程,brew/scoop/yum,docker/packer/openstack)

文章目录

    • 1、什么是 Ansible,如何安装
    • 2、使用 ansible 自动配置本地开发环境(个人Dev环境)
    • 3、使用 ansible 自动配置远程开发环境(报错和解决方案)
    • 4、搭配包管理器使用(homebrew/macports/flink, choco/scoop/winget,apt/yum/dnf)
    • 5、搭配构建工具使用(packer, docker,openstack/k8s)

1、什么是 Ansible,如何安装

简单理解就是Ansible在运行时, 首先读取ansible.cfg中的配置, 根据规则获取Inventory中的管理主机列表, 并行的在这些主机中执行配置的任务ansible.yaml, 最后等待执行返回的结果。

官方地址:github-62k-star, 2-提问, 3-教程

ansible 是什么?

  • ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
  • ansible是基于 paramiko 开发的,并且基于模块化工作,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。
  • ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。 ansible目前已经已经被红帽官方收购,是自动化运维工具中大家认可度最高的,并且上手容易,学习简单。是每位运维工程师必须掌握的技能之一。
  • ansible 特点
    部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作;默认使用SSH协议对设备进行管理;
    有大量常规运维操作模块,可实现日常绝大部分操作
    配置简单、功能强大、扩展性强;
    支持API及自定义模块,可通过Python轻松扩展;
    通过Playbooks来定制强大的配置、状态管理
    轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
    提供一个功能强大、操作性强的Web管理界面和REST API接口——AWX平台。

ansible 架构图

  • 模块介绍
    Ansible:Ansible核心程序。
    HostInventory:记录由Ansible管理的主机信息,包括端口、密码、ip等。
    Playbooks:“剧本”YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能。
    CoreModules:核心模块,主要操作是通过调用核心模块来完成管理任务。
    CustomModules:自定义模块,完成核心模块无法完成的功能,支持多种语言。
    ConnectionPlugins:连接插件,Ansible和Host通信使用
    在这里插入图片描述

  • Ansible 系统由控制主机对被管节点的操作方式可分为两类,即adhoc和playbook:
    ad-hoc模式(点对点模式):使用单个模块,支持批量执行单条命令。ad-hoc 命令是一种可以快速输入的命令,而且不需要保存起来的命令。就相当于bash中的一句话shell。
    playbook模式(剧本模式):是Ansible主要管理方式,也是Ansible功能强大的关键所在。playbook通过多个task集合完成一类功能,如Web服务的安装部署、数据库服务器的批量备份等
    可以简单地把playbook理解为通过组合多条ad-hoc操作的配置文件。
    在这里插入图片描述

ansible安装

  • 命令
    pip3 install ansible
    

2、使用 ansible 自动配置本地开发环境(个人Dev环境)

这个板块占坑待填,先大概随便放点,后面折腾完了看情况更新

参考资料:1, 2, 3, 1 , 2, 3

使用 ansible 自动配置本地开发环境
比如在本机安装git, mysql, vim, 之类的工具,配置一些环境变量,创建特定的项目目录对项目进行分类(空文件夹)
ansible-playbook playbook.yml

---
- name: Setup local development environment
  hosts: localhost
  become: true

  tasks:
    - name: Install git
      apt:
        name: git
        state: present
        update_cache: yes

    - name: Install mysql-server
      apt:
        name: mysql-server
        state: present

    - name: Install vim
      apt:
        name: vim
        state: present

    - name: Create project directories
      file:
        path: "{{ item }}"
        state: directory
        mode: '0755'
      loop:
        - ~/projects
        - ~/projects/projectA
        - ~/projects/projectB

    - name: Set environment variables
      lineinfile:
        path: /home/{{ ansible_user }}/.bashrc
        line: 'export {{ item.name }}={{ item.value }}'
        create: yes
      loop:
        - { name: 'MY_VAR1', value: 'value1' }
        - { name: 'MY_VAR2', value: 'value2' }

    - name: Apply changes to bashrc
      shell: source /home/{{ ansible_user }}/.bashrc
      args:
        executable: /bin/bash

3、使用 ansible 自动配置远程开发环境(报错和解决方案)

主要是报错和解决方案

连接windows报错 Ansible “Failed to create temporary directory” Error with Windows using SSH

  • This error happens because Ansible needs a temp directory when connecting with SSH. The default location is “/tmp” which makes Windows a sad panda.
    You’ll need to create c:\temp on the windows host and add a few vars to your inventory file on the ansible server. The default location is /etc/ansible/hosts
  • 参考资料:1, 2

远程安装命令

# 验证连通性, 注意指定inventory文件的目录
ansible windows -m win_ping -u admin -k 
ansible windows -m win_ping -u Administrator --private-key /root/.ssh/id_rsa -i inventory
192.168.31.1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

# 安装命令, -vvv是打印日志
ansible-playbook -i /xxx/inventory /xxx/ansible.yaml -vvv

# 临时指定cfg文件(不用)
ANSIBLE_CONFIG=/xxx/ansible.cfg

解决方案:

# inventory文件
[windows]
192.168.31.xx

[windows:vars]
ansible_user=Administrator
ansible_port=22
ansible_connection=ssh # 指定使用ssh
ansible_ssh_private_key_file=/root/.ssh/id_rsa # 秘钥方式的ssh

remote_tmp = c:\tmp # 提前建好
become_method = runas # 在win上提上权限
ansible_shell_type = cmd # 使用cmd运行,重要
shell_type = cmd

# ansible.yaml
---
- name: Install XXX
  hosts: windows   # inventory文件的主机
  become: yes      # 权限提升
  become_method: runas  # 权限提升
  become_user: Administrator  # 权限提升
  tasks:
    - name: Install Git
      win_chocolatey:
        name: git
        state: present

# ansible.cfg文件(可以不用配)
[defaults]
inventory = /root/inventory
remote_tmp = C:\tmp

4、搭配包管理器使用(homebrew/macports/flink, choco/scoop/winget,apt/yum/dnf)

包管理器介绍

  • Macos: homebrew(最流行)、macports,flink
  • Windows: choco(开源),scoop(开源),winget(官方)
  • Linux: apt(debian, ununtu),yum(RHEL, CentOS, Fedora, Rocky),dnf(增强版yum)
  • Python:pip(官方),conda(数据科学,注意conda软件开源但镜像源有商用版权)
  • JavaScript:npm(官方),yarn(由facebook开源并维护,有更好的安装和离线支持)

macos包管理器介绍

  1. Homebrew
    Homebrew 是 macOS 上最流行的包管理器,广泛用于安装和管理各种命令行工具和软件。
    # 安装
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    
    # 使用
    brew install wget
    brew upgrade wget
    brew uninstall wget
    
  2. MacPorts
    MacPorts 是另一个流行的包管理器,也用于安装开源软件。它类似于 Homebrew,但有自己的一套包和配置系统。
    安装 MacPorts
    1、安装 Xcode 和 Xcode 命令行工具。
    2、下载并安装 MacPorts,安装包 可在其官网找到。
    使用 MacPorts
    sudo port install wget
    sudo port upgrade outdated
    sudo port uninstall wget
    
  3. Fink
    Fink 项目旨在将 Unix 软件移植到 macOS 上,通过 dpkgAPT(原本用于 Debian 系统)来管理软件包。
    1、安装 Xcode 和 Xcode 命令行工具。
    2、安装 Fink,安装包 可以在其官网找到。
    使用 Fink
    fink selfupdate
    fink install wget
    fink remove wget
    

Windows包管理器介绍

  1. Chocolatey(10k star)
    Chocolatey 是一个基于 NuGet 技术的开源包管理器,专为 Windows 环境设计, 适合需要管理复杂依赖关系的软件环境
    1, 2, 3, github
    # 安装 Chocolatey
    Set-ExecutionPolicy Bypass -Scope Process -Force; `
    [System.Net.ServicePointManager]::SecurityProtocol = `
    [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; `
    iex ((New-Object System.Net.WebClient).DownloadString(`
    'https://community.chocolatey.org/install.ps1'))
    
    # 使用 Chocolatey
    choco install git
    choco upgrade git
    choco uninstall git
    
  2. Scoop(30k star)
    Scoop 是一个简洁的命令行包管理器,主要用于开发工具和命令行应用程序, 更适合开发者,提供了一种简洁的安装方式
    1, 2, 3
    # 安装
    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
    iwr -useb get.scoop.sh | iex
    
    # 使用
    scoop install curl
    scoop update curl
    scoop uninstall curl
    
  3. Winget (Windows Package Manager)
    Winget 是由微软官方提供的包管理器,默认在 Windows 10 和 Windows 11 中可用。由微软官方提供,集成度高,适合普通用户和开发者。
    在命令提示符或 PowerShell 中使用 Winget 安装包(例如 notepad++):
    # 使用
    winget install --id Notepad++.Notepad++
    winget upgrade --id Notepad++.Notepad++
    winget uninstall --id Notepad++.Notepad++
    
    # 搜索
    winget search notepad++
    

Linux系统的包管理器因具体发行版不同而有所不同。

  1. Debian 和基于 Debian 的发行版 (如 Ubuntu)
    • 包管理器: APT (Advanced Package Tool)
    • 主要命令: apt-get, apt, dpkg
    sudo apt update    # 更新包列表
    sudo apt install package-name    # 安装包
    sudo apt remove package-name    # 删除包
    
  2. Red Hat Enterprise Linux (RHEL) 和基于 RHEL 的发行版 (如 CentOS, Fedora, Rocky)
    • 包管理器: YUM (Yellowdog Updater, Modified) 和 DNF (Dandified YUM,主要用于 Fedora 和较新的 RHEL/CentOS)
    • 主要命令: yum, dnf, rpm
    sudo yum update    # 更新包列表 (RHEL 6, CentOS 6 等)
    sudo yum install package-name    # 安装包
    sudo dnf update    # 更新包列表 (Fedora, RHEL 8, CentOS 8 等)
    sudo dnf install package-name    # 安装包
    

5、搭配构建工具使用(packer, docker,openstack/k8s)

  • IaaS(基础设施即服务)
    OpenStack: 提供了一整套管理计算、存储和网络资源的服务,被广泛用于构建和管理私有云、公有云和混合云。提供和管理虚拟机和裸金属服务器,实现自动化部署和管理基础设施资源。
    KVM:一种开源的虚拟化技术,被嵌入在 Linux 内核中,与 QEMU 和 libvirt 等工具一起使用,可以实现虚拟机的高效管理和支持多种操作系统。提供底层虚拟化支持,将物理计算资源虚拟化为多个虚拟机。
  • PaaS(平台即服务)/CaaS(容器即服务)
    Kubernetes (K8s) 一个开源的容器编排平台,自动化容器化应用的部署、扩展和管理,为开发者和运营团队提供了应用的可移植性和简化的管理能力。管理容器、自动伸缩、服务发现、负载均衡、滚动更新和回滚等。
  • DevOps 工具:
    Packer 用于创建一致的、可复用的虚拟机和容器镜像的开源工具,支持各种平台和环境。自动化创建虚拟机镜像(如 AWS AMI、Docker 镜像等),支持多平台构建,有助于实现持续集成和部署(CI/CD)流程。

配合packer使用

  • packer官方有支持ansible的插件
  • 参考资料:1,2,
# 本地安装
packer plugins install github.com/hashicorp/ansible

# packer配置文件引用(xxx.pkr.hcl)
packer {
  required_plugins {
    ansible = {
      version = "~> 1"
      source = "github.com/hashicorp/ansible"
    }
  }
}

# packer配置文件使用
provisioner "ansible" {
    playbook_file   = "ansible.yaml"
    user            = "root"
    use_proxy       = false
    inventory_file  = "/xxx/inventory"
    extra_arguments = [
        "--ssh-extra-args",
        "-o IdentitiesOnly=yes",
        "-e",
        "ansible_ssh_private_key_file=${var.ssh_private_key_file}"
    ]
}

配合docker使用

  • 近年来Linux容器技术越来越受欢迎,通过容器技术,可以保持程序运行环境的一致性,快速启动并高效率运行,涉及到的开销也比较小,此外,在系统层次上完成容器级别的资源隔离非常快速。

  • Ansible为Docker提供了一整套工具,包括相关模块、连接插件(ansible_connection: docker)和inventory脚本,因此Ansible可在许多方面与Docker进行交互。例如Ansible可构建Docker镜像、启动或停止容器、组合多个容器服务、连接到活动容器并与之交互,甚至可以从容器中获取inventory。

  • 参考资料:1

  • 要使用Ansible管理连接Docker,要求安装如下包(注意:Ansible端和docker端都安装,这一点和其它模块不一样,如报错,请自行在两端安装、卸载、升级调试):

    # 两端都安装,如果已经安装了,则在报错的情况下按需更新
    # 此外,根据Ansible使用的python解释器版本,按需决定使用pip还是pip3,
    # 如果需要的是pip,则yum install python-pip
    $ pip3 install docker requests
    
  • 一般都是在已有镜像的基础上通过Dockerfile来定义新的操作,然后构建出自己的Docker镜像。
    所以需要提供两个文件:一个基础镜像和一个Dockerfile文件(基础镜像不存在时会自动下载)。
    如果使用Ansible来构建镜像,那么这个Dockerfile文件需要能够被Ansible读取,比如可以放在Ansible playbook文件的同目录下。

  • 演示以下Ansible构建Docker镜像,此处已经写好了一个非常简单的Dockerfile,该Docker镜像是在CentOS 7镜像的基础上添加nginx,然后让nginx运行起来并提供cowsay页面

    FROM centos:centos7
    LABEL maintainer="junmajinlong.com"
    
    RUN rm -rf /etc/yum.repos.d/*.repo && \
        echo -e ' \
    [base] \n\
    name=os \n\
    baseurl=https://mirrors.huaweicloud.com/centos/$releasever/os/$basearch/ \n\
    enable=1 \n\
    gpgcheck=0 \n\
    [epel] \n\
    name=epel \n\
    baseurl=https://mirrors.huaweicloud.com/epel/7Server/$basearch/ \n\
    enable=1 \n\
    gpgcheck=0 \n\
    ' >/etc/yum.repos.d/base.repo && \
        yum -y install cowsay nginx && \
        rm -rf /usr/share/nginx/html/index.html && \
        cowsay Junmajinlong >/usr/share/nginx/html/index.html && \
        echo 'daemon off;' >>/etc/nginx/nginx.conf && \
        yum clean all
        
    EXPOSE 80
    
    CMD /usr/sbin/nginx
    
  • 然后写一个Ansible任务文件,假设名为build_and_run_image.yaml,内容如下:

    - hosts: docker
    gather_facts: no
    tasks: 
        - name: scp Dockerfile
        copy: 
            src: Dockerfile
            dest: /tmp/Dockerfile
    
        - name: build Docker image centos_nginx:v0.1.1
        docker_image: 
            name: centos_nginx
            source: build
            tag: v0.1.1
            build:
            path: /tmp
            pull: yes
        - name: start centos_nginx
        docker_container: 
            name: cng
            image: centos_nginx:v0.1.1
            ports: 8080:80
            state: started
    
  • Ansible执行完成上述任务后,可直接在Ansible端使用curl来测试页面.
    构建镜像完成后,可使用docker_container模块启动该镜像。
    该模块指令非常非常多,几乎包含了docker container命令的所有选项功能,但是熟悉docker命令,这些指令的用法也通俗易懂。
    在上面的playbook中明确使用了Dockerfile来构建镜像并启动镜像提供服务,但因为Dockerfile自身也是基于基础镜像构建的,所以可以省略这个构建过程,而是直接启动基础镜像并连接到启动的容器进行操作。
    下面实现与上述示例相同的效果,只是不使用Dockerfile构建。

OpenStack/k8s

  • OpenStack可整合一台或多台物理计算机的资源来按需创建、管理、配置、删除虚拟机,对OpenStack提供者来说,提高了硬件资源的利用率;对受益用户来说,可按自己的需求申请带有各种性能、各种资源配置的操作系统,比如公有云的模式,就像去网吧上网一样,想上多久、想体验什么配置的主机都按需付费来享用。

  • OpenStack vs Kubernetes
    (引用1, 2 3)
    OpenStack:适用于需要构建和管理大型云基础设施的企业和服务提供商。
    Kubernetes:适用于需要高效管理和部署容器化应用的开发和运维团队。

特性OpenStackKubernetes
主要用途虚拟化管理和云基础设施容器化应用的编排和管理
核心组件Nova、Neutron、Cinder、Swift、Keystone、HorizonPod、Service、Deployment、StatefulSet
优势高度可扩展、模块化设计、社区支持自动化部署与管理、跨环境支持、丰富生态系统
限制部署和维护复杂、硬件要求较高学习曲线陡峭、集群管理复杂
应用场景私有云、公有云、虚拟机生命周期管理微服务架构、容器化应用部署自动化
  • Ansible + OpenStack
    使用 Ansible 来安装和配置 OpenStack 组件,如 Nova(计算服务)、Neutron(网络服务)、Cinder(存储服务)、Keystone(身份服务)等。
    使用 Ansible 自动化 OpenStack 云基础设施的部署和管理。实现应用在 OpenStack 上的持续集成和持续部署(CI/CD)。

    # Install and configure OpenStack components
    - name: Install OpenStack Nova
    hosts: openstack-controllers
    tasks:
        - name: Install Nova packages
        apt:
            name: nova
            state: present
    
        - name: Configure Nova
        template:
            src: nova.conf.j2
            dest: /etc/nova/nova.conf
    
    # Provision resources in OpenStack
    - name: Provision OpenStack resources
    hosts: localhost
    tasks:
        - name: Create a new network
        os_network:
            cloud: mycloud
            state: present
            name: mynetwork
        
        - name: Launch an instance
        os_server:
            cloud: mycloud
            state: present
            name: myinstance
            flavor: m1.small
            image: Ubuntu-20.04
            network: mynetwork
    
  • Ansible + Kubernetes
    利用 Ansible 自动化 Kubernetes 集群的部署和日常运维管理。
    使用 Ansible 管理 Kubernetes 应用的部署、更新和监控。

    # Install Kubernetes cluster
    - name: Install Kubernetes on master nodes
    hosts: k8s-masters
    tasks:
        - name: Install kubeadm, kubelet, kubectl
        apt:
            name: "{{ item }}"
            state: present
        with_items:
            - kubeadm
            - kubelet
            - kubectl
            - containerd
    
        - name: Initialize Kubernetes master
        shell: kubeadm init --pod-network-cidr=10.244.0.0/16
    
        - name: Configure kubectl for admin user
        shell: |
            mkdir -p $HOME/.kube
            cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
            chown $(id -u):$(id -g) $HOME/.kube/config
    
    # Deploy a Pod network
    - name: Deploy Pod network
    hosts: k8s-masters
    tasks:
        - name: Apply Flannel network
        shell: kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    

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

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

相关文章

水滴式多功能粉碎机:粉碎中草药的好帮手

水滴式中草药粉碎机,顾名思义,其设计灵感源自自然界中水滴的柔和与力量。它摒弃了传统粉碎机粗犷的粉碎方式,采用低速研磨技术,模拟水滴穿透岩石的细腻与持久,对中草药进行温和而深入的粉碎。这种技术不仅保留了药材中…

编写注册接口与登录认证

编写注册接口 在UserController添加方法 PostMapping("/login")public Result login(Pattern(regexp "^\\S{5,16}$") String username,Pattern(regexp "^\\S{5,16}$") String password){ // 根据用户名查询用户User loginUser userS…

锁表导致系统挂了,谨慎DDL操作

作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验, Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、MySQL、PG、 高斯及Greenplum备份恢复, 安装迁移,性能优化、故障…

从关键新闻和最新技术看AI行业发展(第三十一期2024.8.26-9.8) |【WeThinkIn老实人报】

写在前面 【WeThinkIn老实人报】旨在挖掘AI行业的关键新闻和最新技术,同时Rocky会对其中的关键信息进行解读,力求让读者们能从容掌握AI科技潮流。 欢迎大家关注Rocky的公众号:WeThinkIn 欢迎大家关注Rocky的知乎:Rocky Ding AIGC算…

串口接收不到数据之电阻虚焊bug分析思路

单片机和EC移远通信模块进行通信,相同的代码运行在相同的硬件上,但是一个能联网,一个因为没有EC的应答连不上网。 开始分析,排除软件问题,给EC模块发为什么没应答? 1.发送失败 2.接收失败 排除情况2&#x…

GDPU Vue前端框架开发 计数器

计数器算不到你双向绑定的进度。 重要的更新公告 !!!GDPU的小伙伴,感谢大家的支持,希望到此一游的帅哥美女能有所帮助。本学期的前端框架及移动应用,采用专栏订阅量达到50才开始周更了哦( •̀ .̫ •́ )✧…

BMP图片与VGA(HDMI)时序互转

1.BMP介绍 BMP(Bitmap)是一种用于存储位图图像的文件格式,广泛应用于 Windows 操作系统中。BMP 文件可以存储高质量的图像数据,包括颜色深度较高的图片,同时支持无压缩或可选的简单压缩方式。 BMP格式: …

低代码-赋能新能源汽车产业加速前行

在“双碳”战略目标的引领下,全球新能源汽车产业正经历着前所未有的发展和变革,新能源汽车整车制造成为绿色低碳转型的重要领域。在政府的大力扶持下,新能源整车制造领域蓬勃发展,已成为全球汽车产业不可逆转的重要趋势。新能源汽…

上传文件到钉盘流程详解

文章目录 前言准备工作实现过程Maven依赖封装一个工具类获取文件上传信息unionId获取钉盘目录spaceId创建上传到钉盘前言 本文详解如何通过钉钉的API实现上传文件到钉盘目录,代码通过JAVA实现。 准备工作 1、在钉钉开发者后台创建一个钉钉企业内部应用; 2、创建并保存好应…

五星级可视化页面(23):污水处理、防汛可视化大屏

本期是第23期,分享一下水处理相关的大屏,欢迎老铁们勇于讨论,品鉴。

10款高效电脑监控软件推荐,电脑屏幕监控软件

在现代工作环境中,企业越来越依赖电脑监控软件来确保员工的工作效率、数据安全以及合规性。这些软件可以帮助管理者监督员工的日常活动,防止数据泄露,并确保工作时间得以合理使用。以下,我们将为您推荐10款高效的电脑监控软件&…

以太网传输出现不分包

最近对手件反馈,在传输文件的时候,我们这边发包太快,导致对手件网络出现了拥塞,把他们程序给搞死了。他们抓了一下他们收到的包,发现我们发送的数据包都大于了MTU设置的值。现在被要求更改。 排查方法:为什么我们发送的数据包会大于MTU的值。 可能性一:配置了Dont Fra…

Cryptography and Network Security: Principles and Practice(Lesson 2 notes)

Playfair Cipher Operation steps Construct a 55 letter matrix based onThe matrix is ​​constructed using a keyword (key)Then from left to right, from top to bottom; fill in the letters of the key in sequence (note: repeated letters in the key are not fil…

Open-Sora代码详细解读(2):时空3D VAE

Diffusion Models视频生成 前言:目前开源的DiT视频生成模型不是很多,Open-Sora是开发者生态最好的一个,涵盖了DiT、时空DiT、3D VAE、Rectified Flow、因果卷积等Diffusion视频生成的经典知识点。本篇博客从Open-Sora的代码出发,深…

齐活儿了:一文读懂ERP和MRP、MES、CRM、WMS、SRM、APS等系统

ERP,即企业资源计划系统,是驱动企业资源整合与高效管理的核心引擎。它覆盖了企业财务、人力资源、研发创新、生产制造、供应链管理、采购活动、销售市场、客户服务以及资产管理这九大核心业务领域,形成了一个全方位、多层次的企业价值链管理体…

a-table 定时平滑轮播组件

效果图&#xff1a; 实现代码如下&#xff1a; <template><div class"scroll-container" mouseenter"stopScroll" mouseleave"startScroll"><a-table:columns"columns":data-source"visibleData":paginatio…

【BFS专项】— 解决最短路问题

1、迷宫中离入口最近的出口 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 利用BFS层序遍历&#xff0c;新建一个变量统计步数代码&#xff1a; class Solution {int dx[] {0, 0, -1, 1};int dy[] {1, -1, 0, 0};public int nearestExit(char[][] maze, int[] en…

安泰高压放大器在基于EHD电喷的柔性压力传感器制备研究中的应用

实验名称&#xff1a;基于EHD电喷的柔性压力传感器制备技术研究 研究方向&#xff1a;EHD电喷技术是近年来出现的一种微纳尺度的新型3D打印技术&#xff0c;因其打印精度高、设备操作简单、材料来源广泛以及成本低等特点受到广泛关注&#xff0c;在柔性电子、生物医疗和可穿戴设…

C++ 继承【一篇让你学会继承】

1. 继承的概念及定义 1.1 继承的概念 继承机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特征的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。继承呈现了面向对象程序设计的层次结构&…

基于JavaWeb开发的java springboot+mybatis电影售票网站管理系统前台+后台设计和实现

基于JavaWeb开发的java springbootmybatis电影售票网站管理系统前台后台设计和实现 &#x1f345; 作者主页 网顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获…