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

Ansible自动化安装部署及使用

目录

前言

一、环境概况

修改主机名(可选项)

二、安装部署

1.安装epel扩展源

2.安装Ansible

3.修改Ansible的hosts文件

4.生成密钥

三、Ansible模块使用介绍

Command模块

Shell模块

User模块

 Copy模块

File模块

Hostname模块

Yum模块

Service和System模块

Setup 模块


前言

Ansible 是一种开源的自动化工具,用于配置管理、应用程序部署和任务自动化。它采用简单易懂的 YAML 语法和基于 SSH 协议的远程执行,能够实现快速、可靠的自动化配置和部署。

 Ansible 的一些主要特点和功能:

  1. 简单易用: Ansible 使用 YAML 格式的声明性语言,使得编写和阅读 Playbooks(Ansible 的配置文件)变得非常直观和易于理解。无需编写复杂的脚本或程序代码,就可以完成大部分配置和部署任务。

  2. 无代理架构: Ansible 采用基于 SSH 的无代理架构,不需要在目标主机上安装任何额外的代理或客户端软件。这简化了部署和管理过程,并提供了更强的安全性。

  3. 模块化: Ansible 提供了丰富的模块库,用于执行各种操作,如包管理、文件操作、服务管理、用户管理等。模块化的设计使得用户可以轻松地扩展和定制 Ansible,以满足特定的自动化需求。

  4. 剧本化: Ansible 使用 Playbooks 来描述配置和部署任务。Playbooks 是用 YAML 编写的文本文件,可以定义一系列任务和主机组,以及执行这些任务的顺序和条件。这使得用户可以将复杂的配置和部署过程分解为可管理的、可重用的剧本。

  5. 多平台支持: Ansible 可以在多种操作系统和云平台上运行,包括 Linux、Windows、macOS、VMware、AWS、Azure、Google Cloud 等。这使得 Ansible 成为一个通用的自动化工具,可用于管理多样化的 IT 环境。

  6. 可扩展性: Ansible 可以集成到现有的工具链和流程中,并与其他自动化和编排工具(如 Jenkins、Kubernetes)进行集成。此外,Ansible 还具有丰富的插件和扩展机制,可以根据需要进行功能定制和扩展。

一、环境概况

192.168.159.128   ------------> Ansible服务端(管理端)    

192.168.159.129   ------------> 客户端(受控端)

修改主机名(可选项)

修改Ansible服务端的主机名,客户端不修改

 hostnamectl set-hostname ansible.serverhostname ansible.serverreboot后永久生效

二、安装部署

1.安装epel扩展源

yum install -y epel-release	

2.安装Ansible

 yum install -y ansible

3.修改Ansible的hosts文件

cd /etc/ansible/
tree
.
├── ansible.cfg			#ansible的配置文件,默认即可
├── hosts				#ansible的主机清单,用于存储需要管理的远程主机的相关信息,需要编辑
└── roles/				#公共角色目录,默认即可


vim hosts#webservses行取消注释,添加被控端IP
[webservers]
## alpha.example.org
## beta.example.org
192.168.159.129
## 192.168.1.110

4.生成密钥

Ansible 的工作原理是通过 SSH 连接到远程主机,在目标主机上执行预定义的任务或命令,所以需要配置免密 

ssh-keygenssh-copy-id root@192.168.159.129

三、Ansible模块使用介绍

现在开始ansible就已经可以开始使用了 

  • 查看Ansible版本
[root@ansible ansible]# ansible --version
ansible 2.9.27config file = /etc/ansible/ansible.cfgconfigured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']ansible python module location = /usr/lib/python2.7/site-packages/ansibleexecutable location = /usr/bin/ansiblepython version = 2.7.5 (default, Jun 20 2023, 11:36:40) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
[root@ansible ansible]#
  • 查看pingtelnet 模块的简要描述和摘要
ansible-doc -s ping
ansible-doc -s telnet

  • 用于查看有关 telnet 模块的文档,类似于man手册
ansible-doc telnet

Command模块

格式

ansible <hosts> -m command -a "<command>"

ansible webservers -m command -a "free -h"
ansible 192.168.159.129 -m command -a "free -h"
ansible all -m command -a "free -h"
ansible webservers -a "uname -a"

<hosts>可以使用以上三种方式指定

  • webservers:hosts配置文件中的【webservers】组执行某些命令
  • 实际IP:指定IP运行某些命令
  • all:代表所有hosts主机,包含hosts配置文件中的【dbservers】组

Shell模块

格式

ansible <hosts> -m shell -a "<command>"

ansible all -m shell -a "for i in {1..5}; do touch \$i.txt;done && ls -la *.txt"

1.上述示例当中的touch命令部分为什么在$符号前面要加上转义符?

ansible webservers -m shell -a "df -hT|grep '/$' | awk '{print $6}'"ansible webservers -m shell -a "df -hT|grep '/$' | awk '{print \$6}'"

2.上述示例当中的awk命令部分为什么在$符号前面要加上转义符?

解释:为了确保 $6 不被解释为命令行变量,而是作为字符串的一部分传递给远程主机执行,需要使用转义符 \ 进行转义。\$6 的目的是将 $6 这个字符串传递给远程主机而不被本地 Shell 解释为变量

所以正确写法是这样的:

ansible all -m shell -a "for i in {129,130}; do ping -c 1 192.168.159.\$i; done"

!!!错误写法示范:

User模块

格式

ansible <hosts> -m user -a "<options>"

<hosts>:           指定要管理用户的目标主机,可以是单个主机或者主机组的名称。
-m user:           通过 -m 参数指定要使用的模块为 user。
-a "<options>":    使用 -a 参数传递模块的选项。选项可以是创建用户、修改用户属性或删除用户等操作。user 模块的常用选项包括:name:            指定用户的名称。password:        指定用户的密码(已加密)。state:           指定用户的状态,present表示创建,absent表示删除。groups:          指定用户所属的组。shell:           指定用户的登录 Shell。system=yes|no:   是否为系统账号。uid:             用户uidmove_home=yse|no:如果设置的家目录已经存在,是否将已经存在的家目录进行移动password:        用户的密码,建议使用加密后的字符串comment:         用户的注释信息remove=yes|no:   当state=absent时,是否删除用户的家目录comment:         指定用户的注释信息。
ansible webservers -m user -a 'name="wang" state=present password=123456 groups=root shell="/sbin/nologin"'
ansible webservers -m command -a 'grep "wang" /etc/shadow'

 Copy模块

格式:

ansible <hosts> -m copy -a "<options>"

<hosts>:               指定要复制文件的目标主机,可以是单个主机或者主机组的名称。
-m copy:               通过 -m 参数指定要使用的模块为 copy。
-a "<options>":        使用 -a 参数传递模块的选项。选项包括源文件路径、目标文件路径、权限等。copy 模块的常用选项包括:src:                指定源文件或目录的路径。可以是绝对路径或相对路径。dest:               指定目标文件或目录的路径。可以是绝对路径或相对路径。mode:               指定目标文件的权限模式,例如 0644。owner:              指定目标文件的所有者。group:              指定目标文件的所属组。backup:             指定是否创建备份文件。force:              指定是否强制复制,即使目标文件已经存在。
ansible webservers -m copy -a 'src="/root/shdir/xin.sh" dest="/root/xin_bak.sh" owner=root group=root mode=777'
ansible webservers -m shell -a "bash /root/xin_bak.sh"

File模块

格式:

ansible <hosts> -m file -a "<options>"

<hosts>:                 指定要操作文件的目标主机,可以是单个主机或主机组的名称。
-m file:                 通过 -m 参数指定要使用的模块为 file。
-a "<options>": 使用 -a 参数传递模块的选项。选项包括要操作的文件路径、属性变更等。file:                   模块的常用选项包括:path:                 指定要操作的文件或目录的路径。可以是绝对路径或相对路径。mode:                 指定文件的权限模式,例如 0644。owner:                指定文件的所有者。group:                指定文件的所属组。state:                指定文件的状态,可以是 file(文件存在)、directory(目录存在)或 absent(文件不存在)。recurse:              指定是否递归地应用更改到目录及其子目录。follow:               指定是否跟随符号链接进行更改。
ansible webservers -m file -a 'path="/root/xin_bak.sh" owner=root group=root mode=755 state=file'
ansible webservers -m command -a "ls -la /root/xin_bak.sh"

Hostname模块

格式:

ansible <hosts> -m copy -a "<options>"

ansible webservers -m hostname -a "name=test"
ansible webservers -m command -a "hostname"       

Yum模块

格式:

ansible <hosts> -m yum -a "name=<package_name> state=<state>"

<hosts>:                     指定要操作文件的目标主机,可以是单个主机或主机组的名称。
-m file:                     通过 -m 参数指定要使用的模块为 file。
-a "<options>":              使用 -a 参数传递模块的选项。选项包括要操作的文件路径、属性变更等。yum:                        模块的常用选项包括:name:                     要安装的包的名字state:                    present(安装)、absent(卸载)或 latest(更新为最新版本)。update_cache:              是否刷新 YUM 缓存。默认情况下为 yes,表示会自动更新缓存。设置为 no 则不刷新缓存。  disable_gpg_check:         是否禁用 GPG 检查。默认为 no,表示会进行 GPG 检查。设置为 yes 则禁用 GPG 检查。enablerepo 和 disablerepo: 控制仓库的启用和禁用。可以指定要启用或禁用的仓库名称。多个仓库以逗 号分隔。installroot:               指定要安装软件包的根目录路径。conf_file:                 指定要使用的 YUM 配置文件路径。vars:                      用于传递额外的变量给 Ansible。
ansible webservers -m yum -a 'name=dnsmasq state=present'
ansible webservers -m shell -a "systemctl restart  dnsmasq && systemctl enable dnsmasq && systemctl status dnsmasq"

Service和System模块

格式:

ansible <hosts> -m service -a "name=<service name> enabled=<yes/no> state=<state>"

<hosts>:                       指定要操作文件的目标主机,可以是单个主机或主机组的名称。
-m file:                       通过 -m 参数指定要使用的模块为 file。
-a "<options>":                使用 -a 参数传递模块的选项。选项包括要操作的文件路径、属性变更等。service:                      模块的常用选项包括:name:                      <服务名称>state:                     <服务状态>,started|stopped|restartedenabled:                   <是否自启动>,yes|nopattern:                   <进程匹配模式>.(点):               匹配任意单个字符。*:                     匹配前一个字符的零次或多次重复。+:                     匹配前一个字符的一次或多次重复。?:                     匹配前一个字符的零次或一次重复。^:                     匹配字符串的开始位置。$:                     匹配字符串的结束位置。[]:                    用于定义字符集,匹配其中的任意一个字符。():                    创建捕获组,用于分组匹配。sleep:                     <等待时间>timeout:                   <超时时间>runlevel:                  <运行级别>args:                      <额外参数>system:                       模块命令格式:name:                      <项名称>state:                     <系统状态>value:                     <要设置的值>,started|stopped|restartedenabled:                   <是否自动加载>,yes|noregenerate:                <是否重新生成>system_file:               <系统文件路径>runtime_file:              <运行时文件路径>config_file:               <配置文件路径>

Setup 模块

格式:

ansible <hosts> -m setup -a "name=<service name> enabled=<yes/no> state=<state>"

<hosts>:                       指定要操作文件的目标主机,可以是单个主机或主机组的名称。
-m file:                       通过 -m 参数指定要使用的模块为 file。
-a "<options>":                使用 -a 参数传递模块的选项。选项包括要操作的文件路径、属性变更等。setup:                        模块的常用选项包括:gather_subset:              指定要收集的子集信息的列表。默认情况下,会收集所有可用的信息。可以使用 hardware, network, virtual, ohai, facter, ohai_timed, puppet, vagrant 或 all 来指定子集。fact_path:                  用于指定自定义信息(facts)路径的列表。Ansible 会搜索这些路径以查找自定义事实。filter:                     过滤已收集的信息(facts),仅返回匹配指定模式的结果。gather_timeout:             设置收集事实的超时时间,单位为秒。gather_timeout_multiplier:  用于调整超时时间的倍数,默认为 1。gather_timeout_retry:       在超时后重试的次数,默认为 1。cache_valid_time:           设置缓存的有效时间,单位为秒。fact_caching:               启用或禁用缓存功能,可以是 memory、jsonfile、json、yaml 或 text。

filter常用的过滤参数 

ansible_all_ipv4_addresses                  ipv4的所有地址
ansible_all_ipv6_addresses                  ipv6的所有地址
ansible_date_time                           获取到控制节点时间
ansible_default_ipv4                        默认的ipv4地址
ansible_distribution                        系统
ansible_distribution_major_version          系统的大版本
ansible_distribution_version                系统的版本号
ansible_domain                              系统所在的域
ansible_env                                 系统的环境变量
ansible_hostname                            系统的主机名
ansible_fqdn                                系统的全名
ansible_machine                             系统的架构
ansible_memory_mb                           系统的内存信息
ansible_os_family                           系统的家族
ansible_pkg_mgr                             系统的包管理工具
ansible_processor_cores                     系统的cpu的核数(每颗)
ansible_processor_count                     系统cpu的颗数
ansible_processor_vcpus                     系统cpu的总个数=cpu的颗数*CPU的核数
ansible_python                              系统上的python

 

ansible webservers -m setup -a "gather_subset=hardware"

ansible webservers -m setup -a "filter=*device_link*"

相关文章:

Ansible自动化安装部署及使用

目录 前言 一、环境概况 修改主机名&#xff08;可选项&#xff09; 二、安装部署 1.安装epel扩展源 2.安装Ansible 3.修改Ansible的hosts文件 4.生成密钥 三、Ansible模块使用介绍 Command模块 Shell模块 User模块 Copy模块 File模块 Hostname模块 Yum模块 Ser…...

idea中配置spring boot单项目多端口启动

参照文章 https://zhuanlan.zhihu.com/p/610767685 项目配置如下 下面为 idea 2023&#xff0c;不同版本的设置有区别&#xff0c;但是没那么大&#xff0c;idea 2023默认使用新布局&#xff0c;切换为经典布局即可。 在项目根目录的.idea/workspace.xml文件里添加如下配置 &l…...

MP4视频文件损坏怎么修复?

3-2 作为摄影师&#xff0c;或者在平时有拍摄工作的事情的&#xff0c;比如搞婚庆、搞航拍什么的&#xff0c;有一定的概率会遇到损坏的视频文件&#xff0c;比如相机突然断电、无人机炸机等&#xff0c;有可能会导致保存的MP4文件损坏。 这种文件使用播放器播放的话&#xf…...

使用electron ipcRenderer接收通信消息多次触发

使用electron ipcRenderer接收通信消息多次触发 在使用electron ipcRenderer.on接收ipcRenderer.send的返回值时&#xff0c;ipcRenderer.send发送一次信息&#xff0c; ipcRenderer.on会打印多个日志&#xff0c; renderer.once(get-file-path, (event: any, paths: any) &g…...

Spring事务最佳应用指南(包含:事务传播类型、事务失效场景、使用建议、事务源码分析)

前言 本文主要介绍的是在Spring框架中有关事务的应用方式&#xff0c;以及一些生产中常见的与事务相关的问题、使用建议等。同时&#xff0c;为了让读者能够更容易理解&#xff0c;本文在讲解过程中也会通过源码以及案例等方式进行辅助说明&#xff0c;通过阅读本文不但能够解…...

Go语言的Http包及冒泡排序解读

目录标题 Http一.Get二、Post三、Http服务器 BubbleSort冒泡排序 Http 一.Get package mainimport ("fmt""io/ioutil""net/http")func main() {response, err : http.Get("http://www.baidu.com")if err ! nil {fmt.Println("Ht…...

vue二维码生成插件qrcodejs2-fix、html生成图片插件html2canvas、自定义打印内容插件print-js的使用及问题总结

一、二维码生成插件qrcodejs2-fix 1.安装命令 npm i qrcodejs2-fix --save2.页面使用 import { nextTick } from vue; import QRCode from qrcodejs2-fix; nextTick(() > {let codeView document.querySelector("#codeView");codeView.innerHTML ""…...

[SSD综述1.8] 固态存储市场发展分析与预测_固态存储技术发展方向(2022to2023)

依公知及经验整理,原创保护,禁止转载。 专栏 《SSD入门到精通系列》 <<<< 返回总目录 <<<< ​​​​前言 自2020年疫情爆发以来,远程办公、网上教育、流媒体等等应用引爆对消费电子及云服务的需求增长,全球数字化转型加速,带来了两年的闪存风光时…...

【Linux】多路IO复用技术③——epoll详解如何使用epoll模型实现简易的一对多服务器(附图解与代码实现)

在正式阅读本篇博客之前&#xff0c;建议大家先按顺序把下面这两篇博客看一下&#xff0c;否则直接来看这篇博客的话估计很难搞懂 多路IO复用技术①——select详解&如何使用select模型在本地主机实现简易的一对多服务器http://t.csdnimg.cn/BiBib多路IO复用技术②——poll…...

【unity实战】实现类似英雄联盟的buff系统(附项目源码)

文章目录 先来看看最终效果前言开始BUFF系统加几个BUFF测试1. 逐层消失&#xff0c;升级不重置剩余时间的BUFF2. 一次性全部消失&#xff0c;升级重置剩余时间的BUFF3. 永久BUFF&#xff0c;类似被动BUFF4. 负面BUFF&#xff0c;根据当前BUFF等级计算每秒收到伤害值&#xff0c…...

Draft-P802.11be-D3.2协议学习__$9-Frame-Format__$9.3.1.22-Trigger-frame-format

Draft-P802.11be-D3.2协议学习__$9-Frame-Format__$9.3.1.22-Trigger-frame-format 9.3.1.22.1 Genreal9.3.1.22.2 Common Info field9.3.1.22.3 Special User Info field9.3.1.22.4 HE variant User Info field9.3.1.22.5 EHT variant User Info field9.3.1.22.6 Basic Trigge…...

vSLAM中IMU预积分的作用--以惯性导航的角度分析

作为一个学过一点惯导的工程师&#xff0c;在初次接触视觉slam方向时&#xff0c;最感兴趣的就是IMU预积分了。但为什么要用这个预积分&#xff0c;在看了很多材料和书后&#xff0c;还是感觉模模糊糊&#xff0c;云里雾里。 在接触了vSLAM的更多内容后&#xff0c;站在历史研究…...

c++ libevent demo

Server::Server(const char *ip, int port) {//创建事件集合base event_base_new();struct sockaddr_in server_addr;memset(&server_addr, 0, sizeof(server_addr));server_addr.sin_family AF_INET;server_addr.sin_port htons(port);server_addr.sin_addr.s_addr in…...

51单片机锅炉监控系统仿真设计( proteus仿真+程序+原理图+报告+讲解视频)

51单片机锅炉监控系统仿真设计( proteus仿真程序原理图报告讲解视频&#xff09; 1.主要功能&#xff1a;讲解视频2.仿真3. 程序代码4. 原理图5. 设计报告6. 设计资料内容清单&&下载链接资料下载链接&#xff08;可点击&#xff09;&#xff1a; 51单片机锅炉监控系统仿…...

zip文件解压缩命令全

zip文件解压缩命令全 入门Zip 用法选项示例语法形式和选项基本语法压缩目录将文件添加到现有压缩文件解压缩文件将 zip 文件解压缩到指定目录列出 zip 文件中的内容将 zip 文件加密将 zip 文件解密将 zip 文件中的文件转成 UTF-8 编码Zip 压缩示例创建新的 zip 压缩文件将文件添…...

章鱼网络进展月报 | 2023.10.1-10.31

章鱼网络大事摘要 1、Louis 成功竞选 NDC 的 HoM 议席&#xff0c;将会尽最大努力推动 NEAR 变革。2、章鱼网络受邀参加在土耳其主办的 Cosmoverse2023&#xff0c;分享 Adaptive IBC 的技术架构。3、2023年10月8日章鱼日&#xff0c;是章鱼网络主网上线2周年的纪念日。 …...

数据结构 | 单链表专题【详解】

数据结构 | 单链表专题【详解】 文章目录 数据结构 | 单链表专题【详解】链表的概念及结构单链表的实现头文件打印尾插头插尾删头删查找在指定位置之前插入数据在指定位置之后插入数据删除pos节点删除pos之后的节点销毁链表 顺序表遗留下来的问题 中间/头部的插⼊删除&#xff…...

前端基础之BOM和DOM

目录 一、前戏 window对象 window的子对象 navigator对象&#xff08;了解即可&#xff09; screen对象&#xff08;了解即可&#xff09; history对象&#xff08;了解即可&#xff09; location对象 弹出框 计时相关 二、DOM HTML DOM 树 查找标签 直接查找 间…...

第23期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练 Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大型语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以…...

VSCode实用远程主机功能

作为嵌入式开发者&#xff0c;经常在各种系统平台或者开发工具之间切换&#xff0c;比如你的代码在Linux虚拟机上&#xff0c;如果不习惯在Linux下用IDE&#xff0c;那么我尝试将Linux的目录通过samba共享出来&#xff0c;在windows下用网络映射盘的方式映射出来&#xff0c;VS…...

HTML 语义化

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

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...

Vue ③-生命周期 || 脚手架

生命周期 思考&#xff1a;什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09; 什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a; 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...