openstack的部署和使用

来源:互联网 发布:购物车数据在哪里看 编辑:程序博客网 时间:2024/04/29 19:28
= openstack =
== packstack的介绍 ==
{{{
一句话:为openstack的一体化安装提供了方便,简化了整个openstack的安装.
如何安装packstack?执行如下命令:
[root@controller openstack]# yum install openstack-packstack -y
}}}
== openstack allinone式安装 ==
=== 环境准备 ===
{{{
环境的准备同非allinone模式下的一样,需要配置yum源,当然如果vm能与外网连通,可以不用配置本地yum源。
}}}
=== 开始安装 ===
{{{
[root@controller ~]# packstack --allinone

完成后会有安装成功的提示,并且生成了answer文件,以及openstack的管理员和demo用户的登陆信息,包括用户名、密码等信息。
}}}
== openstack 非allinone式安装 ==
=== 环境准备 ===
{{{
1.三台centos机器,这里使用虚拟化软件虚拟出来三台centos7 vm
2.规划:一台vm是控制节点(controller:192.168.99.194),一台vm是计算节点(nova:192.168.99.196),一台vm是网络节点(neutron:192.168.99.195)
3.各节点网络规划:控制节点一个网卡,nova 上两个网卡,一个是用来和controller通信的,一个是用作为vm之间的通信网络;neutron节点一样,两个网卡。
4.openstack 镜像准备:这里将openstack依赖的rpm包做成本地yum源,来供packstack安装过程中使用,例如:
/etc/yum.repos.d/CentOS-Media.repo文件中添加如下内容:
[Local-base]
name=CentOS-Local-Base /root/openstack
baseurl=file:///root/openstack
gpgcheck=0
gpgkey=file:///media/RPM-GPG-KEY-CentOS-7/RPM-GPG-KEY-CentOS-7

yum 源/root/openstack的制作:
[root@controller ~]# createrepo /root/openstack/  ------>其中/root/openstack下存放了openstack安装依赖的所有rpm包

创建完后,配置/etc/yum.repos.d/目录下的repo文件即可完成本地源的配置。

5.centos7 系统镜像准备:由于packstack安装过程中会安装一些依赖的包,把它也配置成yum源。
例如:
/etc/yum.repos.d/CentOS-Media.repo文件中添加如下内容:
[Local-ISO]
name=CentOS-Local-ISO /media/RPM-GPG-KEY-CentOS-7
baseurl=file:///media/RPM-GPG-KEY-CentOS-7
gpgcheck=1
gpgkey=file:///media/RPM-GPG-KEY-CentOS-7/RPM-GPG-KEY-CentOS-7



然后将系统iso文件mount到/media/RPM-GPG-KEY-CentOS-7目录下:
[root@controller ~]# mount /dev/sr0 /media/RPM-GPG-KEY-CentOS-7/

以上yum源的配置必须分别在controller、nova和neutron节点上配置,否则安装过程会因为包的依赖问题而安装失败。

6.配置ssh,避免packstack安装过程输入密码:
[root@controller ~]# ssh-keygen -t rsa ------>回车后,后边的都直接回车,不要输入什么东西,最后就可生成pub文件
[root@controller ~]# scp ./.ssh/id_rsa.pub  root@192.168.99.195:/root/.ssh/authorized_keys
[root@controller ~]# scp ./.ssh/id_rsa.pub  root@192.168.99.196:/root/.ssh/authorized_keys
}}}
=== 生成packstack需要的answer文件 ===
{{{
[root@localhost ~]# packstack --gen-answer-file=controlnode.txt ----->这个文件名任意
}}}
=== 修改answer文件 ===
{{{
修改如下介个字段的值为:
...
CONFIG_CONTROLLER_HOST=192.168.99.194
...
CONFIG_NETWORK_HOSTS=192.168.99.195
...
CONFIG_COMPUTE_HOSTS=192.168.99.196
...

# Private interface for Flat DHCP on the Nova compute servers
CONFIG_NOVA_COMPUTE_PRIVIF=ens160 ------>ens160是centos7的网卡名称,等同于eth0,叫法不一样而已。
# Public interface on the Nova network server
CONFIG_NOVA_NETWORK_PUBIF=ens192
# Private interface for network manager on the Nova network server
CONFIG_NOVA_NETWORK_PRIVIF=ens160
}}}
=== 开始安装openstack ===
{{{
[root@localhost ~]# packstack --answer-file=controlnode.txt
}}}
=== 安装可能遇到的问题 ===
{{{
}}}
== openstack api 使用 ==
=== 通过curl使用 ===
{{{
1.先生成一个X-Auth-Token值,然后使用这个认证的值调用相关的api接口
curl -k -X 'POST' -v http://192.168.99.194:5000/v2.0/tokens -d '{"auth":{"passwordCredentials":{"username": "guol", "password":"123456"\}\}\}' -H 'Content-type: application/json' | python -mjson.tool
这条命令输出:
* About to connect() to 192.168.99.194 port 5000 (#0)
*   Trying 192.168.99.194...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Connected to 192.168.99.194 (192.168.99.194) port 5000 (#0)
> POST /v2.0/tokens HTTP/1.1
> User-Agent: curl/7.29.0
> Host: 192.168.99.194:5000
> Accept: */*
> Content-type: application/json
> Content-Length: 85
>
} [data not shown]
* upload completely sent off: 85 out of 85 bytes
< HTTP/1.1 200 OK
< Date: Wed, 27 May 2015 09:15:12 GMT
< Server: Apache/2.4.6 (CentOS)
< Vary: X-Auth-Token
< Content-Length: 370
< Connection: close
< Content-Type: application/json
<
{ [data not shown]
100   455  100   370  100    85   2495    573 --:--:-- --:--:-- --:--:--  2534
* Closing connection 0
{
    "access": {
        "metadata": {
            "is_admin": 0,
            "roles": []
        },
        "serviceCatalog": [],
        "token": {
            "audit_ids": [
                "jnoADKPmT7yicWu3TO6sSw"
            ],
            "expires": "2015-05-27T10:15:12Z",
            "id": "24751190be2f473381e59f30ddf4f94a",
            "issued_at": "2015-05-27T09:15:12.668212"
        },
        "user": {
            "id": "2ae4534559934f28b17557c8acd5b71f",
            "name": "admin",
            "roles": [],
            "roles_links": [],
            "username": "admin"
        }
    }
}
找到token id:24751190be2f473381e59f30ddf4f94a
2.调用api
curl -X 'GET' -H  "X-Auth-Token:24751190be2f473381e59f30ddf4f94a" -v http://192.168.99.194:8774/v2.0/2ae4534559934f28b17557c8acd5b71f/servers | python -mjson.tool




但是有些节点还是无法通过调用api返回相应信息,当你按照api-doc接着调用compute、image、volume等下面的api接口时,会发现统统没有返回值,于是对于剩下的api接口是需要使用认证过的token才能使用的。所以:
[root@controller ~]# curl -X POST -d  '{"auth": {"tenantName": "admin", "passwordCredentials":{"username": "admin", "password": "8f92d8ae16f14fbd"\}\}\}' -H "Content-type: application/json" http://192.168.99.194:35357/v2.0/tokens | python -mjson.tool
获取租户的实例列表:
[root@controller ~]# curl -X 'GET' -H  "X-Auth-Token:991ad3803fda41f7a3c0be0e2eedf7fb" -v http://192.168.99.194:8774/v2/37faf0d026414384a4e73a18e7bf7275/servers | python -mjson.tool
获取某个实例的信息:
[root@controller ~]# curl -X 'GET' -H  "X-Auth-Token:991ad3803fda41f7a3c0be0e2eedf7fb" -v http://192.168.99.194:8774/v2/37faf0d026414384a4e73a18e7bf7275/servers/36bde079-6e77-4000-b7e6-d8602d758288 | python -mjson.tool
0 0
原创粉丝点击