ubuntu安装samba服务器(ubuntu搭建samba)

本文参考:https://docs.openstack.org/ocata/install-guide-rdo/index.html官方文档来手把手教你安装Ocata,安装文档中有漏洞的地方,本文都会提及。本指南不会给出所有命令的输出结果,只给出部分必要的解释,因此在安装时最好对照着官方文档进行。,ubuntu安装samba服务器

  本文目录:

安装环境

认证服务

镜像服务

计算服务

网络服务

Dashboard

一、安装环境

1、示例架构

  根据官方文档,本文架构采用一个控制节点和一个计算节点。

  (The example architecture requires at least twonodes (hosts) to launch a basic virtual machine or instance. )

  控制节点运行认证服务、镜像服务、计算服务的管理部分、网络服务的管理部分、各种网络代理以及Dashboard,还包括一些基础服务如数据库、消息队列以及NTP。

  计算节点上运行计算服务中管理实例的管理程序部分。默认情况下,计算服务使用 KVM。还运行网络代理服务,用来连接实例和虚拟网络以及通过安全组给实例提供防火墙服务。

  2、网络

公有网络

  公有网络选项以尽可能简单的方式通过layer-2(网桥/交换机)服务以及VLAN网络的分割来部署OpenStack网络服务。实际上,它将虚拟网络桥接到物理网络,并依靠物理网络基础设施提供layer-3服务(路由)。另外,DHCP服务为实例提供IP地址。

私有网络

  私有网络选项扩展了公有网络选项,增加了layer-3(路由)服务,使用VXLAN类似的方式。本质上,它使用NAT路由虚拟网络到物理网络。另外,这个选项也提供高级服务的基础,比如LBaas和FWaaS。

  这里我们选择私有网络。

  3、安全

  下面是各个需要密码的服务以及解释,建议这些密码使用同一个,以免混淆。

  

  4、主机网络配置

  控制节点

配置网络接口

  Controller:IP:192.168.0.112/24 GATEWAY:192.168.0.1

  网络配置完之后需要将防火墙和selinux关闭。

关闭防火墙:

  systemctl stop firewalld.service

禁止防火墙开机启动

  systemctl disable firewalld.service

关闭selinux

  vim /etc/selinux/config,配置selinux=disabled

  # setenforce 0,使配置立即生效

配置地址解析

  编辑/etc/hosts

  # controller

  192.168.0.112 controller

  # compute1

  192.168.0.113 compute1

  计算节点

配置网络接口。

  Compute:IP:192.168.0.113/24 GATEWAY:192.168.0.1

  同样需要配置地址解析,参考控制节点。

  配置完成之后需要进行验证:

与外网连通性:

  分别在控制节点和计算节点上:

  # ping -c 4 www.baidu.com

控制节点和计算节点连通性:

  控制节点上输入# ping -c 4 compute1

  计算节点上输入# ping -c 4 controller

5、NTP

  控制节点

安装相关包

  # yum install chrony

编辑 /etc/chrony.conf

  server NTP_SERVER iburst

  可以根据需要将NTP_SERVER替换为合适的NTP服务器,建议不用改。然后添加:

  allow 192.168.0.0/24

  即允许计算节点同步。(计算节点IP网段属于192.168.0.0)

  # systemctl enable chronyd.service

  # systemctl start chronyd.service

  启动服务。

  计算节点

  编辑/etc/chrony.conf,可以将其他的几个同步地址注释掉。

  server controller iburst

  同步控制节点。

  # systemctl enable chronyd.service

  # systemctl start chronyd.service

  启动服务。(如果发现同步的不是控制节点,那么重启一下NTP服务即可。)

  # systemctl restart chronyd.service

  验证操作:

  在控制节点上同步时间。

  # chronyc sources

  带星号的是NTP当前同步的地址。

  计算节点上同步。

  # chronycsources

  210 Number of sources = 1

  MS Name/IP address

  Stratum Poll Reach LastRx Last sample

  ======================================================

  ^* controller 3 9 377 421 +15us[ -87us] +/- 15ms

6、安装OpenStack包

  以下操作在所有节点上进行。

启用OpenStack库:

  # yum install centos-release-openstack-ocata

完成安装

  1)在所有节点上升级包

# yum upgrade

  2)安装OpenStack 客户端

  # yum install python-openstackclient

  3)CentOS默认启用了SELinux,安装openstack-selinux来自动管理OpenStack服务的安全策略。

  # yum install openstack-selinux

  7、安装数据库

  数据库一般运行在控制节点上。

  安装并配置组件。

安装相关包。

  # yum install mariadb mariadb-server python2-PyMySQL

  创建并编辑/etc/my.cnf.d/openstack.cnf 文件,并完成以下操作。在配置文件中添加以下配置:

  [mysqld]

  bind-address=192.168.0.112

  default-storage-engine=innodb

  innodb_file_per_table=on

  max_connections=4096

  collation-server=utf8_general_ci

  character-set-server=utf8

  其中bind-address为控制节点IP地址。

完成安装

  1)启动数据库并设置开机启动

  # systemctl enable mariadb.service

  # systemctl start mariadb.service

  2)运行mysql_secure_installation脚本来保证数据库安全,为root账户设置一个合适的密码

  # mysql_secure_installation

  8、消息队列

  OpenStack使用消息队列来协调服务之间的状态和操作,消息队列服务一般运行在控制节点上。,OpenStack支持RabbitMQ,Qpid以及ZeroMQ等消息队列服务。本指南使用RabbitMQ消息队列服务。

安装相关包

  # yum install rabbitmq-server

启动消息队列并设置开机启动

  # systemctl enable rabbitmq-server.service

  # systemctl start rabbitmq-server.service

添加openstack用户

  #rabbitmqctl add_user openstack RABBIT_PASS

  Creating user “openstack” …

  使用合适的密码替换掉 RABBIT_PASS

允许openstack用户的配置、写、读权限

  #rabbitmqctl set_permissions openstack”.*””.*””.*”

  Setting permissions for user “openstack” in vhost “/” …

9、缓存令牌

  认证服务的认证机制使用Memcached来缓存令牌,一般运行在控制节点上。

安装相关包

  # yum install memcached python-memcached

  编辑 /etc/sysconfig/memcached文件并配置IP地址,将127.0.0.1改为控制节点IP。

完成安装

  启动 Memcached服务并设置开机启动。

  # systemctl enable memcached.service

  # systemctl start memcached.service

二、认证服务

  在 控制节点上配置。 1、前提条件

创建数据库

  以root身份登录数据库

$ mysql -u root -p

  创建keystone数据库

  MariaDB[(none)]> CREATE DATABASE keystone;

  给数据库赋予适当的权限;

  MariaDB [(none)]> GRANT ALL PRIVILEGESON keystone.* TO ‘keystone’@’localhost’

  IDENTIFIED BY ‘KEYSTONE_DBPASS’;

  MariaDB [(none)]> GRANT ALL PRIVILEGESON keystone.* TO ‘keystone’@’%’

  IDENTIFIED BY ‘KEYSTONE_DBPASS’;

  用合适的密码替换KEYSTONE_DBPASS

  2、安装并配置组件

运行命令安装相关包

  # yum install openstack-keystone httpd mod_wsgi

  编辑文件/etc/keystone/keystone.conf

  在[database]选项配置数据库连接

  [database]

  # …

  connection=mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone

  替换掉KEYSTONE_DBPASS

  在[token]选项中,配置,Fernet令牌提供者:

  [token]

  # …

  provider=fernet

同步认证服务数据库

  # su -s/bin/sh -c “keystone-manage db_sync” keystone

初始化Fernetkey仓库

  # keystone-manage fernet_setup –keystone-user keystone –keystone-

  groupkeystone

  # keystone-manage credential_setup –keystone-user keystone–keystone-groupkeystone

引导认证服务

  # keystone-manage bootstrap –bootstrap-password ADMIN_PASS

  –bootstrap-admin-urlhttp://controller:35357/v3/

  –bootstrap-internal-urlhttp://controller:5000/v3/

  –bootstrap-public-urlhttp://controller:5000/v3/

  –bootstrap-region-id RegionOne

  替换掉ADMIN_PASS

配置Apache服务器

编辑/etc/httpd/conf/httpd.conf并配置ServerName选项,使之参考控制节点

给/usr/share/keystone/wsgi-keystone.conf文件创建一个链接

  # ln -s/usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

完成安装

  1.启动Apache服务器并设置开机启动

  # systemctlenable httpd.service

  # systemctl start httpd.service

  2.配置管理账户

  $export OS_USERNAME=admin

  $export OS_PASSWORD=ADMIN_PASS

  $export OS_PROJECT_NAME=admin

  $export OS_USER_DOMAIN_NAME=Default

  $export OS_PROJECT_DOMAIN_NAME=Default

  $export OS_AUTH_URL=http://controller:35357/v3

  $export OS_IDENTITY_API_VERSION=3

3、创建一个域、项目、用户和角色

本指南有一个service 项目,你添加的每一个服务都有唯一的用户。

  $ openstack project create –domain default

  –deion “Service Project”service

普通的任务不应该使用具有特权的项目和用户。作为示例,本指南创建一个demo项目和用户。

  1、创建demo项目:

  $ openstack project create –domain default

  –deion “Demo Project”demo

  2、创建demo用户:

  ?

  $ openstack user create –domain default

  –password-prompt demo

  3、创建user角色:

  $ openstack role create user

  4、将user角色添加到demo项目和用户中。

  $ openstack role add –project demo –user demo user

4、验证操作

出于安全性的原因,禁用掉暂时的认证令牌机制。

  编辑/etc/keystone/keystone-paste.ini文件,并从[pipeline:public_api], [pipeline:admin_api], 和[pipeline:api_v3]选项中删除admin_token_auth

  

取消设置临时的OS_AUTH_URL和OS_PASSWORD环境变量:

  $unset OS_AUTH_URL OS_PASSWORD

使用admin用户,请求一个认证令牌;

  $ openstack –os-auth-url http://controller:35357/v3

  –os-project-domain-name default–os-user-domain-name default

  –os-project-name admin –os-username admintoken issue

  这里遇到错误

  

  由于是Http错误,所以返回Apache HTTP 服务配置的地方,重启Apache 服务,并重新设置管理账户:

  # systemctlrestart httpd.service

  $ export OS_USERNAME=admin

  $ export OS_PASSWORD=ADMIN_PASS

  $ export OS_PROJECT_NAME=admin

  $ export OS_USER_DOMAIN_NAME=Default

  $ export OS_PROJECT_DOMAIN_NAME=Default

  $ export OS_AUTH_URL=http://controller:35357/v3

  $ export OS_IDENTITY_API_VERSION=3

  

  错误解决!

使用demo用户,请求认证令牌:

  $ openstack–os-auth-url http://controller:5000/v3

  –os-project-domain-namedefault –os-user-domain-name default

  –os-project-namedemo –os-username demo token issue

  Password:

  密码为创建demo用户时的密码。

  5、创建OpenStack客户端环境脚本:

  在前面章节中,我们使用环境变量和命令的组合来配置认证服务,为了更加高效和方便,我们创建一个脚本方便以后的操作。这些脚本包括一些公共的操作,但是也支持自定义的操作。

创建脚本

  创建并编辑admin-openrc文件,并添加以下内容:

  export OS_PROJECT_DOMAIN_NAME=Default

  export OS_USER_DOMAIN_NAME=Default

  export OS_PROJECT_NAME=admin

  export OS_USERNAME=admin

  export OS_PASSWORD=root

  export OS_AUTH_URL=http://controller:35357/v3

  export OS_IDENTITY_API_VERSION=3

  export OS_IMAGE_API_VERSION=2

  替换掉OS_PASSWORD的密码。

  创建并编辑demo-openrc文件,并添加以下内容:

  export OS_PROJECT_DOMAIN_NAME=Default

  export OS_USER_DOMAIN_NAME=Default

  export OS_PROJECT_NAME=demo

  export OS_USERNAME=demo

  export OS_PASSWORD=DEMO_PASS

  export OS_AUTH_URL=http://controller:5000/v3

  export OS_IDENTITY_API_VERSION=3

  export OS_IMAGE_API_VERSION=2

使用脚本

  加载脚本文件更新环境变量:

  $ . admin-openrc

  请求一个认证令牌;

  $ openstack token issue

  三、镜像服务

  1、前提条件

创建数据库

  连接数据库,使用root登录。

  $ mysql -u root -p

  创建 glance 数据库

  MariaDB [(none)]> CREATE DATABASEglance;

  赋予权限:

  MariaDB [(none)]> GRANT ALL PRIVILEGESON glance.* TO ‘glance’@’localhost’

  IDENTIFIED BY ‘GLANCE_DBPASS’;

  MariaDB [(none)]> GRANT ALL PRIVILEGESON glance.* TO ‘glance’@’%’

  IDENTIFIED BY ‘GLANCE_DBPASS’;

  替换GLANCE_DBPASS为合适的密码;

  退出数据库连接。

导入admin证书来获取只有admin才能执行的命令行权限;

  $ . admin-openrc

创建服务认证:

  创建glance用户

  $ openstack user create –domain default –password-prompt glance

  添加管理员角色到glance用户和service项目中:

  $ openstack role add –project service –user glance admin

创建glance服务实体

  创建镜像服务API端口:

  $ openstack endpoint create –region RegionOne

  imagepublic http://controller:9292

  $ openstack endpoint create –region RegionOne

  image internal http://controller:9292

  $ openstack endpoint create –region RegionOne

  image admin http://controller:9292

2、安装并配置组件

安装相关包:

  # yum install openstack-glance

编辑/etc/glance/glance-api.conf文件,完成以下操作;

ubuntu安装samba服务器(ubuntu搭建samba)

  在[keystone_authtoken]和[paste_deploy]选项中,配置认证服务权限:

  [keystone_authtoken]

  # …

  auth_uri=http://controller:5000

  auth_url=http://controller:35357

  memcached_servers=controller:11211

  auth_type=password

  project_domain_name=default

  user_domain_name=default

  project_name=service

  username=glance

  password=GLANCE_PASS

  [paste_deploy]

  # …

  flavor=keystone

  替换掉GLANCE_PASS密码。删除或注释掉其他[keystone_authtoken]参数。

  在[glance_store]选项中,配置本地文件系统存储和镜像文件位置。

  [glance_store]

  # …

  stores=file,http

  default_store=file

  filesystem_store_datadir=/var/lib/glance/images/

  编辑/etc/glance/glance-registry.conf文件,并完成以下操作:

  在[database]选项中,配置数据库权限:

  [database]

  # …

  connection=mysql+pymysql://glance:GLANCE_DBPASS@controller/glance

  替换掉 GLANCE_DBPASS密码。

  在[keystone_authtoken]和[paste_deploy]选项中,配置认证服务权限:

[keystone_authtoken]

  # …

  auth_uri=http://controller:5000

  auth_url=http://controller:35357

  memcached_servers=controller:11211

  auth_type=password

  project_domain_name=default

  user_domain_name=default

  project_name=service

  username=glance

  password=GLANCE_PASS

  [paste_deploy]

  # …

  flavor=keystone

  替换掉GLANCE_DBPASS密码。

  4、更新镜像服务数据库

  完成安装

启动镜像服务并设置开机启动。

  # systemctl enable openstack-glance-api.service

  openstack-glance-registry.service

  # systemctl start openstack-glance-api.service

  openstack-glance-registry.service

5、验证操作

获取admin权限

  $ . admin-openrc

下载源镜像

  $ wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

上传镜像

  $ openstack image create “cirros”

  –file cirros-0.3.4-x86_64-disk.img

  –disk-format qcow2 –container-format bare

  –public

验证上传镜像:

  openstack image list

四、计算服务

1、安装和配置控制节点

准备条件

  创建数据库,与之前步骤类似,这里不再详细列出

  $ mysql -u root -p

  MariaDB [(none)]> CREATE DATABASEnova_api;

  MariaDB [(none)]> CREATE DATABASE nova;

  MariaDB [(none)]> GRANT ALL PRIVILEGESON nova_api.* TO ‘nova’@’localhost’

  IDENTIFIED BY ‘NOVA_DBPASS’;

  MariaDB [(none)]> GRANT ALL PRIVILEGESON nova_api.* TO ‘nova’@’%’

  IDENTIFIED BY ‘NOVA_DBPASS’;

  MariaDB [(none)]> GRANT ALL PRIVILEGESON nova.* TO ‘nova’@’localhost’

  IDENTIFIED BY ‘NOVA_DBPASS’;

  MariaDB [(none)]> GRANT ALL PRIVILEGESON nova.* TO ‘nova’@’%’

  IDENTIFIED BY ‘NOVA_DBPASS’;

获取admin权限:

  $ . admin-openrc

  创建nova用户

  $ openstack user create –domain default

  –password-prompt nova

  设置合适的密码

  向nova用户中添加admin角色。

  $ openstack role add –project service –user nova admin

  创建nova服务实体

  $ openstack service create –name nova

  –deion “OpenStack Compute” compute

  2、创建计算服务API端口

  $ openstack endpoint create –region RegionOne

  compute public http://controller:8774/v2.1/%(tenant_id)s

  $ openstack endpoint create –region RegionOne

  compute internal http://controller:8774/v2.1/%(tenant_id)s

  $ openstack endpoint create –region RegionOne

  compute admin http://controller:8774/v2.1/%(tenant_id)s

安装并配置组件

  安装相关包

  # yum install openstack-nova-api openstack-nova-conductor

  openstack-nova-console openstack-nova-novncproxy

  openstack-nova-scheduler

编辑 /etc/nova/nova.conf文件

  在[DEFAULT]选项中,开启计算和元数据API

  [DEFAULT]

  # …

  enabled_apis=osapi_compute,metadata

  在 [api_database]和[database]选项中,配置数据库连接

  [api_database]

  # …

  connection=mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api

  [database]

  # …

  connection=mysql+pymysql://nova:NOVA_DBPASS@controller/nova

  替换NOVA_DBPASS密码。

  在[DEFAULT]选项中,配置消息队列连接。

  [DEFAULT]

  # …

  transport_url=rabbit://openstack:RABBIT_PASS@controller

  替换掉RABBIT_PASS

  在[api]和[keystone_authtoken]选项中,

  [api]

  # …

  auth_strategy=keystone

  [keystone_authtoken]

  # …

  auth_uri=http://controller:5000

  auth_url=http://controller:35357

  memcached_servers=controller:11211

  auth_type=password

  project_domain_name=default

  user_domain_name=default

  project_name=service

  username=nova

  password=NOVA_PASS

  替换掉NOVA_PASS

  在[DEFAULT]选项中,配置my_ip

  [DEFAULT]

  # …

  my_ip=10.0.0.11

  开启对网络服务的支持

  [DEFAULT]

  # …

  use_neutron=True

  firewall_driver=nova.virt.firewall.NoopFirewallDriver

  在[vnc]选项中,配置VNC代理

  [vnc]

  enabled=true

  # …

  vncserver_listen=$my_ip

  vncserver_proxyclient_address=$my_ip

  在[glance]选项中,配置镜像服务API的位置。

  [glance]

  # …

  api_servers=http://controller:9292

  在[oslo_concurrency]选项中,配置锁定路径

  [oslo_concurrency]

  # …

  lock_path=/var/lib/nova/tmp

  更新数据库

  #su -s /bin/sh -c”nova-manage api_db sync”nova

  #su -s /bin/sh -c “nova-manage db sync”nova

完成安装

  开启计算服务并设置开机启动;

  # systemctl enable openstack-nova-api.service

  openstack-nova-consoleauth.service openstack-nova-scheduler.service

  openstack-nova-conductor.service openstack-nova-novncproxy.service

  # systemctl start openstack-nova-api.service

  openstack-nova-consoleauth.service openstack-nova-scheduler.service

  openstack-nova-conductor.service openstack-nova-novncproxy.service

3、安装并配置计算节点

安装并配置组件

  安装相关包

  # yum install openstack-nova-compute

  编辑/etc/nova/nova.conf文件

  在[DEFAULT]选项中,开启计算和元数据API

  [DEFAULT]

  # …

  enabled_apis=osapi_compute,metadata

  在[DEFAULT]选项中,配置消息队列权限

  [DEFAULT]

  # …

  transport_url=rabbit://openstack:RABBIT_PASS@controller

  替换掉RABBIT_PASS

  在[api]和[keystone_authtoken]选项中,配置认证服务权限

  [api]

  # …

  auth_strategy=keystone

  [keystone_authtoken]

  # …

  auth_uri=http://controller:5000

  auth_url=http://controller:35357

  memcached_servers=controller:11211

  auth_type=password

  project_domain_name=default

  user_domain_name=default

  project_name=service

  username=nova

  password=NOVA_PASS

  替换掉NOVA_PASS

  在[DEFAULT]选项中,配置my_ip参数

  [DEFAULT]

  # …

  my_ip=MANAGEMENT_INTERFACE_IP_ADDRESS

  替换MANAGEMENT_INTERFACE_IP_ADDRESS为计算节点IP

  在[DEFAULT]选项中,开启网络服务支持

  [DEFAULT]

  # …

  use_neutron=True

  firewall_driver=nova.virt.firewall.NoopFirewallDriver

  在[vnc]选项中,开启并配置远程控制台权限

  [vnc]

  # …

  enabled=True

  vncserver_listen=0.0.0.0

  vncserver_proxyclient_address=$my_ip

  novncproxy_base_url=http://controller:6080/vnc_auto.html

  在[glance]选项中,配置镜像服务API地址

  [glance]

  # …

  api_servers=http://controller:9292

  在[oslo_concurrency]选项,配置锁定路径

  [oslo_concurrency]

  # …

  lock_path=/var/lib/nova/tmp

  4、完成安装

检查你的计算节点是否支持硬件虚拟化

  $ egrep -c ‘(vmx|svm)’ /proc/cpuinfo

  如果输出值大于等于1,那么不需要配置,否则,需要做一下配置

  编辑/etc/nova/nova.conf文件,配置[libvirt]

  [libvirt]

  # …

  virt_type=qemu

开启计算服务并设置开机启动

  # systemctl enable libvirtd.serviceopenstack-nova-compute.service

  # systemctl start libvirtd.service openstack-nova-compute.service

验证操作

  在控制节点上进行操作。

  获取admin权限

  $ . admin-openrc

  列出服务组件来验证每个组件都成功运行了

  $ openstack compute service list

  这里遇到问题:发现计算节点上服务没有启动

  

  

  查看计算节点日志:/var/log/nova/nova-compute.log发现

  

  里面提到需要配置placement,而官方文档并没有提到这一点。解决办法是安装openstack-nova-placement-api,并配置相关选项。

  在控制节点上,然后创建用户把用户placement添加到项目中去并创建placement类型的服务目录:

  

  

  最终创建端口:

  openstack endpoint create –regionRegionOne placement public http://192.168.0.112:8778

  openstack endpoint create –regionRegionOne placement admin http://192.168.0.112:8778

  openstack endpoint create –regionRegionOne placement intenal http://192.168.0.112:8778

  在计算节点上编辑文件:/etc/nova/nova.conf

  在placement选项中添加:

  auth_uri = http://controller:5000

  auth_url = http://controller:35357

  memcached_servers = controller:11211

  auth_type = password

  project_domain_name = default

  user_domain_name = default

  project_name = service

  username = nova

  password = root

  os_region_name = RegionOne

  替换掉password,重启计算服务:

  # systemctl restartopenstack-nova-compute.service

  可以看到服务已经启动:

  

  控制节点上也显示正常:

  

  在此参考了

  http://superbigsea.blog.51cto.com/6862263/1901216,特别感谢!

  下面接着验证操作:

  3、列出认证服务中的API端口以检查连通性

  $ openstack catalog list

  

  4、列出镜像服务中的镜像以验证连通性;

  $ openstack image list

  

  下节继续配置网络服务和Dashboard。

  相关阅读:高端私有云项目交流群,欢迎加入!

《运维前线》新书发布,十三位前线运维专家倾力奉献,现场送出30本。云技术社区、华章书院、优云联手倾力精彩奉献!现场另有云技术社区定制数据线、北极熊袋子等精美礼品!2017年首场专业运维会议,一线专家解密当前运维前线,扫码或者点击阅读原文立即报名!

《运维前线》一书是十三位一线运维专家的深度实践,云技术社区历经整整一年多策划出品,想要得到免费的《运维前线》,请来参加“运维之春—2017运维前线解密”沙龙。同时,《运维前线》下一本书也开始邀请作者加入,如果有意向分享自己的运维实践经验,请加微信:xiaolikvm。

  加入云技术社区技术交流微信群,联系北极熊微信:hadxiaer(加的时候请备注:姓名-城市-公司)

  

  

  

  

  交流 分享 提升

  

  云技术社区成立于2014年,国内最大的云技术交流平台,分享在云计算/虚拟化项目实施中的资讯、经验和技术,坚持干货。旗下运营:云技术实践、云技术、桌面云之云潮涌动等公众号,以及相关的微信群和QQ群,覆盖云计算领域的技术人群,加入云技术社区微信、QQ群请点击订阅号菜单“群和活动”。

  

  

© 版权声明
THE END
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容