ansible第一天学习内容

最全Ansible学习总结 Ansible学习 一、ansible的概述 1.1 ansible简介 Ansible Ansible Ansible ansible ansible ansible Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具。 ansible用Python写成,类似于saltstack和Puppet,ansible有一个不同和优点是我们不需要在节点中安装任何客户端。 阅读详情

1.什么是ansible

1.1概念

​ ansible是一款类unix系统中通过python所开发的自由开源的自动化管理工具,能够自动部署软件以及软件配置。是一款无代理(客户端程序)配置语法使用yaml及jinja2模板语言。

1.2特点

1、部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作;
2、默认使用SSH协议对设备进行管理;
3、主从集中化管理;
4、配置简单、功能强大、扩展性强;
5、支持API及自定义模块,可通过Python轻松扩展;
6、通过Playbooks来定制强大的配置、状态管理
7、对云计算平台、大数据都有很好的支持;
8、支持非 root 用户管理操作, 支持 sudo

1.3Ansible系统架构

Ansible 是基于模块工作的, 本身没有批量部署的能力。 真正具有批量部署的是 Ansible 所运行的模块, Ansible只是提供一种框架。
Ansible 由以下各部分组成:

img

组成
• 核心引擎: 即 Ansible,执行工具;一次性或者临时执行的操作都是通过该命令进行。 
• 剧本(playbook): 定义Ansible任务的配置文件,可以将多个任务定义在一个剧本中,Ansible自动执行,剧本执行支持多个任务,可以由控制主机运行多个任务,同时对多台远程主机进行管理。
 主机清单(host inventory): 定义Ansible管理的主机策略,默认是在Ansible的hosts配置文件中定义被管节点
• 核心模块(core modules ): 这些都是Ansible自带的模块。 
• 自定义模块(custom modules): 如果核心模块不足以完成某种功能,可以添加自定义模块。 
• 插件(plugins): 完成模块功能的补充,借助于插件完成记录日志,邮件等功能。 
• 连接插件(connectior plugins) : Ansible 基于连接插件连接到各个主机上,负责和被管节点实现通信。 
Ansible作用对象
Ansible的作用对象,不仅是Linux和非Linux操作系统的主机,同样也可以作用于各类公/私有云、商业/非商业设备的网络设施

ansible执行过程大体过程如下图,其中暖色调的代表已经模块化。

img

使用者使用ansible或ansible-playbook(会额外读取playbook文件)时,在服务器终端输入ansible的ad-hoc命令集或playbook后,ansible会遵循预先编排的规则将playbooks逐条拆解为play,再将play组织成ansible可识别的任务(task)。随后调用任务涉及的所有模块(module)和插件(plugin),根据inventory中定义的主机列表通过ssh将任务集以临时文件或命令的形式传输到远程客户端执行并返回执行结果,如果临时文件执行完毕则自动删除.

2.ansible环境部署

2.1Linux搭建服务器的准备工作

  • 操作环境 : 创建完虚拟机,安装命令行界面的linux操作系统(centos8,rocky8,rhel8)

    三台虚拟机 (RHEL8)

  • 网络设置 :在NAT模式下,配置至少一个可上网的静态IP

  • 写好yum源(本地源,网络源)

  • 安装好相应的常用工具 :vim*,netstat==ss,bash-completion 主机重启后支持tab自动补齐

  • ​ net-tools-

  • 让你的系统时间可以自动根据时间服务器进行同步

  • 做快照

角色主机名ip地址组名
控制主机server.example.com192.168.10.100server
受控主机/被管节点node1.example.com192.168.10.111node1
受控主机/被管节点node2.example.com192.168.10.222node2
两台图形化主机server     node2
1.需要保准三台主机能够互相通信。设置同一种网络模式(nat)
2.配置静态ip地址
[root@localhost ~]# nmcli connection modify ens160  ipv4.addresses  192.168.10.100/24
[root@localhost ~]# nmcli connection modify ens160  ipv4.gateway 192.168.10.2 ipv4.dns 192.168.10.2 ipv4.method  manual connection.autoconnect yes
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160 
[root@localhost ~]# nmcli connection up ens160 
server--192.168.10.100            node2---192.168.10.222
3.更改主机名 
hostnamectl set-hostname server.exmaple.com
hostnamectl set-hostname node2.example.com
4.更改时间
timedatectl set-timezone Asia/Shanghai 

命令行主机的配置

node1
1.需要保准三台主机能够互相通信。设置同一种网络模式(nat)
2.配置静态ip地址
[root@localhost ~]# nmcli connection modify ens160  ipv4.addresses  192.168.10.111/24
[root@localhost ~]# nmcli connection modify ens160  ipv4.gateway 192.168.10.2 ipv4.dns 192.168.10.2 ipv4.method  manual connection.autoconnect yes
[root@localhost ~]# nmcli connection up ens160 
node---192.168.10.111
3.更改主机名 
hostnamectl set-hostname node1.example.com
4.更改时间
timedatectl set-timezone Asia/Shanghai 
5.安装常用软件工具
配置yum源安装常用软件工具
#yum install vim-enhanced  net-tools bash-completion   -y
#reboot

2.2安装ansible

#cd /etc/yum.repos.d
删除多余的(yum配置)源文件
[root@server yum.repos.d]# ll
-rw-r–r–. 1 root root 358 Dec 30 10:25 redhat.repo

2.2.1配置centos8基础源
(1)vim /etc/yum.repos.d/base.repo
[AppStream]
name=AppStream
baseurl=https://mirrors.aliyun.com/centos/8-stream/AppStream/x86_64/os/
gpgcheck=0
[BaseOS]
name=AppStream
baseurl=https://mirrors.aliyun.com/centos/8-stream/BaseOS/x86_64/os/
gpgcheck=0

2.2.2配置epel
(2)#yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
[root@server yum.repos.d]# ll
total 28
-rw-r–r–. 1 root root 213 Dec 30 15:36 base.repo
-rw-r–r–. 1 root root 1692 Dec 30 15:32 epel-modular.repo
-rw-r–r–. 1 root root 1326 Dec 30 15:32 epel.repo
-rw-r–r–. 1 root root 1791 Dec 30 15:32 epel-testing-modular.repo
-rw-r–r–. 1 root root 1425 Dec 30 15:32 epel-testing.repo
-rw-r–r–. 1 root root 358 Dec 30 10:25 redhat.repo
(3)#sed -i ‘s|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|’
/etc/yum.repos.d/epel*
(4)#sed -i ‘s|^metalink|#metalink|’ /etc/yum.repos.d/epel*
(5)#yum install ansible -y
(6)#ansible --version

案例一:
控制主机和受控主机通过root用户通过免密验证方式远程控住受控主机实施对应任务
(1)控住主机--server通过主机名匹配对应连接的受控主机
[root@server ~]#vim  /etc/hosts     
192.168.10.111 node1 node1.exmaple.com
192.168.10.222 node2 node2.exmaple.com
(2)制作秘钥
[root@server ~]# ssh-keygen -t rsa -P '' -q -f ~/.ssh/id_rsa
(3)发送密钥
[root@server ~]# ssh-copy-id  -i node1
[root@server ~]# ssh-copy-id  -i node2
(4)验证免密
[root@server ~]# ssh node1
[root@server ~]# ssh node1 hostname
node1.example.com
[root@server ~]# ssh node2 hostname
node2.example.com
案例二:控制主机连接受控主机通过普通用户以免密验证远程控住受控主机实施特权指定操作。
(1)控住端和受控端都需要有对应的普通身份
(2)[redhat@server ~]$ ssh-keygen -t rsa -P '' -q -f ~/.ssh/id_rsa
[redhat@server ~]$ ll .ssh/
total 12
-rw-------. 1 redhat redhat 2610 Dec 30 16:57 id_rsa
-rw-r--r--. 1 redhat redhat  579 Dec 30 16:57 id_rsa.pub
-rw-r--r--. 1 redhat redhat  182 Dec 30 16:55 known_hosts
(3)[redhat@server ~]$ ssh-copy-id  -i redhat@node1
[redhat@server ~]$ ssh-copy-id  -i node2
(4)测试免密配置
[redhat@server ~]$ ssh node1 hostname
node1.example.com
(5)[redhat@server ~]$ ssh node1 sudo useradd user1    ---控制端主机sudo提权(----报错)
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper

所以在受控主机通过/etc/sudoers授权
第一种[root@node1 ~]# cat /etc/sudoers | grep -C 1 redhat   查看是否授权
root	ALL=(ALL) 	ALL
redhat  ALL=(ALL)      NOPASSWD: ALL

第二种[root@node2 ~]# cat  /etc/sudoers | grep wheel
## Allows people in group wheel to run all commands
%wheel	ALL=(ALL)	NOPASSWD: ALL
[root@node2 ~]# gpasswd -a redhat wheel
Adding user redhat to group wheel

[redhat@server ~]$ ssh node1 sudo useradd user1    --sudo授权成功
[redhat@server ~]$ ssh node1 id user1
uid=1001(user1) gid=1001(user1) groups=1001(user1)

3.注意

1.需要保准三台主机能够互相通信。设置同一种网络模式(nat)
2.配置静态ip地址
[root@localhost ~]# nmcli connection modify ens160  ipv4.addresses  192.168.10.100/24
[root@localhost ~]# nmcli connection modify ens160  ipv4.gateway 192.168.10.2 ipv4.dns 192.168.10.2 ipv4.method  manual connection.autoconnect yes
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160 
[root@localhost ~]# nmcli connection up ens160 
server--192.168.10.100            node2---192.168.10.222
3.更改主机名 
hostnamectl set-hostname server.exmaple.com
hostnamectl set-hostname node2.example.com
4.更改时间
timedatectl set-timezone Asia/Shanghai 命令行
node1
1.需要保准三台主机能够互相通信。设置同一种网络模式(nat)
2.配置静态ip地址
[root@localhost ~]# nmcli connection modify ens160  ipv4.addresses  192.168.10.111/24
[root@localhost ~]# nmcli connection modify ens160  ipv4.gateway 192.168.10.2 ipv4.dns 192.168.10.2 ipv4.method  manual connection.autoconnect yes
[root@localhost ~]# nmcli connection up ens160 
node---192.168.10.111
3.更改主机名 
hostnamectl set-hostname node1.example.com
4.更改时间
timedatectl set-timezone Asia/Shanghai 
5.安装常用软件工具
配置yum源安装常用软件工具
#yum install vim-enhanced  net-tools bash-completion   -y
#reboot
配置centos基础源

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

或者

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

配置epel

yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm

sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|'

/etc/yum.repos.d/epel*
sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
2.2.1配置centos8基础源
vim  /etc/yum.repoes.d/base.repo
[AppStream]
name=AppStream
baseurl=https://mirrors.aliyun.com/centos/8-stream/AppStream/x86_64/os/
gpgcheck=0

[BaseOS]
name=AppStream
baseurl=https://mirrors.aliyun.com/centos/8-stream/BaseOS/x86_64/os/
gpgcheck=0

2.2.2配置epel

yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|'
/etc/yum.repos.d/epel*
sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
ansible 学习之路 Ansible 学习Ansible 学习。 阅读详情

相关推荐

Linux中断子系统分析之(四):驱动程序申请中断

中断子系统中有一个重要的设计机制,那就是Top-half和Bottom-half,将紧急的工作放置在Top-half中来处理,而将耗时的工作放置在Bottom-half中来处理。 如果中断不分上下半部处理,那么意味着只有等上一个中断完成处理后才会打开中断,下一个中断才能得到响应。当某个中断处理处理时间较长时,很有可能就会造成其他中断丢失而无法响应,影响系统性能。 中断分成上下半部处理可以提高中断的响应能力,在上半部处理完成后便将中断打开,这样就可以响应其他中断了,等到中断退出的时候再进行下半部的处理。为了进

m0_46525308的博客 1225

详解“%sudo ALL=(ALL:ALL) NOPASSWD:ALL”

Ubuntu系统的/etc/sudoers里面会默认有“%sudo ALL=(ALL:ALL)”这个字段,意思为sudo组下的所有用户都能使用sudo权限,前提需要执行用户本身的密码,那如果不想输入执行者的密码也获取sudo权限怎么办呢?那就是配置免密sudo。 第一种 sed -i '/%sudo/c %sudo ALL=(ALL:ALL) NOPASSWD:ALL' /etc/sudoers visudo -c #检查语法是否正确,一定要执行,否则出现问题很麻烦 各字段解释:...

weixin_39833509的博客 3254

如何制作微信小程序的在线购物商城应用

首先,你需要规划好商城的整体框架,确定好你的目标用户群体,思考他们的需求是什么。接下来,使用微信开发者工具创建一个新的小程序项目,输入你的AppID,选择好保存路径,点击“创建”,一个新的商城雏形就诞生了。你可以把这里当作自己的家,无论是工作之余的小憩,还是寻找灵感的驿站,我都希望你能在这里找到属于你的那份快乐和满足。数据是现代商业的灵魂,通过数据分析,你可以更准确地把握用户的行为模式,从而做出更明智的决策。

master_chenchen的博客 2427

Linux-常用命令

基本命令 查看文件 ls #列出当前目录文件和文件夹名称 -F #输出可以区分文件和文件夹 -a #输出包括隐藏文件 -R #递归输出当前文件夹里所有的文件和文件夹 -l #输出包括文件详细信息 *_script #使用*或?进行文件模糊匹配过滤输出 cat test_file #查看文本文件里的内容 -n #给显示结果加上行号 创建文件 touch test_file #在当前目录创建空文件,如果文件已存在,则仅更新修改时间 mkdir new_dir #创建文件夹 -p new_dir

codfishXY的博客 570

virtualbox虚拟机里面最顶部没有控制、设置和帮助等选项

无意中操作,导致virtualbox虚拟机里面最顶部没有控制,设置和帮助选项  virtualbox虚拟机窗口显示如下如: 如何设置,窗口显示如下图所示呢: virtualbox虚拟机窗口模式显示设置,切换可以通过如下图所示操作进行切换: PS:一定要是右边的Ctrl+C

WEL测试 8780

运算放大器多谐振荡器设计实战:从施密特触发器到波形生成

本文详细介绍了运算放大器在多谐振荡器设计中的实战应用,涵盖施密特触发器的迟滞比较原理、非稳态振荡器的自激机制以及单稳态和双稳态电路的设计技巧。通过具体案例和参数计算,帮助工程师掌握波形生成与信号处理的核心技术,提升电路设计效率与稳定性。

pz89012345的博客 217

Ceph集群配置遇见的困难

Ceph集群配置遇见的困难 说明管理节点和osd节点的关系 若配置成功,再管理节点上可用登录osd节点设置的用户,这时再管理节点下载,就相当于登录osd节点虚拟机下载文件,二者等效。 未更改主机的localhost导致后续创建ceph-deploy创建集群时主机名和师的不对应 解决方法:在终端输入hostname命令,重写hostname.( 注意修改.ssh/config里的 localhost也要对应) 未改变管理节点和每一个osd的IP为静态IP,导致集群集结点的IP每次变化,最后connect74

qq_51013517的博客 459

【2024保研经验帖】中科院信工所夏令营经验分享

中科院信工所夏令营经验分享,信工所夏令营据说只要报了就能进,这个是不是真的尚不清楚,不过qq群里有八九百个人,也属实可怕。招生老师说我们这届夏令营招200-300个左右,于是又开始惶惶不安。 夏令营时期都是线上进行,先是每个科室进行线上招生宣讲,然后报名第一志愿部门和第二志愿部门,不同部门的考核是不同的。有的部门只要求英语面试和综合面试,有的部门除了面试还需要机试,而有的部门除了这些还需要笔试。

m0_63002183的博客 4489

Linux Root账户下设置无密码用户切换

vim /etc/sudoers, user ALL=(root)NOPASSWD:ALL

^_^TaeYang-Jade^_^ 878

⑩电子产品拆解分析-家用无线遥控开关433Mhz

①免布线随意贴,装上就能使用解决单线开关烦恼;②遥控配对简单,无线通讯距离长,信号可穿墙;

a6662580的博客 4696

【WLAN】【调试】再谈如何使用Wireshark解密WiFi数据包——使用TK信息

- 本文介绍了一种wireshark使用TK信息解密空口报文的方式,该方式对是否有关联过程的报文没有要求。

一介草民,只为生活。 1188

Linux基本命令使用及语法解析

linux基本命令及语法 基本命令用思维导图的方式为各位看官奉上 用户与组的管理 1.用户管理 用户: 超级用户 普通用户 虚拟用户:不能登录系统,存在主要是方便系统管理,满足响应系统进程对文件属主的要求。 用户组: 主要组(主组):创建用户是默认创建。 附属组:用户加入的组。 用户配置文件:/etc/passwd root:x:0:0:root:/root:/bin/bash root:用户名 口令:密码站位符(不显示密码),“x” 用户标识号(UID):"0" 用户组标识号(GID):"0"

Matheus的博客 898

从零到一构建一个智能爬虫 Agent 完整教程

本文将打造一个具备自主决策、动态解析、反反爬、持久化能力的智能爬虫 Agent

数据知道的博客 4793

ansible学习第一天

主要介绍了ansible的前置基础知识和playbook初步了解

wzh200506091016的博客 1035

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

[Ansible] Ansible内容集

本文介绍了Ansible内容集合(Content Collections)的概念和管理方法。主要内容包括:Ansible内容集合的作用(模块化复用、标准化分发、简化依赖管理等);集合命名空间规范;集合获取途径(Ansible Galaxy、Git仓库等);集合管理命令(安装、列表、创建等);以及如何在Playbook中使用集合中的资源(模块、角色等)。文章还详细说明了集合的目录结构和创建流程,包括初始化、添加模块、打包发布等步骤,并提供了具体的命令行操作示例和配置文件模板。

qq_53232485的博客 854

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Ansible学习路径

学习 Ansible 可以分为三阶段,结合官方文档、社区资源与实践项目稳步推进。以下是详细的。

喝醉酒的小白 806

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

ansible-dev-tools:提升Ansible内容开发的最佳工具集

ansible-dev-tools:提升Ansible内容开发的最佳工具集 Ansible作为一款流行的IT自动化平台,一直以其简洁性、易用性受到广大开发者的喜爱。而今天,我们要推荐的这个开源项目——ansible-dev-tools(ADT),将为Ansible内容开发者提供一套强大、便捷的工具集,帮助你更高效地创建和测试Ansible内容。 项目介绍 ansible-dev-tools是一个P...

gitblog_00403的博客 1001

Ansible 内容集合入门:集合结构、模块 / 角色集成及调用方法详解

Ansible内容集(Content Collections)是模块化打包机制,用于组织相关模块、插件、角色等资源。

专注于云计算 1659

11.Ansible自动化之-内容集管理

Ansible内容集管理指南 本文介绍了Ansible内容集(Content Collections)的概念与管理方法。内容集是Ansible打包和分发相关工具的方式,包含模块、插件、角色等资源,具有复用性强、维护方便等优势。文章详细讲解了: 实验环境准备步骤 内容集的定义与组成 内容集的命名规则(命名空间) 获取途径(Galaxy仓库、Git等) 存储位置配置 使用ansible-galaxy collection命令进行安装、查看等操作 通过内容集管理,可以实现Ansible功能的模块化扩展和高效复用,

2202_75490033的博客 990

Ansible模块——文件内容修改

Ansible 的 lineinfile 和 blockinfile 模块用于文件内容的修改。lineinfile 用于单行修改,支持正则表达式,常用选项包括 regexp(匹配行)、line(插入或替换的内容)、insertafter 和 insertbefore(插入位置)、backup(创建备份)等。blockinfile 用于多行修改,通过标记管理文本块,常用选项包括 block(插入的文本块)、marker(标记格式)、insertafter 和 insertbefore(插入位置)、append

https://ophome.blog.youkuaiyun.com,在IT行业有多年的工作经验,尤其是在Python、Linux、负载均衡、Nginx和服务器运维等领域。 1370

实例学习Ansible系列:配置文件ansible.cfg的设定与使用

知识点:Ansible中通过多层次的ansible.cfg的设定,利用不同目录结构下的配置文件的作用域,还可以结合ANSIBLE_CONFIG环境变量进行自行指定,较为方便和灵活。

知行合一 止于至善 8934

Ansible的学习笔记与总结

Ansible是一种自动化运维工具,基于Python开发的,用于配置管理、应用部署、任务自动化和持续交付,采用YAML语言编写脚本(playbook),简单易用,广泛应用于DevOps和IT自动化领域。playbook使用yaml语法编写的自动化脚本,是由一个或多个"play"组成的列表.可以简单理解为批量部署手册的自动执行版本.

qq_75229677的博客 1086

Ansible 学习不迷茫∶如何将Ansible学至精通

曾经有个Linux运维,后来他累了,在真正开始聊Ansible之前,我想先给各位讲个故事。小安很早以前就是一名Linux运维工程师,他的基础很扎实,常用工具、公司涉及的服务以及公司的运维流程都比较熟悉。比如他能熟练地使用Shel脚本去做一些日常的运维管理,Shll脚本不方便的时候也能写写PHP和Per脚本来给自己的工作添一点色彩。

2401_86399909的博客 970

Ansible简介

不是 2.X 版本的 Python.我们不使用 "/usr/bin/env" 机制,因为这要求远程用户的路径设置正确,且要求 "python" 可执行程序名不可为 python以外的名字(实际有可能名为python26). 与 ansible_python_interpreter 的工作方式相同,可设定如 ruby 或 perl 的路径....-M MODULE_PATH, --module-path=MODULE_PATH 要执行的模块的路径,默认为/usr/share/ansible/

jingyu飞鸟 5269

Ansible常用模块

bash无论在命令行上执行,还是bash脚本中,都需要调用cd、ls、copy、yum等命令;模块就是Ansible的“命令”,模块是ansible命令行和脚本中都需要调用的。常用的Ansible模块有yum、copy、template等。

weixin_53388991的博客 6432

ansible-creator:快速构建您的Ansible内容

ansible-creator:快速构建您的Ansible内容 在现代的自动化运维领域,Ansible 无疑是一个耀眼的明星。它以其简洁的语法和易用性,赢得了无数系统管理员和运维工程师的青睐。然而,即使是最好的工具,在项目初始化和资源管理时也可能显得繁琐。这时,ansible-creator 就像一束及时的阳光,照亮了Ansible用户的道路。 项目介绍 ansible-creator 是一个命令...

gitblog_00997的博客 970
上一篇: 软件工程 第一章 概述与开发模型
下一篇: Ansible第二天学习笔记
Dream_of_falling
博客等级 码龄5年 82粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值