Openstack 控制台开发体会

这篇博客讲述了作者在开发Openstack控制台界面时的学习经历。从对前端技术(如HTML, CSS, JS, JQUERY)的初步接触,到克服困难逐渐熟练的过程。在前端开发中,作者经历了从模仿到独立完成界面的转变,尽管过程中遇到挑战,但收获颇丰。同时,文章也提及了后端开发,主要利用各服务的client进行操作,如nova和keystone等。" 113087254,10539921,图像处理:MATLAB与OpenCV中的腐蚀与膨胀,"['图像处理', 'OpenCV', 'MATLAB', '形态学']
摘要由CSDN通过智能技术生成

    这段时间进行openstack控制台界面的开发有2个多月,感觉学到了不少东西。

1、前端

    首先是前端的技术,之前只知道简单的html语法,对CSS,JS,JQUERY等一窍不通。年后,小组开发人手不是很够,果断转行去开发,记得刚开始,搞个练手的界面,搞了两天才实现。而且前提是别人写好的结构,拿过来修改使用。熟读唐诗三百首,不会做诗也会吟的境界。但是一旦碰到没有样例的界面,那就头疼了,因为很多标签都是不认识的。但只能问人,搜索用法,记得有几天,写几个界面,搞得有点喘不过气来。但事实证明一句老话,当你感觉到难受的时候,是你学东西最多的时候。因为不懂,所以觉得很难,因为一直坚持,所以特别难受,中途多次想不做前端了,让其他人做,只写后端好了,但还是一直坚持。截止本稿时间,终于学到了一些基本前端,现在做OPensack的控制台界面开发勉强够用。

 2、后端

开发后端直接使用各个服务的client,因为Horizon就是这么干的。

通过实例化一个通过授权认证的客户端对象,然后可以进行后续的操作

2.1、nova

nova操作,

import novaclient.v1_1.client as nvclient
nova = nvclient.Client(auth_url=auth_dict["--os-auth-url"],\
                                    username=auth_dict["--os-username"],\
                                    api_key=auth_dict["--os-password"],\
                                    project_id=auth_dict["--os-tenant-name"])

可以进行的操作,经常用到的:


2.2 keystone


import keystoneclient.v2_0.client as ksclient
keystone = ksclient.Client(auth_url = auth_dict["--os-auth-url"], \
                                        username = auth_dict["--os-username"], \
                                        password = auth_dict["--os-password"], \
                                        tenant_name = auth_dict["--os-tenant-name"])


2.3 neutron


import neutronclient.v2_0.client as neutronclient
neutron = neutronclient.Client(auth_url=auth_dict["--os-auth-url"],\
                                            username=auth_dict["--os-username"],\
                                            password=auth_dict["--os-password"],\
                                            tenant_name=auth_dict["--os-tenant-name"])
        


或者:


import neutronclient.v2_0.client as neutronclient
import keystoneclient.v2_0.client as ksclient
keystone = ksclient.Client(auth_url = auth_dict["--os-auth-url"], \
                                        username = auth_dict["--os-username"], \
                                        password = auth_dict["--os-password"], \
                                        tenant_name = auth_dict["--os-tenant-name"])

endpoint_url = keystone.service_catalog.url_for(service_type='network')
token = keystone.auth_token
neutron2 = neutronclient.Client(endpoint_url=endpoint_url, token=token)

neutron = neutronclient.Client(auth_url=auth_dict["--os-auth-url"],\
 username=auth_dict["--os-username"],\
password=auth_dict["--os-password"],\
tenant_name=auth_dict["--os-tenant-name"])



2.4 Cinder:

import cinderclient.v1.client as cinderclient
cinder = cinderclient.Client(auth_url=auth_dict["--os-auth-url"], \
                                          username=auth_dict["--os-username"], \
                                          api_key=auth_dict["--os-password"], \
                                          project_id=auth_dict["--os-tenant-name"])



2.5 Glance:

import glanceclient.v2.client as glclient
import keystoneclient.v2_0.client as ksclient

keystone = ksclient.Client(auth_url=auth_dict["--os-auth-url"],\
                                   username=auth_dict["--os-username"],\
                                   password=auth_dict["--os-password"],\
                                   tenant_name=auth_dict["--os-tenant-name"])
        glance_endpoint = keystone.service_catalog.url_for(service_type='image')
        glance = glclient.Client(glance_endpoint, token=keystone.auth_token)



很多操作返回的都是一个对象,比如:

users=keystone.users.list()
print(type(users))
print(users[0].__dict__)



输出如下:

users type: <type 'list'>
user type: <class 'keystoneclient.v2_0.users.User'>
{
    'name': u'cinder',
    'enabled': True,
    'tenantId': u'1b0a62c8222549a4ad3ddcb61e8ff78a',
    'manager': <keystoneclient.v2_0.users.UserManagerobjectat0x2a3a950>,
    'id': u'278840877e7640729b11051b3e76dabe',
    '_info': {
        u'id': u'278840877e7640729b11051b3e76dabe',
        u'enabled': True,
        u'email': u'cinder@localhost',
        u'name': u'cinder',
        u'tenantId': u'1b0a62c8222549a4ad3ddcb61e8ff78a'
    },
    'email': u'cinder@localhost',
    '_loaded': True
}




发现__dict__包含的_info字段的内容已经是这个对象的我们要用到的属性了,所以可以直接用这个_info的内容。









一、Virtual Box的安装 1、安装Virtual Box 2、 Virtual Box网络设定 3、 安装操作系统 二、 环境预配置 1、 网路设置 2、 分别修改三个虚拟机的主机名 3、 主机地址映射配置 4、 禁用selinux 5、 CentOS6本地yum源配置 注:先加载镜像 6、 NTP安装服务 三、 本地源制作 1. Centos6.6本地base、extra源制作 2. 本地base、extra源制作 3. 本地epel、openstack源制作 4. ftp服务安装 5. 修改yum源仓库指向文件 四、 keystone安装(上) 1. 安装Mysql服务 2. 安装rabbitmq消息队列 3. 为nova,neutron,cinder.heat创建用户并授权 五、 keystone安装(下) 1. 创建库和授权 2. 创建库和授权 3. 生成PKI认证所需要的证书文件 4. 同步keystone数据库,生成keystone所需的表 5. 启动keystone服务和校验服务状态 6. 创cron任务,配置定期清理过期的token 7. keystone创建user,tenant,role和endpoint 六、 Glance安装 1. Glance的安装 2. 配置glance-api服务 3. 配置glance-registry服务 4. 启动并校验glance服务 57 七、 Nova安装 59 1. nova的安装与配置 59 2. 安装和配置nova 60 八、 Neutron安装 63 1. neutron的安装与配置 63 2.Neutron使用二层组件 66 3. 配置OVS二层插件 67 4. 配置nova支持neutron 67 5. 启动neutron-server服务 68 6. 重启nova服务和neutron联动 69 7. 重启neutron-server 69 8. controller0上校验neutron的配置 69 九、 Horizon安装 71 1. Horizon组件的安装与配置 71 十、 Compute0安装nova 74 1. nova的安装与配置(compute0-10.20.0.30) 74 2. nova的安装与配置 75 十一、 Compute0安装neutron 78 1. neutron的安装与配置(compute0) 78 十二、 Network0安装neutron 83 1. neutron的安装与配置 83 十三、 新建网络 91 1. 配置安全组规则 91 2. 新建网络 92 3 .创建云主机 99 4 .分配浮动ip 101 十四、 心得体会 107
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值