2014年12月

OpenStack Apis Authenticate (Token ID & Tenant ID)

调用openstack api需要先发送认证请求,需要获取Token ID和Tenant ID。

使用trystack的话需要获得username,password,tenant name和认证地址等选项,获取方法如下:

1.获取api密码

登录成功后点击右上角的用户名选择设置,然后选择左侧的“API Password”,然后点击“Request API password”按钮,获取你的 Api密码,获取之后自行记住。然后你需要退出重新登录,可以直接用用户名:facebook*** 密码就是刚刚获取的登录。

[caption id="attachment_155" align="alignnone" width="692"]获取api密码 获取api密码[/caption]

2.获取认证地址,tenant name等信息

点击左侧dashboard的Compute选项中的访问和安全,选择右侧的“访问&安全”选项,然后点击“下载OpenStack RC文件”按钮,下载文件至本地。

[caption id="attachment_158" align="alignnone" width="896"]下载openstack rc文件 下载openstack rc文件[/caption]

下载完成后代开下载的文件,需要的信息已经在下图圈出。

[caption id="attachment_157" align="alignnone" width="625"]获取其他信息 获取其他信息[/caption]

 

认证获取Token ID 和 Tenant ID(其实tenant id上图的openstack RC文件中已经给出来了)

#!/usr/bin/python
#-*- coding: UTF-8 -*-  
import urllib, httplib, json, urlparse
FLOATING_IP = '8.21.28.*'                   #你的认证ip
TENANT_NAME = 'your tenant name'
USERNAME = 'your username'
PASSWD = 'your password'

url = FLOATING_IP + ':5000'
try:
    params = '{"auth": {"tenantName":"' + TENANT_NAME + '", "passwordCredentials":{"username":"' + USERNAME + '", "password":"' + PASSWD + '"}}}'
    headers = {'Content-Type': 'application/json'}
    conn = httplib.HTTPConnection(url)
    conn.request('POST','/v2.0/tokens',params,headers)
    response = conn.getresponse()
    data = response.read()
    dd = json.loads(data)
    if 'error' in dd:
        print 'Error,Openstack Authorized Failed!'
        conn.close()
        exit()
    conn.close()
    
except Exception as e:
    print url + '/v2.0/tokens', e
    conn.close()
    exit()
 
token_id = dd['access']['token']['id']
tenant_id = dd['access']['token']['tenant']['id']
print "token : " + token_id
print "tenant id : " + tenant_id

 

Trystack创建实例并通过ssh远程登录虚拟机

这是Trystack的官方介绍:
The Easiest Way To Try Out OpenStack. We've set up large clusters of hardware running OpenStack on both x86 and ARM architectures. The best part? It's totally free for you to try & test your apps—thanks to our generous individual and corporate contributors.
trystack提供一个免费的openstack环境给你尝试测试你的apps,你新建的虚拟机只会存在24小时,所以只能用于测试,不能用于生产环境。

Trystack传送门:http://trystack.org/

下面介绍详细步骤:

1.申请加入trystack的facebook小组

点击首页的 Join Our Facebook Group,申请加入trystack的facebook小组,这个不是立即生效的,基本上申请了都会加入,请等待小组的管理员通过你的申请。(facebook被墙了,怎么访问的话我这里不做介绍)

[caption id="attachment_114" align="alignnone" width="693"]申请加入小组 申请加入小组[/caption]

2.登录trystack

确保你加入了小组之后,就能点击trystack首页的登录按钮,使用facebook帐号验证,登录成功后如下图所示,可以看到,你的用户名形如 facebook*******

[caption id="attachment_117" align="alignnone" width="702"]登录成功 登录成功[/caption]

3.创建子网

点击openstack dashboard左侧的网络,在点击展开后的网络选项,点击右侧的“创建网络”按钮,打开创建网络的对话框。

[caption id="attachment_118" align="alignnone" width="710"]创建网络 创建网络[/caption]

在网络选项中输入网络的名称,子网选项中输入子网名称,子网地址(注意格式),其他默认即可,点击下一步完成创建。(也可以在子网详情中设置DHCP,ip的范围,和主机路由等选项,这里不多介绍),创建成功后如下图所示。

[caption id="attachment_119" align="alignnone" width="710"]创建网络完成 创建网络完成[/caption]

4.创建路由

点击openstack dashboard左侧的网络,在点击展开后的路由选项,点击右侧的 “新建路由”按钮,打开新建路由的对话框。

输入路由名字就可以了,就不上图了,创建完成后点击“设置网关”打开路由的网关设置页,选择默认的 external 网络。

[caption id="attachment_122" align="alignnone" width="717"]设置网关 设置网关[/caption]

完成后点击路由的名称,进入路由的详情页面,点击“增加接口”按钮,增加前面创建的子网。

[caption id="attachment_123" align="alignnone" width="724"]增加接口 增加接口[/caption]

5.创建密钥对

trystack的镜像没有用户名、密码,需要是要密钥登录。点击openstack dashboard左侧的compute,在点击展开后的“访问&安全”选项,选择 “密钥对”选项,点击左侧的“创建密钥对”按钮,打开创建密钥对的窗口。

[caption id="attachment_124" align="alignnone" width="727"]创建密钥对 创建密钥对[/caption]

[caption id="attachment_125" align="alignnone" width="728"]创建密钥对 创建密钥对[/caption]

创建成功后会自动打开下载窗口,保存私钥到本地磁盘,后面用来ssh登录虚拟机。

[caption id="attachment_126" align="alignnone" width="733"]下载私钥 下载私钥[/caption]

6.创建虚拟机

点击openstack dashboard左侧的compute,在点击展开后的“实例”选项,点击右侧的 “启动云主机”选项,打开新建虚拟机的窗口。

[caption id="attachment_131" align="alignnone" width="728"]虚拟机详情 虚拟机详情[/caption]

依次填入云主机名称,选择云主机类型,启动源,镜像名称等选项,选择上方的“访问&安全”选项,选择前面创建的密钥对。

[caption id="attachment_132" align="alignnone" width="728"]选择密钥对 选择密钥对[/caption]

然后下一步,点击“网络”选项,选择前面创建的网络。

[caption id="attachment_133" align="alignnone" width="728"]选择网络 选择网络[/caption]

其他选项可以忽略,直接点击“运行”按钮,完成创建后如下图所示:

[caption id="attachment_134" align="alignnone" width="728"]创建成功 创建成功[/caption]

7.绑定floating ip

选择虚拟机最后行的动作中的“绑定浮动ip”

[caption id="attachment_135" align="alignnone" width="353"]浮动ip 浮动ip[/caption]

打开绑定浮动ip的窗口,如果没有分配过浮动ip,需要点击下图的“+”号,分配一个浮动ip

[caption id="attachment_136" align="alignnone" width="727"]绑定浮动ip 绑定浮动ip[/caption]

关联成功后如下图所示,图中的红色标记既为分配到的浮动ip,可以通过这个地址远程访问虚拟机。

[caption id="attachment_137" align="alignnone" width="734"]关联完成 关联完成[/caption]

8.设置安全组规则

点击openstack dashboard左侧的compute,在点击展开后的“访问&安全”选项,选择 “安全组”选项,点击管理规则,打开规则的新窗口。

[caption id="attachment_138" align="alignnone" width="743"]19 安全组[/caption]

点击“添加规则”按钮,依次添加ICMP出入站规则和SSH规则。

[caption id="attachment_139" align="alignnone" width="744"]20 添加规则[/caption]

[caption id="attachment_140" align="alignnone" width="730"]ICMP规则 ICMP规则[/caption]

[caption id="attachment_141" align="alignnone" width="728"]ICMP规则 ICMP规则[/caption]

[caption id="attachment_142" align="alignnone" width="728"]SSH规则 SSH规则[/caption]

至此,openstack上的设置全部完成,我们已经可以在本地计算机ping通虚拟机的floating ip。

[caption id="attachment_143" align="alignnone" width="667"]ping通浮动ip ping通浮动ip[/caption]

9.SSH登录虚拟机

打开PuTTYGen,首先导入前面保存的私钥。导入的时候选择所有文件,这样才能导入openstack的密钥 *.pem

[caption id="attachment_146" align="alignnone" width="483"]导入私钥 导入私钥[/caption]

导入成功后保存私钥为putty使用的格式(经测试putty直接使用openstack的私钥*.pem会报错)

[caption id="attachment_147" align="alignnone" width="482"]保存私钥为putty的格式 保存私钥为putty的格式[/caption]

保存成功后打开putty导入保存的私钥。

[caption id="attachment_148" align="alignnone" width="456"]putty导入私钥 putty导入私钥[/caption]

转到Session,输入floating ip登录

[caption id="attachment_149" align="alignnone" width="456"]floating ip登录 floating ip登录[/caption]

连接成功后使用用户名“centos”,无需密码即可登录。

[caption id="attachment_150" align="alignnone" width="667"]登录成功 登录成功[/caption]

 

附录:

RSA加密算法