使用ansible的剧本制作salt-master与salt-minion的安装与启动服务过程
虚拟机版本:Rocky Linux release 8.6 (Green Obsidian)
准备几台虚拟机
ipv4地址 | 主机名 |
192.168.137.13 | center |
192.168.137.14 | sp-1 |
192.168.137.15 | sp-2 |
192.168.137.16 | sp-3 |
一、center主机的配置
1.vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.137.13 center
192.168.137.14 sp-1
192.168.137.15 sp-2
192.168.137.16 sp-3
2.下载ansible-core
yum -y install ansible-core
3.配置ansible,执行剧本
3-1. 新建ansible目录,进入该目录,整个剧本操作都在ansible目录中完成
mkdir ansible
cd ansible
3-2. vim ansible.cfg
[defaults]
inventory=inventory
host_key_checking=False
注意事项,如果不是root用户,是sudo免密提权的普通用户alice可以这么写:
[defaults]
inventory=/home/alice/ansible/inventory #清单文件
roles_path=/home/alice/ansible/roles #角色目录
collections_paths=/home/alice/ansible/collections
#collection 目录,多个目录冒号:分隔(仅适用于 RHEL9)
remote_user=alice #远程用户
[privilege_escalation] #sudo 提权
become=True #是否提权
become_method=sudo #提权方式
become_user=root #提权用户
become_ask_pass=False #是否需要密码
3-3.vim inventory
[master]
center
[minions]
center
sp-[1:3]
[master:vars]
ansible_connection=local
[minions:vars]
ansible_ssh_pass=a
检查ansible是否配置成功:
[root@localhost ansible]# ansible all -m ping
[WARNING]: Platform linux on host center is using the discovered Python interpreter at /usr/bin/python3.8,
but future installation of another Python interpreter could change the meaning of that path. See
https://docs.ansible.com/ansible-core/2.12/reference_appendices/interpreter_discovery.html for more
information.
center | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3.8"},"changed": false,"ping": "pong"
}
sp-2 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false,"ping": "pong"
}
sp-3 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false,"ping": "pong"
}
sp-1 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false,"ping": "pong"
}
注意:这步失败的话,如果检查前面的代码也没问题,可以把第二步免密ssh登录做了再试试
3-4. vim install.yml
---
- hosts: allgather_facts: falsetasks:- name: get salt.reposhell: |sudo rpm --import https://repo.saltproject.io/py3/redhat/8/x86_64/latest/SALTSTACK-GPG-KEY.pubsudo curl -fsSL https://repo.saltproject.io/py3/redhat/8/x86_64/latest.repo | tee /etc/yum.repos.d/salt.reposudo yum clean allbecome: true- name: get master nameset_fact:master_name: "{{ groups['master'][0] }}"- name: get master ipshell: "cat /etc/hosts | grep {{ master_name }} | awk '{print $1}'"register: shell_out- name: set master_ipset_fact:master_ip: "{{ shell_out.stdout }}"- name: debug master_name and master_ipdebug:msg: "master_name = {{ master_name }}, master_ip = {{ master_ip }}"- hosts: mastergather_facts: falsetasks:- name: install salt-masteryum:name: salt-masterstate: presentbecome: true- name: change master configurationshell: "sed -i 's/^#interface.*/interface: {{ master_ip }}/' /etc/salt/master"become: true- name: start salt-masterservice:name: salt-masterenabled: yesstate: startedbecome: true- hosts: minionsgather_facts: falsetasks:- name: copy hosts to minions(为了获取salt-key)copy:src: /etc/hostsdest: /etc/hosts- name: install salt-minionyum:name: salt-minionstate: presentbecome: true- name: change minion configurationshell: "sed -i 's/^#master:.*/master: {{ master_name }}/' /etc/salt/minion"become: true- name: start salt-minionservice:name: salt-minionenabled: yesstate: startedbecome: true
3-5.执行剧本
ansible-playbook install.yml
4.center主机获取salt-key
4-1.批量接受所有未接受的 minion
[root@localhost ansible]# salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
sp-1
sp-2
sp-3
Proceed? [n/Y] y
Key for minion sp-1 accepted.
Key for minion sp-2 accepted.
Key for minion sp-3 accepted.
4-2.检查是否获取成功:
[root@localhost ansible]# salt-key -L
Accepted Keys:
center
sp-1
sp-2
sp-3
Denied Keys:
Unaccepted Keys:
Rejected Keys:
4-3.也可以一次性接收多个salt-key:
salt-key -a sp-1,sp-2,sp-3
4-4.测试是否成功连接:
test.ping
[root@localhost ansible]# salt '*' test.ping
sp-3:True
sp-1:True
sp-2:True
center:True#使用正则表达式,加-E参数
[root@localhost ansible]# salt 'sp-.*' -E test.ping
sp-1:True
sp-3:True
sp-2:True#-L参数,将字符串以空格或者,号分隔开,再每个匹配展示[root@localhost ansible]# salt 'sp-1,sp-2,sp-3' -L test.ping
sp-1:True
sp-3:True
sp-2:True
#或
[root@localhost ansible]# salt 'sp-1 sp-2 sp-3' -L test.ping
sp-1:True
sp-3:True
sp-2:True#-G 选项用于基于 minion 的 grains 数据来进行目标定位(targeting)。Grains 是 SaltStack 中的一种数据结构,它允许 minion 收集有关自身的信息,并将这些信息报告给 master。Grains 可以包括操作系统类型、内核版本、硬件信息等各种系统元数据。使用 -G 选项,您可以根据这些 grains 数据来选择特定的 minion 执行命令
[root@localhost ansible]# salt 'fqdn:sp-1' -G test.ping
sp-1:True#-C(大写)选项,混合方式
[root@localhost ansible]# salt 'G@host:center or E@sp-[1-2]' -C test.ping
sp-2:True
center:True
sp-1:True
查看test.version
[root@localhost ansible]# salt '*' test.version
sp-2:3005.5
sp-1:3005.5
center:3005.5
sp-3:3005.5
查看grains(采集硬件信息)
#grains,采集硬件信息
[root@localhost ansible]# salt 'sp-1' grains.ls
[root@localhost ansible]# salt 'sp-1' grains.items
#只要具体的几项:
[root@localhost ansible]# salt 'sp-1' grains.item host fqdn selinux master
sp-1:----------fqdn:sp-1host:sp-1master:centerselinux:----------enabled:Falseenforced:Disabled
4-5.拒绝未接受的minion
拒绝所有:
[root@localhost ansible]# salt-key -R
拒绝指定的一个或多个minion:
salt-key -r sp-1,sp-2,sp-3
4-6.删除已接受的minion
拒绝所有:
[root@localhost ansible]# salt-key -D
批量删除已接受的具体某些minion:
[root@localhost ansible]# salt-key -d center,sp-1,sp-2,sp-3
5.配置/etc/salt/master
5-1.配置nodegroups
使用/etc/salt/master配置nodegroups[root@localhost ansible]# vim /etc/salt/master
加上
nodegroups:sp_group: L@sp-1,sp-2,sp-3[root@localhost ansible]# systemctl restart salt-master
[root@localhost ansible]# salt -N sp_group cmd.run "ls"
sp-3:anaconda-ks.cfg
sp-2:anaconda-ks.cfg
sp-1:anaconda-ks.cfg
cmd.exec_code,cmd.exec_code_all 可以指定解释器执行命令:
[root@localhost ansible]# salt sp-1 cmd.exec_code_all sh "echo hello"
sp-1:----------pid:14927retcode:0stderr:stdout:hello
[root@localhost ansible]# salt sp-1 cmd.exec_code sh "echo hello"
sp-1:hello
二、免密ssh登录sp-1,sp-2,sp-3
在center主机执行:ssh-keygen一路回车
ssh-copy-id sp-1
有yes/no选项的=》yes
输入密码,回车ssh-copy-id sp-2
同上ssh-copy-id sp-3
同上然后依然在center主机使用
ssh sp-1
到该主机后命令行输入exit返回center主机
ssh sp-2
同上
ssh sp-3
同上
三、salt模块
列出所有的模块
[root@localhost ansible]# salt sp-1 sys.list_modules
sp-1:- acl- aliases- alternatives- archive- artifactory- at- baredoc- beacons- bigip- btrfs- buildout- chroot- cloud- cmd- composer- config- consul- container_resource- cp- cron- cryptdev- data- defaults- devinfo- devmap- dig- disk- django- dnsmasq- dnsutil- drbd- environ- ethtool- event- extfs- file- freezer- gem- genesis- glassfish- glusterfs- gnome- google_chat- grafana4- grains- group- hashutil- helm- highstate_doc- hosts- http- hue- incron- ini- inspector- introspect- iosconfig- ip- iptables- jboss7- jboss7_cli- jinja- k8s- kernelpkg- key- keyboard- kmod- kubeadm- locale- locate- log- logrotate- lowpkg- lvm- mandrill- match- mattermost- mine- minion- modjk- mount- msteams- nagios_rpc- namecheap_domains- namecheap_domains_dns- namecheap_domains_ns- namecheap_ssl- namecheap_users- network- nexus- nfs3- nova- nspawn- nxos- nxos_api- nxos_upgrade- openscap- openstack_config- opsgenie- out- pagerduty- pagerduty_util- pam- parallels- partition- peeringdb- pillar- pip- pkg- pkg_resource- ps- publish- pushover- pyenv- qemu_img- qemu_nbd- quota- raid- random- random_org- rbenv- rest_sample_utils- restartcheck- ret- rsync- rvm- s3- s6- salt_proxy- salt_version- saltcheck- saltutil- schedule- scsi- sdb- seed- selinux- serverdensity_device- service- shadow- slack- slsutil- smbios- smtp- solrcloud- sqlite3- ssh- state- status- statuspage- supervisord- sys- sysctl- sysfs- syslog_ng- system- telegram- telemetry- temp- test- timezone- tuned- udev- uptime- user- vault- vbox_guest- virtualenv- vsphere- x509- xfs- xml- zabbix- zenoss
1.cmd模块
查看cmd的方法有哪些?
[root@localhost ansible]# salt 'sp-1' sys.list_functions cmd
sp-1:- cmd.exec_code- cmd.exec_code_all- cmd.has_exec- cmd.powershell- cmd.powershell_all- cmd.retcode- cmd.run- cmd.run_all- cmd.run_bg- cmd.run_chroot- cmd.run_stderr- cmd.run_stdout- cmd.script- cmd.script_retcode- cmd.shell- cmd.shell_info- cmd.shells- cmd.tty- cmd.which- cmd.which_bin
查看cmd.run的帮助文档
[root@localhost ansible]# salt sp-1 sys.doc cmd.run
cmd.run使用示例:
[root@localhost ansible]# salt 'sp-1' cmd.run "ls -l;hostname"
sp-1:total 4-rw-------. 1 root root 1039 May 16 16:06 anaconda-ks.cfgsp-1#批量执行
[root@localhost ansible]# salt '*' cmd.run "hostname"
sp-3:sp-3
sp-2:sp-2
sp-1:sp-1
center:center
2.cp模块(复制)
查看帮助文档:
[root@localhost ansible]# salt sp-1 sys.doc cp
修改/etc/salt/master配置:
file_roots:base:- /srv/salt
重启salt-master
systemctl restart salt-master
cp.get_file(获取文件)
[root@localhost ansible]# mkdir -p /srv/salt/files/
[root@localhost ansible]# vim /srv/salt/files/test_get.txt
这是master文件#使用示例:
[root@localhost ansible]# salt sp-2 cp.get_file salt://files/test_get.txt /root/test.txt
sp-2:/root/test.txt
[root@localhost ansible]# salt sp-2 cmd.run "ls /root"
sp-2:anaconda-ks.cfgtest.txt
[root@localhost ansible]# salt sp-2 cmd.run 'cat /root/test.txt'
sp-2:这个是master节点的文件!!!
cp.get_dir
#注意:不能是空目录,至少要有一个文件的目录才能使用这个方法[root@localhost ansible]# mkdir -p /srv/salt/test_dirs
[root@localhost ansible]# salt sp-2 cp.get_dir salt://test_dirs/ /root/ sp-2:
#没有复制过去,因为是空目录
#给该目录加一个文件就可以了
[root@localhost ansible]# echo hello > /srv/salt/test_dirs/1.txt
[root@localhost ansible]# salt sp-2 cp.get_dir salt://test_dirs/ /root/
sp-2:- /root//test_dirs/1.txt
[root@localhost ansible]# salt sp-2 cmd.run 'ls /root/'
sp-2:anaconda-ks.cfgtest.txttest_dirs
[root@localhost ansible]# salt sp-2 cmd.run 'ls /root/test_dirs'
sp-2:1.txt
cp.push
[root@localhost ansible]# vim /etc/salt/master
file_recv: True[root@localhost ansible]# systemctl restart salt-master[root@localhost ansible]# salt sp-2 cp.push /root/test.txt
sp-2:True
[root@localhost ansible]# ls /var/cache/salt/master/minions/sp-2/files/root/
test.txt[root@localhost ansible]# salt sp-2 cp.push /root/test.txt upload_path=/test/file/file.txt
sp-2:True
[root@localhost ansible]# find / -name 'file.txt'
...
/var/cache/salt/master/minions/sp-2/files/test/file/file.txt
[root@localhost ansible]# ls /var/cache/salt/master/minions/sp-2/files/test/file/
file.txt
state.sls => 类似ansible的剧本
查看某个模块的剧本示例帮助
#查看帮助文档
salt sp-1 sys.list_state_functions pkg
salt sp-1 sys.state_doc pkg.installedsalt sp-1 sys.list_state_functions service
salt sp-1 sys.state_doc service.dead
编辑nginx下载启动服务剧本
mkdir /srv/salt/state/
cd /srv/salt/state/
mkdir nginx
cd nginx
vim nginx_install.sls
#剧本内容
nginx-install:pkg.installed:- name: nginxnginx-service:service.running:- name: nginx- enable: True- require:- pkg: nginx-install#执行nginx_install.sls剧本
salt sp-1 state.sls state.nginx.nginx_install
#检测是否成功
salt sp-1 cmd.run 'ps -ef | grep nginx'
salt sp-1 cmd.run 'service nginx status'
关闭nginx服务
vim nginx_stop.sls
#关闭nginx
stop_nginx_service:service.dead:- name: nginx[root@localhost nginx]# salt sp-1 state.sls state.nginx.nginx_stop
sp-1:
----------ID: stop_nginx_serviceFunction: service.deadName: nginxResult: TrueComment: Service nginx was killedStarted: 08:20:02.938253Duration: 358.058 msChanges:----------nginx:FalseSummary for sp-1
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
Total run time: 358.058 ms
[root@localhost nginx]# salt sp-1 cmd.run 'service nginx status'
相关文章:

使用ansible的剧本制作salt-master与salt-minion的安装与启动服务过程
虚拟机版本:Rocky Linux release 8.6 (Green Obsidian) 准备几台虚拟机 ipv4地址主机名192.168.137.13center192.168.137.14sp-1192.168.137.15sp-2192.168.137.16sp-3 一、center主机的配置 1.vim /etc/hosts 127.0.0.1 localhost localhost.localdomain loc…...

数据库sqlite3
用数据库函数完成数据的增删改查 增: 将要存储的信息录入到结构体中,再使用snprintf函数信息结合sqlite3命令语句使用sqlite3_exec函数完成插入。 int do_insert(sqlite3 *ppDb) {Worker Work;printf("输入插入的工号:");scanf("%d&qu…...

开发基础之Python 函数(Basic Python Functions for Development)
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…...

Django_Vue3_ElementUI_Release_001_项目初始化
1. 数据库 1.1 安装 https://blog.csdn.net/rbx508780/article/details/127176754 1.2 创建数据库 1.3 DBeaver可视化数据库 https://dbeaver.io/download/ 2 安装Python(3.9.12) 2.1 下载地址 https://www.python.org/downloads/release/python-3912/ 2.2 设定国内源 pip …...

MySQL之安装与基础知识
目录 一:在centos7上安装MySQL数据库 1.卸载默认存在的环境 2.配置mysql的yum源 3. 安装MySQL 4.登录mysql 5.设置MySQL的配置文件 二:MySQL基础知识 1.什么是数据库 2.主流数据库 3.服务器,数据库,表关系及使用案例 4…...

前端基础 | HTML基础:HTML结构,HTML常见标签
文章目录 HTML1、HTML结构1.1HTML标签1.1.1标签1.1.2标签含义 1.2HTML文件基本结构1.3标签层次结构1.4 快速生成代码框架 2、HTML常见标签2.1注释标签2.2标题标签:h1–h62.3段落标签:p2.4 换行标签:br2.5格式化标签2.6 图片标签:i…...

宏任务和微任务+超全面试真题
概念 微任务和宏任务是在异步编程中经常使用的概念,用于管理任务的执行顺序和优先级。 宏任务:setTimeout, setInterval,I/O 操作和 UI 渲染等。微任务: Promise 回调、async/await等 微任务通常比宏任务具有更高的优先级。 执…...

针对SVM算法初步研究
归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言📝心态决定高度,细节决定成败…...

Java中的`String`不可变性详解
在Java中,String类具有不可变性(immutable),这意味着一旦String对象被创建,它的值将无法更改。所有对字符串的修改操作(如拼接、替换等)实际上都会生成一个新的字符串对象,而不会修改…...

c# SMTP发送邮件
string from ""; string fromAlias "MIS-TC"; string[] to { "" }; string subject "问题提交"; string body sb.ToString(); string ipaddr "smtp.email.qq.com"; int port 25; string credit ""; strin…...

GPU基础 -- 并行化与阿姆达尔定律
并行化与阿姆达尔定律 并行化是将计算任务分割成多个部分,使这些部分能够在多个处理器或核心上同时运行,从而加速任务的完成时间。阿姆达尔定律(Amdahl’s Law)则揭示了并行化所能带来的加速效果的限制。 阿姆达尔定律公式 阿姆…...

Lua热更
Lua 热更 前提 Lua是轻量级,可以解释执行的编程语言、性能好 基本原则 1.场景空 代码控制物体加载释放 2.场景一个 3.节点不手动挂代码 4.AssetsBundle资源管理 5.Lua开发框架 6.调试模式、发布模式 XLua 热更框架 XLua是C#环境下Lua的解决方案 1.Lua虚拟…...

提升汽车行业软件质量:ASPICE培训的关键实践方法
ASPICE(汽车行业软件过程改进和能力确定)培训是一种针对汽车行业软件开发和维护过程的标准化培训。 该培训旨在帮助组织提高其软件开发和维护过程的质量和效率。以下是ASPICE培训的一些最佳实践方法: 1. 理解ASPICE框架:首先&…...

2024 全新智能识别 API 接口震撼登场
近年来,随着人工智能技术的快速发展,智能识别技术逐渐成为了各个领域的热门应用。在这个大背景下,2024 年的全新智能识别 API 接口横空出世,为我们的生活带来了更多的便利。本文将为大家详细介绍这个全新智能识别 API 接口&#x…...

《UniVS: Unified and Universal Video Segmentation with Prompts as Queries》要点提炼
论文来源:https://arxiv.org/abs/2402.18115 《UniVS: Unified and Universal Video Segmentation with Prompts as Queries》是2024CVPR中的一篇关于视频分割的论文, 主要内容: 论文提出了一个名为UniVS的新型统一视频分割架构,…...

计算机毕业设计选题推荐-推拿知识互动平台-Java/Python项目实战
✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...

基于SpringBoot+Vue+MySQL的瑜伽馆管理系统
系统展示 用户前台界面 管理员后台界面 系统背景 本系统采用SpringBoot作为后端框架,Vue.js构建前端用户界面,MySQL作为数据库存储系统,实现了瑜伽馆的全面数字化管理。系统涵盖会员管理、课程预约、教练排班、收入统计等功能模块,…...

【MySQL】EXPLAIN(执行计划)关键字是什么?
简介: explain是一个强大的 SQL 命令,用于分析和优化查询性能。通过查看数据库执行计划,我们可以理解查询是如何被处理的,包括表的访问顺序、使用的索引、连接类型等。这对于找到潜在的性能瓶颈非常重要。 目录 一、基本含义 二…...

Mybatis两种方式来调用sql语句
使用Mybatis时,有两种方式来调用sql语句: 方式一(直接通过Session对象调用sql语句): SqlSession sqlSession sqlSessionFactory.openSession(); User user sqlSession.selectOne("userTest.selectUser"…...

第十八节:学习统一异常处理(自学Spring boot 3.x的第五天)
这节记录下如何通过AOP方式统一处理异常拦截。 第一步: 新建一个exception包,创建一个ExcetionHandler.java(名字随意取) package cn.wcyf.wcai.exception;import cn.wcyf.wcai.common.Result; import org.springframework.web…...

flink中slotSharingGroup() 的详解
在 Apache Flink 中,slotSharingGroup() 是一个用于控制算子(operator)之间资源共享的机制。它允许多个算子共享相同的 slot(即资源容器)。Slot 是 Flink 中的资源单位,slot 共享可以提高资源利用率&#x…...

ASPF 技术介绍
...

77-java 装饰器模式和适配器模式区别
Java中的装饰器模式和适配器模式虽然都涉及到对象的组合和包装,但它们的应用场景和目的有所不同。 装饰器模式的目的是在不修改原始对象的基础上,动态地添加功能或行为。它允许用户通过创建一个包含原始对象的包装类(装饰器ÿ…...

5. Fabric 设置画布大小
1. 设置宽度 canvas.setWidth(width)2. 设置高度 canvas.setHeight(height)3. 设置大小 canvas.setDimensions({width,height })4. 画布的缩放 canvas.on(mouse:wheel, (opt) > {const delta opt.e.deltaY // 滚轮,向上滚一下是 -100,向下滚一下…...

240912-通过Ollama实现网站知识总结
A. 最终效果 B. 准备工作 报错: USER_AGENT environment variable not set, consider setting it to identify your requests.-CSDN博客 C. 完整代码 # https://coreyclip.github.io/Ollama-Web-Summaries/import os os.environ[USER_AGENT] Mozilla/5.0 (Windows NT 10.…...

Debian 包管理工具apt使用
apt基本用法 apt(Advanced Package Tool)是Debian及其衍生发行版(如Ubuntu、Linux Mint等)中非常强大的软件包管理系统。它允许用户从远程仓库安装、更新、升级、配置和卸载软件包。除了我们已经讨论过的卸载软件包的功能外&…...

如何模拟一个小程序项目打包的流程
一、Uni-app 执行 yarn run dev:mp-weixin后会发生什么 (一)准备工作 克隆项目:创建以 typescript 开发的工程(如命令行创建失败,请直接访问 https://gitee.com/dcloud/uni-preset-vue/repository/archive/vite-ts.z…...

设计模式七大原则详解
设计模式七大原则详解 设计模式中的“七大原则”是面向对象编程(OOP)中的一组指导原则,这些原则帮助开发者编写灵活、可维护、可扩展的代码。这些原则并不直接等同于设计模式,但它们是设计模式的基础。下面是这七大原则ÿ…...

Navicat On-Prem Server 2.0 | MySQL与MariaDB基础管理功能正式上云
近日,Navicat 发布了 Navicat On-Prem Server 2.0 的重大版本更新。这标志着这款自2021年首发的私有云团队协作解决方案迈入了一个崭新的阶段。此次2.0版本的飞跃性升级,核心聚焦于MySQL与MariaDB基础管理功能的全面革新与强化,赋予了用户的操…...

汽车车门的美观与功能:矫平工艺的精细修复
汽车车门的美观与功能:矫平工艺的精细修复 在汽车制造的精细工艺中,车门不仅是车辆外观的重要组成部分,更是功能性的关键载体。车门的平整度直接影响到车辆的密封性、噪音控制以及整体的美观度。面对生产过程中可能出现的车门变形问题&#…...