您的位置:首页 > 运维架构

OpenStack L版官网配置转载(二)

2017-03-03 16:05 471 查看
KeyStone安装与部署

控制节点:

完成下面的步骤以创建数据库:

用数据库连接客户端以 root 用户连接到数据库服务器:

$ mysql -u root -p


创建 keystone 数据库:

CREATE DATABASE keystone;


对keystone数据库授予恰当的权限:

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'KEYSTONE_DBPASS';

用合适的密码替换 KEYSTONE_DBPASS 。

退出数据库客户端。

运行以下命令来安装包。

# yum install openstack-keystone httpd mod_wsgi \
memcached python-memcached


启动Memcached服务,并且配置它随机启动。

# systemctl enable memcached.service
# systemctl start memcached.service


编辑文件 /etc/keystone/keystone.conf 并完成如下动作:

在[DEFAULT]部分,定义管理员token初始值:

[DEFAULT]
...
admin_token = ADMIN_TOKEN

用你在前一步生成的随机数替换 ADMIN_TOKEN 。

在 [database] 部分,配置数据库访问:

[database]
...
connection = mysql://keystone:KEYSTONE_DBPASS@controller/keystone

将 KEYSTONE_DBPASS 替换为你为数据库选择的密码。

在[memcache] 部分,配置Memcached服务:

[memcache]
...
servers = localhost:11211


在[token]部分,配置 UUID token provider 和Memcached 驱动:

[token]
...
provider = uuid
driver = memcache


在 [revoke] 部分,配置SQL 回滚驱动:

[revoke]
...
driver = sql


(可选的)为帮助排错,在 “[DEFAULT]”部分启用详细日志。

[DEFAULT]
...
verbose = True


初始化身份认证服务的数据库:

# su -s /bin/sh -c "keystone-manage db_sync" keystone


配置 Apache HTTP 服务器

控制节点:

编辑/etc/httpd/conf/httpd.conf`文件,配置ServerName选项为控制节点:

ServerName controller


用下面的内容创建文件 /etc/httpd/conf.d/wsgi-keystone.conf。

Listen 5000
Listen 35357

<VirtualHost *:5000>
WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-public
WSGIScriptAlias / /usr/bin/keystone-wsgi-public
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
<IfVersion >= 2.4>
ErrorLogFormat "%{cu}t %M"
</IfVersion>
ErrorLog /var/log/httpd/keystone-error.log
CustomLog /var/log/httpd/keystone-access.log combined

<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>
</VirtualHost>

<VirtualHost *:35357>
WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-admin
WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
<IfVersion >= 2.4>
ErrorLogFormat "%{cu}t %M"
</IfVersion>
ErrorLog /var/log/httpd/keystone-error.log
CustomLog /var/log/httpd/keystone-access.log combined

<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>
</VirtualHost>


启动 Apache HTTP 服务并配置其随系统启动:

# systemctl enable httpd.service
# systemctl start httpd.service


创建服务实体和API端点

配置认证令牌:

$ export OS_TOKEN=ADMIN_TOKEN


将ADMIN_TOKEN替换为你在 :doc:keystone-install章节中生成的认证令牌。例如:

$ export OS_TOKEN=294a4c8a8a475f9b9836


配置端点URL:

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


配置认证 API 版本:

export OS_IDENTITY_API_VERSION=3


在你的Openstack环境中,认证服务管理服务目录。服务使用这个目录来决定您的环境中可用的服务。

为身份认证服务创建服务实体:

$ openstack service create \
--name keystone --description "OpenStack Identity" identity
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Identity               |
| enabled     | True                             |
| id          | 4ddaae90388b4ebc9d252ec2252d8d10 |
| name        | keystone                         |
| type        | identity                         |
+-------------+----------------------------------+


身份认证服务管理了一个与您环境相关的 API 端点的目录。服务使用这个目录来决定如何与您环境中的其他服务进行通信。

OpenStack使用三个API端点变种代表每种服务:admin,internal和public。默认情况下,管理API端点允许修改用户和租户而公共和内部APIs不允许这些操作。在生产环境中,处于安全原因,变种为了服务不同类型的用户可能驻留在单独的网络上。对实例而言,公共API网络为了让顾客管理他们自己的云在互联网上是可见的。管理API网络在管理云基础设施的组织中操作也是有所限制的。内部API网络可能会被限制在包含OpenStack服务的主机上。此外,OpenStack支持可伸缩性的多区域。为了简单起见,本指南为所有端点变种和默认``RegionOne``区域都使用管理网络。

创建认证服务的 API 端点:

$ openstack endpoint create --region RegionOne \
identity public http://controller:5000/v2.0 +--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 30fff543e7dc4b7d9a0fb13791b78bf4 |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 8c8c0927262a45ad9066cfe70d46892c |
| service_name | keystone                         |
| service_type | identity                         |
| url          | http://controller:5000/v2.0      |
+--------------+----------------------------------+

$ openstack endpoint create --region RegionOne \
identity internal http://controller:5000/v2.0 +--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 57cfa543e7dc4b712c0ab137911bc4fe |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 6f8de927262ac12f6066cfe70d99ac51 |
| service_name | keystone                         |
| service_type | identity                         |
| url          | http://controller:5000/v2.0      |
+--------------+----------------------------------+

$ openstack endpoint create --region RegionOne \
identity admin http://controller:35357/v2.0 +--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 78c3dfa3e7dc44c98ab1b1379122ecb1 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 34ab3d27262ac449cba6cfe704dbc11f |
| service_name | keystone                         |
| service_type | identity                         |
| url          | http://controller:35357/v2.0     |
+--------------+----------------------------------+


创建项目、用户和角色

在你的环境中,为进行管理操作,创建管理的项目、用户和角色:

创建 admin 项目:

$ openstack project create --domain default \
--description "Admin Project" admin
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Admin Project                    |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 343d245e850143a096806dfaefa9afdc |
| is_domain   | False                            |
| name        | admin                            |
| parent_id   | None                             |
+-------------+----------------------------------+


创建 admin 用户:

$ openstack role create admin
+-------+----------------------------------+
| Field | Value                            |
+-------+----------------------------------+
| id    | cd2cb9a39e874ea69e5d4b896eb16128 |
| name  | admin                            |
+-------+----------------------------------+


添加admin角色到 admin 项目和用户上:

$ openstack role add --project admin --user admin admin


本指南使用一个你添加到你的环境中每个服务包含独有用户的service 项目。创建service项目:

$ openstack project create --domain default \
--description "Service Project" service
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 894cdfa366d34e9d835d3de01e752262 |
| is_domain   | False                            |
| name        | service                          |
| parent_id   | None                             |
+-------------+----------------------------------+


常规(非管理)任务应该使用无特权的项目和用户。作为例子,本指南创建 demo 项目和用户。

创建demo项目:

$ openstack project create --domain default \
--description "Demo Project" demo
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Demo Project                     |
| domain_id   | default                          |
| enabled     | True                             |
| id          | ed0b60bf607743088218b0a533d5943f |
| is_domain   | False                            |
| name        | demo                             |
| parent_id   | None                             |
+-------------+----------------------------------+


创建demo用户:

$ openstack user create --domain default \
--password-prompt demo
User Password:
Repeat User Password:
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | default                          |
| enabled   | True                             |
| id        | 58126687cbcc4888bfa9ab73a2256f27 |
| name      | demo                             |
+-----------+----------------------------------+


创建 user 角色:

$ openstack role create user
+-------+----------------------------------+
| Field | Value                            |
+-------+----------------------------------+
| id    | 997ce8d05fc143ac97d83fdfb5998552 |
| name  | user                             |
+-------+----------------------------------+


添加 user角色到 demo 项目和用户:

$ openstack role add --project demo --user demo user


因为安全性的原因,关闭临时认证令牌机制:

编辑/usr/share/keystone/keystone-dist-paste.ini文件,从[pipeline:public_api],[pipeline:admin_api]和[pipeline:api_v3]部分删除admin_token_auth。

重置OS_TOKEN和OS_URL环境变量:

$ unset OS_TOKEN OS_URL


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

$ openstack --os-auth-url http://controller:35357/v3 \
--os-project-domain-id default --os-user-domain-id default \
--os-project-name admin --os-username admin --os-auth-type password \
token issue
Password:
+------------+----------------------------------+
| Field      | Value                            |
+------------+----------------------------------+
| expires    | 2015-03-24T18:55:01Z             |
| id         | ff5ed908984c4a4190f584d826d75fed |
| project_id | cf12a15c5ea84b019aec3dc45580896b |
| user_id    | 4d411f2291f34941b30eef9bd797505a |
+------------+----------------------------------+


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

$ openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-id default --os-user-domain-id default \
--os-project-name demo --os-username demo --os-auth-type password \
token issue
Password:
+------------+----------------------------------+
| Field      | Value                            |
+------------+----------------------------------+
| expires    | 2014-10-10T12:51:33Z             |
| id         | 1b87ceae9e08411ba4a16e4dada04802 |
| project_id | 4aa51bb942be4dd0ac0555d7591f80a6 |
| user_id    | 7004dfa0dda84d63aef81cf7f100af01 |
+------------+----------------------------------+


创建 OpenStack 客户端环境脚本

编辑文件admin-openrc.sh并添加如下内容:

export OS_PROJECT_DOMAIN_ID=default
export OS_USER_DOMAIN_ID=default
export OS_PROJECT_NAME=admin
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3

将 ADMIN_PASS 替换为你在认证服务中为 admin 用户选择的密码。

编辑文件 demo-openrc.sh 并添加如下内容:

export OS_PROJECT_DOMAIN_ID=default
export OS_USER_DOMAIN_ID=default
export OS_PROJECT_NAME=demo
export OS_TENANT_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

将 DEMO_PASS 替换为你在认证服务中为 demo 用户选择的密码。

加载admin-openrc.sh文件来身份认证服务的环境变量位置和admin项目和用户证书:

$ source admin-openrc.sh


请求认证令牌:

$ openstack token issue
+------------+----------------------------------+
| Field      | Value                            |
+------------+----------------------------------+
| expires    | 2015-03-25T01:45:49.950092Z      |
| id         | cd4110152ac24bdeaa82e1443c910c36 |
| project_id | cf12a15c5ea84b019aec3dc45580896b |
| user_id    | 4d411f2291f34941b30eef9bd797505a |
+------------+----------------------------------+
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  openstack