电动牙刷如何使用用 OpenStack CLI

中国领先的IT技术网站
51CTO旗下网站
OpenStack命令行工具与API
从这一刻起本指南中,我们假设你已经有一个OpenStack环境运行起来了。本文将帮助建立你的工作环境并使用它来带领你漫步云端。
作者:佚名来源:| 14:29
从这一刻起本指南中,我们假设你已经有一个OpenStack环境运行起来了。本章节将帮助建立你的工作环境并使用它来带领你漫步云端。
命令行工具
我们推荐Openstack命令行工具和Openstack的Dashboard两者结合使用。一些用户由于使用过其他云技术背景的,可能会使用EC2兼容的API,相对于我们需要使用到的Openstack原生的API,这些EC2兼容的API使用了不同命名习惯。
我们强烈建议你从Python Package Index(PyPI)()安装命令行客户端,而不是从Ubuntu或者Fedora的软件包。客户端开发的很快,所以有可能在你安装的时候,操作系统自带发行的软件包已经过时。&pip&可以从大多数的linux发行版里通过&python-pip&这个软件包得到,这个工具是用来管理PyPi的安装包。每个Openstack项目有自己的客户端,所以根据你使用的服务选择某些或者所有以下的软件包:
python-novaclient(nova CLI)
python-glanceclient(glance CLI)
python-keystoneclient(keystone CLI)
python-cinderclient(cinder CLI)
python-swiftclient(swift CLI)
python-quantumclient(quantum CLI)
使用root从PyPi安装(升级):
#&pip&install&[&upgrade]&&
#&pip&uninstall&&
如果你需要更加新的客户端版本,可以用pip加-e参数直接从git库安b。你必须为需要安装的Python egg指定名称。例如:
#&pip&install&-e&git+/openstack/python-novaclient.git#egg=python-novaclient&
如果你需要在你的云上支持EC2 API的话,你还需要安装&euca2ools&软件包或者一些其他的EC2 API的工具,这样你可以和你的用户有相同的视图。如何使用EC2 API工具超出了这本手册的范围,但是我们会讨论如何得到使用EC2的认证。
管理命令行工具
以下是几种 *-manage命令行工具:
nova-manage&glance-manage&keystone-manage&cinder-manage&
与上文提到的客户端工具不同,*-manage工具必须在由root在控制节点上运行,因为这些命令需要有访问配置文件的权限,例如/etc/nova.conf,并且需要直接查询数据库而不是通过Openstack的API接口。
-manage工具存在是一个遗留问题。openstack项目最终的目标是把这些遗留的-manage工具移植到正规的客户端工具中去。到目前为止,你仍旧需要通过ssh登录到控制节点上运行*-manage工具进行维护管理操作。
如果你要使用命令行工具对你的Openstack云平台进行操作,你必须有合适的证书。目前最方便的得到认证证书的方式是使用horizon dashboard。在顶部的导航栏,点击Setting链接,进入用户配置页面,在页面里你可以为dashboard视图设置语言和时区。更重要的是,这个操作改变了左列的导航栏,里面包含了Openstack API和EC2 Credentials链接,这两个链接将会得到可以在你的shell环境中source的文件,文件包含了命令行工具所需要的servide endpoints地址和你的认证信息。
点击Openstack API链接。顶部的部分列出了你的Service Endpoints的URL地址,底部是Download Openstack RC File。为了以管理员的身份查看云平台,你可以从下拉菜单中选择admin。选择你需要的project项目,然后点击Download RC。于是会得到一个名为openrc.sh的文件,内容类似如下:
#!/bin/bash
# With the addition of Keystone, to use an openstack cloud you should # authenticate against keystone, which returns a Token and Service # Catalog. The catalog contains the endpoint for all services the # user/tenant has access to - including nova, glance, keystone, swift. # # NOTE: Using the 2.0 auth api does not mean that compute api is 2.0. # We use the 1.1 compute api
export OS_AUTH_URL=http://203.0.113.10:
# With the addition of Keystone we have standardized on the term tenant # as the entity that owns the resources.
export OS_TENANT_ID=98333aba48e756fa8f629c83a818ad57 export OS_TENANT_NAME=&test-project&
# In addition to the owning entity (tenant), openstack stores the entity # performing the action as the user.
export OS_USERNAME=test-user
# With Keystone you pass the keystone password.
echo &Please enter your OpenStack Password: & read -s OS_PASSWORD_INPUT export OS_PASSWORD=$OS_PASSWORD_INPUT
注意这个操作不会以文本保存你的密码,这样做是好事情。但是当你想用这个文件source或者运行脚本,它会提示你输入你的密码,并且保存在环境变量OS_PASSWORD中。记住这个过程需要手动交互。如果你想要一个不需要交互的操作,那么把值直接保存在脚本中。但是这样做你需要格外小心这个脚本文件的安全和权限。
EC2兼容的认证可以从左边导航栏中的&EC2 Credentials&链接下载,选择你需要的项目,点击&Download EC2 Credentials&。会得到一个提供x509证书的zip文件和一个shell脚本。和前面的openrc文件不同,这些证书包含了所有可以访问你的云平台的认证信息,所以在安全的地方创建一个新目录,在新目录中解开zip文件。你会得到cacert.pem, cert.pem, ec2rc.sh and pk.pem。ec2rc.sh文件内容类似如下:
#!/bin/bash
NOVARC=$(readlink -f &${BASH_SOURCE:-${0}}& 2&/dev/null) ||NOVARC=$(python -c &import os, print os.path.abspath(os.path.realpath(sys.argv[1]))& &${BASH_SOURCE:-${0}}&) NOVA_KEY_DIR=${NOVARC%/*} export EC2_ACCESS_KEY=df7f93ec47e84ef8a347bbb3d598449a export EC2_SECRET_KEY=ead2fff9f8a344e489956deacd47e818 export EC2_URL=http://203.0.113.10:8773/services/Cloud export EC2_USER_ID=42 # nova does not use user id, but bundling requires it export EC2_PRIVATE_KEY=${NOVA_KEY_DIR}/pk.pem export EC2_CERT=${NOVA_KEY_DIR}/cert.pem export NOVA_CERT=${NOVA_KEY_DIR}/cacert.pem export EUCALYPTUS_CERT=${NOVA_CERT} # euca-bundle-image seems to require this set
alias ec2-bundle-image=&ec2-bundle-image &cert $EC2_CERT &privatekey $EC2_PRIVATE_KEY &user 42 &ec2cert $NOVA_CERT& alias ec2-upload-bundle=&ec2-upload-bundle -a $EC2_ACCESS_KEY -s $EC2_SECRET_KEY &url $S3_URL &ec2cert $NOVA_CERT&
把EC2 credentials放到你的环境里,source这个ec2rc.sh文件。
命令行的技巧和陷阱
命令行工具可以通过&debug标记来显示调用Openstack API的过程,例如
#&nova&&debug&list&
这个例子会显示从客户端来的HTTP请求和从endpoints的回应,这些对于对Openstack API定制化客户端有帮助
Keyring Support()可能就是一个困惑的东西,自这篇文章写的时候,有一个bug()。这个bug状态是open,然后解决,但是仍然有问题,又被重新open。这个bug的问题是在某些条件,命令行工具尝试使用一个python的钥匙作为证书的缓存,在这些情况的一个子集中,会要求在每次使用时会提示一个钥匙密码。如果你发现你遇到了这个不幸的情况,添加&no-cache标识或者设置环境变量OS_NO_CACHE=1来避免证书缓存。注意:这会造成命令行工具在每次交互的时候都需要认证。
优先使用Openstack API而不是命令行工具,他是一个跑在HTTP协议上的RESTful API。多数情况你会希望直接使用API而不是命令行工具,因为某一个命令行可能会存在bug。最好的使用方式是,结合cURL(http://curl.haxx.se)和其他工具来语法分析响应的JSON,例如jq(/jq/)
第一件事情你必须使用你的证书来认证来获取authentication token。证书包含了用户名、密码和tenant(项目)。你可以从上面我们谈到的openrc.sh文件中得到他们。token允许你不需要再次认证就能和其他的service endpoints交互。Tokens通常存在24小时比较好,当token过期后,你将会收到一个401(未被授权的)响应,然后你可以再请求一个token。
查看你的Openstack服务条目:
$&curl&-s&-X&POST&http://203.0.113.10:3/tokens&-d&&{&auth&:&{&passwordCredentials&:&{&username&:&test-user&,&&password&:&test-password&},&&tenantName&:&test-project&}}&&-H&&Content-type:&application/json&&|&jq&.&
通过阅读JSON的响应切身体会一下目录是如何被安排的。
为了使后续的请求更方便,我们把token储存在环境变量中。
$&TOKEN=`curl&-s&-X&POST&http://203.0.113.10:3/tokens&-d&&{&auth&:&{&passwordCredentials&:&{&username&:&test-user&,&&password&:&test-password&},&&tenantName&:&test-project&}}&&-H&&Content-type:&application/json&&|&jq&-r&.access.token.id`&
现在你可以在命令行里面使用变量$TOKEN来得到你的token值 从服务目录中选择一个服务endpoint,譬如计算的服务,然后尝试着发出一个请求,例如列出实例。
$&curl&-s&-H&&X-Auth-Token:&$TOKEN&&http://203.0.113.10:33aba48e756fa8f629c83a818ad57/servers&|&jq&.&
要查询API请求是如何组织的,可以阅读Openstack API Reference()。可以使用jq来细细研究返回的请求响应,阅读jq Manual()
在cURL命令中使用-s选项可以避免显示过程信息。如果你在使用cURL时遇到困难,把这个标记去掉。同样的,加上-v选项会输出详细信息,帮助排错。在cURL中还有更多有用的功能,参考man帮助手册查询所有的选项。
服务器和服务
作为一个管理员,通过使用Openstack工具来让你查看你的Openstack云平台。这部分将会告诉你如何总览你的云,组成,大小和状态。
首先,你可以查询哪些服务器属于你的Openstack云平台,通过运行
$&nova-manage&service&list&|&sort&
输出类似如下:
Binary Host Zone Status State Updated_At nova-cert
nova enabled :-)
19:32:38 nova-compute
nova enabled :-)
19:32:35 nova-compute
nova enabled :-)
19:32:32 nova-compute
nova enabled :-)
19:32:36 nova-compute
nova enabled :-)
19:32:32 nova-compute
nova enabled :-)
19:32:41 nova-consoleauth
nova enabled :-)
19:32:36 nova-network
nova enabled :-)
19:32:32 nova-scheduler
nova enabled :-)
输出显示有5个计算节点和1个云控制结点。你可以看到一个笑脸:-),表明这个服务是起的并运行着。如果一个服务不可用,:-)会变成XXX。这表明你应该排错一下为什么服务down了。
如果你用了nova-volume(这个服务在Folsom版本后不赞成使用),你会看到一行nova-volume的服务条目。
如果你是用了Cinder,运行如下命令将会看到。
$cinder-manage&host&list&|&sort&host&zone&&nova&&nova&&nova&&nova&&nova&&nova&
通过这两个表,你现在已经对组成你的云平台的服务器和服务有了总的概况。
你也可以使用认证服务(Keystone)查看什么服务在你的云平台可用,什么服务被配置了endpoints。
以下这个命令需要你在shell中设置了合适的管理权限的变量。
$&keystone&service-list&
description
cinder glance nova_ec2 keystone nova
volume image ec2 identity compute
Cinder Service OpenStack Image Service EC2 Service OpenStack Identity Service OpenStack Compute Service
输出显示有5个配置的服务
查看每个服务的endpoint,运行
$&keystone&endpoint-list&
+&&+&&&&&&&&&&&&&&+-/+&&&&&&&&&&&&&&+ | id | publicurl | | adminurl | +&&+&&&&&&&&&&&&&&+-/+&&&&&&&&&&&&&&+ | ... | :8774/v2/%(tenant_id)s| | :8774/v2/%(tenant_id)s| | ... | :8773/services/Cloud | /| :8773/services/Admin | | ... | :9292/v1 | | :9292/v1 | | ... | : | /| :3 | | ... | :8776/v1/%(tenant_id)s| | :8776/v1/%(tenant_id)s| +&&+&&&&&&&&&&&&&&+-/+&&&&&&&&&&&&&&+
服务和endpoint之间应该是一对一的映射,注意一些服务的公共URL和管理URL是不同的URLs和端口。
接下恚纯茨愕脑苹肪持械Fixed IP网络
$&nova-manage&network&list&id&IPv4&IPv6&start&address&DNS1&DNS2&VlanID&project&uuid&1&10.1.0.0/24&None&10.1.0.3&None&None&300&2725bbd&beacb3f2&2&10.1.1.0/24&None&10.1.1.3&None&None&301&none&d0b1a796&
输出显示两个被配置的网络,每个网络包含255个IP。第一个网络被分配给一个专门的项目,第二个网络]有分配。你可以手动分配,或者他也会自动被分配当一个项目启动第一个实例的时候
查看云平台中的floating ip,运行:
$&nova-manage&floating&list&2725bbd458ebd36be859f43f&1.2.3.4&None&nova&vlan20&None&1.2.3.5&48a415e7-6f07-4d33-ad00-814e60b010ff&nova&vlan20&
这里,两个floating IP可用,第一个已经被分配,第二个空间
用户和项目
列出云平台下的项目列表,运行
$&keystone&tenant-list&
jtopjian alvaro everett admin services jonathan lorin anne rhulsker tom adam
True True True True True True True True True True True
用户列表,运行
$&keystone&user-list&
everett jonathan nova rhulsker lorin alvaro anne admin cinder glance jtopjian adam tom
True True True True True True True True True True True True True
everett. jon@sfcu.edu nova@localhost ryan.hulkster@cyberalbert.ca
Alvaro.Perry@cyberalbert.ca anne. root@localhost cinder@localhost glance@localhost joe.
fafield@univm.edu.au
注意,有时候用户和组是一一对应的。通常在标准的系统用户是这样的,例如cinder, glance, nova, swift或者一个组里面就一个用户。
在运行的实例
显示运行中的实例列表:
$&nova&list&&all-tenants&
Windows cloud controller compute node 1 devbox devstack initial lorin-head
ACTIVE ACTIVE ACTIVE ACTIVE ACTIVE ACTIVE ACTIVE
novanetwork_1=10.1.1.3, 199.116.232.39 novanetwork_0=10.1.0.6; jtopjian=10.1.2.3 novanetwork_0=10.1.0.4; jtopjian=10.1.2.4 novanetwork_0=10.1.0.3 novanetwork_0=10.1.0.5 nova_network=10.1.7.4, 10.1.8.4 nova_network=10.1.7.3, 10.1.8.3
不幸的是这个命令没法告诉你更多的关于实例的细节,例如实例跑在哪个计算节点,实例的配置等等。你可以使用下面的命令来单独查看每个实例的细节:
$&nova&show&&
#&nova&show&81db556b-8aa5-427d-a95c-2a9a&
OS-DCF:diskConfig OS-EXT-SRV-ATTR:host OS-EXT-SRV-ATTR:hypervisor_hostname OS-EXT-SRV-ATTR:instance_name OS-EXT-STS:power_state OS-EXT-STS:task_state OS-EXT-STS:vm_state accessIPv4 accessIPv6 config_drive created flavor hostId id image key_name metadata name novanetwork_0 network progress security_groups status tenant_id updated user_id
instance- None active
T20:08:36Z m1.small (6) ... ... Ubuntu 12.04 cloudimg amd64 (...) jtopjian-sandbox {} devstack 10.1.0.5 0 [{u&name&: u&default&}] ACTIVE ... T20:08:59Z ...
【编辑推荐】
【责任编辑: TEL:(010)】
大家都在看猜你喜欢
原创头条头条外电头条
24H热文一周话题本月最赞
讲师:0人学习过
讲师:0人学习过
讲师:11人学习过
精选博文论坛热帖下载排行
本书是根据全国计算机技术与软件专业技术资格(水平)考试《网络管理员考试大纲》所要求的考试范围而编写的试题集。全书共分10个单元,同步...
订阅51CTO邮刊用户名:沈猪猪
文章数:152
评论数:33
访问量:76086
注册日期:
阅读量:1297
阅读量:3317
阅读量:447222
阅读量:1132445
51CTO推荐博文
glance&image-create&--name=cirros&--disk-format=qcow2&--container-format=bare&--is-public=yes&--file&cirros.img&&#&上传镜像
glance&image-update&--property&hw_disk_bus=ide&s0345sdf-effs-435-3dsfefef&#&修改镜像的磁盘驱动为ide,默认是virtioneutron:
neutron&port-update&--device-owner&clear&7f9685cb-794d-4847(port-id)&&#&清空端口的属主
neutron&security-group-rule-create&--protocol&icmp&--direction&ingress&default&#&default安全组允许入口icmp
neutron&security-group-rule-create&--protocol&tcp&--port-range-min&22&--port-range-max&22&--direction&ingress&default&#&default安全组允许入口ssh
neutron&net-create&ex-net&--router:external=True&&--provider:segmentation_id&131&--provider:network_type&vlan&--provider:physical_network&default&--shared&&#&neutron创建外网
neutron&subnet-create&ex-net&--dns-nameserver&8.8.8.8&--gateway&172.16.131.254&--allocation-pool&start=172.16.131.100,end=172.16.131.200&--disable-dhcp&172.16.131.0/24&--name&ext-subnet&
neutron&net-create&in-net&&#&neutron创建内网
neutron&subnet-create&in-net&--gateway&10.0.0.1&10.0.0.0/24&--name&in-subnet
neutron&router-create&router&&&&#&neutron创建router
neutron&router-gateway-set&router&ex-net
neutron&router-interface-add&router&in-subnet
neutron&router-gateway-clear&router
neutron&router-interface-delete&router&in-subnet
neutron&net-delete&in-net
neutron&net-delete&ex-netnova:
nova&secgroup-add-rule&default&icmp&-1&-1&0.0.0.0/0&&#&default安全组允许icmp
nova&secgroup-add-rule&default&tcp&22&22&0.0.0.0/0&&&#&default安全组允许ssh
nova&boot&--image&centos7&--flavor&3&--nic&net-id=ccbe902c-c921-471a-b72ae1ed&&--key-name&wwj-test&--security-groups&default&--availability-zone&nova:computer-40&&test4更多的openstack cli命令参考《openstack admin guide》本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)Loading...
反馈文档意见
反馈文档意见
(需要安装HedEx Lite)
您需要下载安装最新版本的HedEx Lite,安装完成后请重启浏览器
或将当前使用的HedEx Lite升级到最新版本
复制下载链接【OpenStack】使用Rest工具向OpenStack消息发送指导
我的图书馆
【OpenStack】使用Rest工具向OpenStack消息发送指导
本博客欢迎转发,但请保留原作者(新浪微博:@孔令贤HW;博客地址:http://blog.csdn.net/lynn_kong)信息!内容系本人学习、研究和总结,如有雷同,实属荣幸!来自:/blog/1828935
使用Rest工具向OpenStack消息发送指导
在为OpenStack开发新功能时,使用原有环境中的CLI无法进行功能调试,界面更不靠谱。只能通过直接调用API的方式进行测试。
OpenStack对外提供RestAPI,因此本博客介绍如何使用工具进行RestAPI的发送,同时也介绍了如何使用工具与OpenStack通信。
1&&&&& 工具准备
使用chrome浏览器,在扩展应用中搜索Postman并安装。
2&&&&& 使用步骤
1)&& 一般OpenStack的环境搭建都会有全局变量,里面有admin_token,记下
2)&& 打开postman,配置如下:&
3)&& 发送。收到的消息体中包含:记
下消息体中token下的id以及要发往哪个组件,就记下哪个组件的URL前缀。这里token是
c288a4ea1c6dbbfe701e,发向nova的URL前缀
是:http://192.168.82.152:bfe1c4e5a3fd153f6
4)&& 查询虚拟机,按如下填写,得到如下消息5)&& 以启动虚拟机为例6)&& Enjoy!
TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&
喜欢该文的人也喜欢查看: 21628|回复: 3
OpenStack打包方法总结
主题帖子积分
中级会员, 积分 771, 距离下一级还需 229 积分
中级会员, 积分 771, 距离下一级还需 229 积分
本帖最后由 徐超 于
23:30 编辑
1、openstack打包有哪些方法?
2、你怎么打包的?
安装一台CentOS-7-x86_64-Minimal-1503-01.iso最小版的虚拟机,什么软件都不要安装,能上外网就行。
第一种方法
1、配置缓存
# cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1& &&&#设置为1,启用缓存复制代码
2、安装源
yum install -y http://mirrors./epel/7/x86_64/e/epel-release-7-5.noarch.rpm
yum install -y https://repos.fedorapeople.org/repos/openstack/openstack-juno/rdo-release-juno-1.noarch.rpm复制代码
3、下载,并缓存OpenStack包
这里的yum install安装命令,是根据openstack官网安装文档来的。
这里,为了稍微自动化些,我把它写成了Shell脚本文件,这样就不需要手动一条条命令copy、回车执行。
#!/bin/sh
yum install -y createrepo& &#这是用来打包用的,生成repodata文件
yum install -y ntp
yum install -y yum-plugin-priorities
yum install -y openstack-selinux
yum install -y mariadb mariadb-server MySQL-python
yum install -y rabbitmq-server
yum install -y openstack-keystone python-keystoneclient
yum -y install openstack-glance python-glanceclient
yum install -y openstack-nova-api openstack-nova-cert openstack-novaconductor \
openstack-nova-console openstack-nova-novncproxy openstack-novascheduler \
python-novaclient
yum install -y openstack-nova-compute sysfsutils
yum install -y openstack-neutron openstack-neutron-ml2 python-neutronclient \
which
yum install -y openstack-neutron openstack-neutron-ml2 openstack-neutronopenvswitch
yum install -y openstack-neutron-ml2 openstack-neutron-openvswitch
yum install -y openstack-nova-network openstack-nova-api
yum install -y openstack-dashboard httpd mod_wsgi memcached pythonmemcached
yum install -y openstack-cinder targetcli python-oslo-db MySQL-python
yum install -y openstack-swift-proxy python-swiftclient python-keystoneauth-token \
python-keystonemiddleware memcached
yum install -y xfsprogs rsync
yum install -y openstack-swift-account openstack-swift-container \
openstack-swift-object
yum install -y openstack-heat-api openstack-heat-api-cfn openstack-heatengine \
python-heatclient
yum install -y mongodb-server mongodb
yum install -y openstack-ceilometer-api openstack-ceilometer-collector \
openstack-ceilometer-notification openstack-ceilometer-central \
openstack-ceilometer-alarm \
python-ceilometerclient
yum install -y openstack-ceilometer-compute python-ceilometerclient pythonpecan
yum install -y openstack-trove python-troveclient
yum install -y openstack-sahara python-saharaclient复制代码
执行脚本
# chmod +x openstack.sh && ./openstack.sh复制代码
4、这里,我们将/var/cache/yum/x86_64/7目录下的openstack-juno包文件夹,mv到/root/juno目录中。
# cd /var/cache/yum/x86_64/7
# ls
base&&epel&&extras&&openstack-juno&&timedhosts&&timedhosts.txt&&updates
# mv ./openstack-juno /root复制代码
5、createrepo打包
# pwd
/root/openstack-juno
# createrepo packages/
Spawning worker 0 with 89 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete复制代码
第一种方法,你得手动解决很多依赖关系。有点笨拙。
6、使用openstack包
我们可以以rdo、手动、devstack、或其它部署方式,来灵活、方便的使用,我们自己做的本地openstack包,明显,安装非常快!
第二种方法
用wget命令,来一劳永逸的下载包,有可能仍需要解决某些依赖关系。
如下:
# wget -c -r -np -k -L -p https://repos.fedorapeople.org/repos/openstack/openstack-juno/epel-7/复制代码
第三种方法
接着第一种方法的第2步之后,通过rdo在线安装来缓存包。
yum install -y openstack-packstack& &# 安装packstack包
packstack --gen-answer-file /root/answer.txt& &# 生成一个answer-file文件复制代码
RDO.png (39.18 KB, 下载次数: 21)
23:29 上传
主题帖子积分
中级会员, 积分 690, 距离下一级还需 310 积分
中级会员, 积分 690, 距离下一级还需 310 积分
主题帖子积分
高级会员, 积分 1431, 距离下一级还需 3569 积分
高级会员, 积分 1431, 距离下一级还需 3569 积分
版主,给您32个赞!
主题帖子积分
注册会员, 积分 118, 距离下一级还需 82 积分
注册会员, 积分 118, 距离下一级还需 82 积分
谢谢搂住,学习了
站长推荐 /4
云计算hadoop视频大全(新增 yarn、flume|storm、hadoop一套视频
等待验证会员请验证邮箱
新手获取积分方法
技术类问答,解决学习openstack,hadoop生态系统中遇到的问题
Powered by}

我要回帖

更多关于 apple pay如何使用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信