OpenStack keystone节点搭建(官方2018年4月)

参考文档:https://docs.openstack.org/install-guide/common/conventions.html
https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/
OpenStack各服务下载表:https://docs.openstack.org/install-guide/get-started-with-openstack.html
2018年4月30号官方出的教程:https://docs.openstack.org/install-guide/openstack-services.html


声明:
任何用户(包括root用户)都可以运行以$提示为前缀的命令
root用户必须运行带有前缀的命令 # 提示符,还可以使用sudo 命令为这些命令添加前缀(如果可用)以运行它们。
OpenStack和配套服务在安装和操作过程中需要管理员权限。
安装前按需关闭防火墙和selinux
# vi /etc/selinux/config
SELINUX=disabled
# systemctl stop firewalld
# systemctl enable firewalld

-----------------------------------------------------------------------------------------------------------------------------------------------------

服务名                项目名称

仪表盘         -------->    Horizon
    提供了一个基于web的自服务门户,与OpenStack底层服务交互,诸如启动一个实例,分配IP地址以及配置访问控制。

Compute      -------->     Nova
    在OpenStack环境中计算实例的生命周期管理。按需响应包括生成、调度、回收虚拟机等操作。

Networking      -------->    Neutron
    确保为其它OpenStack服务提供网络连接即服务,为用户提供API定义网络和使用。基于插件的架构其支持众多的网络提供商和技术

Object Storage  -------->    Swift
    通过一个 RESTful,基于HTTP的应用程序接口存储和任意检索的非结构化数据对象。它拥有高容错机制,基于数据复制和可扩展架构。它的实现像是一个文件服务器需要挂载目录。
    在此种方式下,它写入对象和文件到多个硬盘中,以确保数据是在集群内跨服务器的多份复制。

Block Storage    -------->    Cinder
    为运行实例而提供的持久性块存储。它的可插拔驱动架构的功能有助于创建和管理块存储设备。

Identity service   -------->    Keystone
    为其他OpenStack服务提供认证和授权服务,为所有的OpenStack服务提供一个端点目录。

Image service    -------->   Glance
    存储 和 检索 虚拟机 磁盘镜像,OpenStack计算会在实例部署时使用此服务。

Telemetry      -------->   Ceilometer
为OpenStack云的计费、基准、扩展性以及统计等目的提供 监测 和 计量。

Orchestration    -------->    Heat
    既可以使用本地 :term:`HOT <Heat Orchestration Template (HOT)>`模板格式,亦可使用AWS CloudFormation模板格式,来编排多个综合的云应用,
    通过OpenStack本地REST API或者是CloudFormation相兼容的队列API。

在对这些OpenStack服务基础安装,配置,操作和故障诊断熟悉后,使用生产架构部署时你应该考虑下面的几个步骤。
确定并实施必要的核心和可选服务,以满足性能和冗余要求。
使用诸如防火墙,加密和服务策略的方式加强安全。
使用自动化工具,如 Ansible,Chef , Puppet 或者Salt实现自动部署和管理生产环境。

-----------------------------------------------------------------------------------------------------------------------------------------------------

硬件需求:(官网的要求配置)      ########### 需要细化硬件 ############
Controller Node节点:(控制节点) -01号虚机
控制节点运行身份认证服务,镜像服务,管理部分计算和网络服务,不同的网络代理和仪表盘。同样包括像SQL数据库, :term:`message queue`和 :term:`NTP`这样的支撑服务。
可选的:可以在控制节点允许块存储,对象存储,Orchestration和Telemetry服务。
控制节点需要最少两块网卡。

Computer Node1节点:(计算节点) -02号虚机
计算节点运行操作实例的 :term:`hypervisor`计算部分。默认情况下使用 :term:`KVM <kernel-based VM (KVM)>`作为hypervisor。
计算节点同样运行网络服务代理,用来连接实例到虚拟网络,通过:term:`security groups <security group>`为实例提供防火墙服务:instances via
可以部署超过1个计算节点。每个节点要求最少两个网络接口。

Block Storage Node1节点:(块设备存储节点) -03号虚机
该可选的块存储节点包含磁盘,块存储服务会向实例提供这些磁盘。
简单起见,计算节点和这个节点间的服务流量使用管理网络。
生产环境中应该实施单独的存储网络以增强性能和安全。
可以部署超过一个块存储节点。每个节点要求至少一个网卡接口。

Object Storage Node1:(对象存储节点) -04号虚机
该可选的对象存储节点包含磁盘,对象存储服务用来存储账号,容器和对象。
简单起见,计算节点和这个节点间的服务流量使用管理网络。
生产环境中应该实施单独的存储网络以增强性能和安全。
这个服务要求两个节点。每个节点要求最少一个网络接口。你可以部署超过两个对象存储节点。

-----------------------------------------------------------------------------------------------------------------------------------------------------

安全方面:
OpenStack 服务支持各种各样的安全方式,包括密码 password、policy 和 encryption,支持的服务包括数据库服务器,且消息 broker 至少支持 password 的安全方式。
随机生成密码:
$ openssl rand -hex 10

-----------------------------------------------------------------------------------------------------------------------------------------------------

密码方面:
  密码                        描述
数据库密码(不使用变量)      数据库的根密码
ADMIN_PASS           用户密码 admin
CINDER_DBPASS         块存储服务的数据库密码
CINDER_PASS           块存储服务用户的密码 cinder
DASH_DBPASS                 仪表板的数据库密码
DEMO_PASS           用户密码 demo
GLANCE_DBPASS Image        服务的数据库密码
GLANCE_PASS                  图像服务用户的密码 glance
KEYSTONE_DBPASS                       身份服务的数据库密码
METADATA_SECRET                       元数据代理的秘密
NEUTRON_DBPASS                         网络服务的数据库密码
NEUTRON_PASS                              网络服务用户的密码 neutron
NOVA_DBPASS                                 计算服务的数据库密码
NOVA_PASS                                      计算服务用户的密码 nova
PLACEMENT_PASS                          展示位置服务用户的密码 placement
RABBIT_PASS                                   RabbitMQ用户的密码 openstack
-----------------------------------------------------------------------------------------------------------------------------------------------------

网络方面:

公网: 192.168.0.0/24 段
    Gateway:192.168.0.2
私网: 172.16.0.0 /24 段
    Gateway:172.16.0.1 /24

-----------------------------------------------------------------------------------------------------------------------------------------------------

首先安装keystone节点:

 带#号的都是要执行的命令

机器的准备:
该实验用到的虚机: VMware 12 pro 、 所有"系统"都是centos7.4
因为虚拟机都是克隆的,所以要先把克隆的机器进行更改
1、 克隆出来的虚机在网卡配置文件里边把 UUID 和 HWADDR 删除,如没有HWADDR可执行下列命令:
# systemctl start NetworkManager
# systemctl enable NetworkManager
# systemctl enable NetworkManager-wait-online.service
# nmtui
// 执行该命令可打开 "网络管理器",把不用的网卡或MAC地址删除后reboot即可
Controller节点:
      公网:192.168.0.11/24
      私网:172.16.0.11/24
      GATEWAY=172.16.0.1
computer节点:
      公网:192.168.0.22/24
      私网:172.16.0.22/24
      GATEWAY=172.16.0.1
Block Storage Node 1:(可选节点)
      私网:172.16.0.33/24
      GATEWAY=172.16.0.1
Object Storage Node 1:
      私网:172.16.0.44/24
      GATEWAY=172.16.0.1
Object Storage Node 2:
      私网:172.16.0.55/24
      GATEWAY=172.16.0.1

这个网络需要一个网关为所有节点提供内部的管理目的的访问,例如包的安装、安全更新、 DNS,和 NTP。
网络接口由发行版的不同而有各种名称。为了覆盖到所有不同的名称,该文档将数字最小的网络接口引用为第一个接口,第二个接口则为更大数字的接口。
每个节点除了 IP 地址之外,还必须能够解析其他节点的名称。例如,controller这个名称必须解析为 172.16.0.11,即控制节点上的管理网络接口的 IP 地址。
Controller上:
# vi /etc/hosts (追加进去以下内容)
      172.16.0.11    ControllerNode
      172.16.0.22    ComputerNode1
      172.16.0.33    BlockStorage
      172.16.0.44    Object_Node1
发送到各个其他节点上:
# scp /etc/hosts 172.16.0.22:/etc/hosts
# scp /etc/hosts 172.16.0.33:/etc/hosts
# scp /etc/hosts 172.16.0.44:/etc/hosts
# scp /etc/hosts 172.16.0.55:/etc/hosts

验证连通性:
从 controller 节点,测试能否连接到 Internet
从 controller 节点,测试到 compute 节点管理网络是否连通
从 controller 节点,测试到其他节点是否连通
从 compute 节点测试能否连接到 Internet
从 compute 节点测试到 controller 节点管理网络是否连通
从 compute 节点测试到其他节点是否连通

-----------------------------------------------------------------------------------------------------------------------------------------------------
安装网络时间协议(NTP)
controller节点:
# vim /etc/chrony.conf
    // 将原来的4个时间地址池注释掉
    server news.neu.edu.cn iburst
    server 202.120.2.101 iburst
    server 192.168.0.11 iburst        # 换成时间服务器的IP地址或者主机名(建议是IP)
    allow 172.16.0.0/24                # 找到该项取消注释和改成内网网段
// 注意:默认情况下,控制器节点通过公用服务器池同步时间。但是,您可以选择配置其他服务器,例如您的组织提供的服务器。
# chronyc sources # 出现下面提示即配置完成
    210 Number of sources = 2
    MS Name/IP address Stratum Poll Reach LastRx Last sample
    ===============================================================================
    ^? 202.120.2.101.dns.sjtu.e> 0 8 0 - +0ns[ +0ns] +/- 0ns
    ^* news.neu.edu.cn 2 6 77 24 -73us[-1382us] +/- 23ms
重启和加入开机自启:
# systemctl restart chronyd.service {stop | start}
# systemctl enable chronyd.service
---------------------------------------------------------
其他所有节点安装NTP:
# vim /etc/chrony.conf
    server controller iburst        # 将自带的时间池注释掉,写入该句
    allow 172.16.0.0/24
# chronyc sources          # 出现下面的提示即配置完成
    210 Number of sources = 1
    MS Name/IP address Stratum Poll Reach LastRx Last sample
    ===============================================================================
    ^* ControllerNode 3 6 37 18 -1609ns[ -44us] +/- 24ms
开启和加入开机自启:
# systemctl start chronyd.service
# systemctl enable chronyd.service

-----------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------

安装 openstack :(在Controller上执行)
这里说的OpenStack包安装,需要在controller,computer和Block Storage节点上完成。
# yum -y install vim lrzsz wget (该命令非必须)
# yum -y install centos-release-openstack-pike
# yum upgrade
# reboot
安装Openstack客户端:
# yum -y install python-openstackclient
安装 openstack-selinux软件包以自动管理OpenStack服务的安全策略:
# yum -y install openstack-selinux

安装数据库:(在Controller上执行)
# yum -y install mariadb mariadb-server python2-PyMySQL

创建并编辑 vim /etc/my.cnf.d/openstack.cnf 文件(如果需要请备份 /etc/my.cnf.d 中的配置文件)
创建一个[mysqld]节,并将bind-address 密钥设置为控制器节点的管理IP地址,以便其他节点通过管理网络进行访问。设置其他键以启用有用的选项和UTF-8字符集:
[mysqld]
bind-address = 172.16.0.11 # controller节点的IP

default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8

启动数据库服务并将其加入到开启自启中:
# systemctl start mariadb.service
# systemctl enable mariadb.service
初始化数据库:
# mysql_secure_installation (密码:123456)
(实验中是 回车 --->y--->y--->n--->n--->y)
########################################################################################
问题:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
解决方法:
# systemctl stop mariadb.service
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking & (这里执行完以后记住后台编号,待会按编号杀掉进程)
# mysql -u root mysql
# MariaDB [mysql]> UPDATE user SET Password=PASSWORD('123456') where USER='root'; #将root密码设置成123456
# MariaDB [mysql]> flush privileges;
# [root@ControllerNode ~]# mysql -u root -p #再次登录
Enter password: (这里输入123456)
MariaDB [(none)]> quit # 退出MariaDB
########################################################################################

-----------------------------------------------------------------------------------------------------------------------------------------------------
消息队列方面:(在Controller上执行)
安装软件包:
# yum -y install rabbitmq-server
开启并加入到开机自启:
# systemctl start rabbitmq-server.service
# systemctl enable rabbitmq-server.service
添加openstack用户:
# rabbitmqctl add_user openstack 123456 (密码:123456)
  Creating user "openstack" ...
允许用户进行配置,写入和读取访问 openstack:
# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
  Setting permissions for user "openstack" in vhost "/" ...
-----------------------------------------------------------------------------------------------------------------------------------------------------
安装Memcached:(在Controller上执行)
服务的身份认证服务使用Memcached缓存令牌。memcached服务通常在控制器节点上运行。对于在生产部署建议启用防火墙,身份验证和加密的组合来保护它。
# yum install memcached python-memcached
编辑vim /etc/sysconfig/memcached文件:
配置服务以使用控制器节点的管理IP地址。这是为了使其他节点能够通过管理网络进行访问:
OPTIONS="-l 172.16.0.11,::1,ControllerNode"        # 这里是controller节点上的内网IP,后面的ControllerNode是controller节点上的主机名

启动Memcached服务并加入到开机自启:
# systemctl start memcached.service
# systemctl enable memcached.service
-----------------------------------------------------------------------------------------------------------------------------------------------------
安装ETCD:(在Controller上执行)
OpenStack服务可能使用Etcd,这是一个分布式可靠的键值存储,用于分布式密钥锁定,存储配置,跟踪服务的实时性和其他场景。
# yum -y install etcd
# vim /etc/etcd/etcd.conf
#[Member]  (这里星号不去掉)
    ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
    ETCD_LISTEN_PEER_URLS="http://172.16.0.11:2380" # Controller的IP地址
    ETCD_LISTEN_CLIENT_URLS="http://172.16.0.11:2379" # Controller的IP地址
    ETCD_NAME="ControllerNode" # Controller的主机名
#[Clustering]  (这里星号不去掉)
    ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.16.0.11:2380" # Controller的IP地址
    ETCD_ADVERTISE_CLIENT_URLS="http://172.16.0.11:2379" # Controller的IP地址
    ETCD_INITIAL_CLUSTER="ControllerNode=http://172.16.0.11:2380" # ControllerNode是Controller端的主机名后面是ControllerNode的IP地址
    ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
    ETCD_INITIAL_CLUSTER_STATE="new"
# systemctl start etcd
# systemctl enable etcd
-----------------------------------------------------------------------------------------------------------------------------------------------------
安装OpenStack服务:(在Controller上执行)

Keystone安装:
OpenStack身份识别服务为管理身份验证,授权和服务目录提供了单点集成。
身份服务通常是用户与之交互的第一个服务。一旦通过身份验证,最终用户就可以使用他们的身份访问其他OpenStack服务。
同样,其他OpenStack服务利用身份服务来确保用户是他们所说的人,并发现部署中其他服务的位置。身份识别服务还可以与一些外部用户管理系统(如LDAP)集成。
用户和服务可以通过使用由身份服务管理的服务目录来定位其他服务。顾名思义,服务目录是OpenStack部署中可用服务的集合。
每个服务可以有一个或多个端点,每个端点可以是以下三种类型之一:admin,internal或public。
在生产环境中,出于安全原因,不同类型的终端类型可能会驻留在暴露给不同类型用户的单独网络中。
例如,公共API网络可能在互联网上可见,因此客户可以管理他们的云。管理API网络可能仅限于管理云基础架构的组织中的运营商。内部API网络可能仅限于包含OpenStack服务的主机。
另外,OpenStack支持多个区域的可伸缩性。RegionOne地区。在身份服务中创建的区域,服务和端点一起构成部署的服务目录。
部署中的每个OpenStack服务都需要一个服务条目,并在Identity服务中存储相应的端点。这可以在Identity Service安装和配置完成后完成。

身份服务包含以下组件:
服务器:集中式服务器使用RESTful接口提供认证和授权服务。
驱动程序:驱动程序或服务后端集成到中央服务器。它们用于访问OpenStack外部的存储库中的身份信息,并且可能已经存在于部署OpenStack的基础架构(例如SQL数据库或LDAP服务器)中。
模块:中间件模块运行在使用Identity服务的OpenStack组件的地址空间中。这些模块拦截服务请求,提取用户凭据并将其发送到中央服务器进行授权。中间件模块和OpenStack组件之间的集成使用Python Web服务器网关接口。

在安装和配置Identity Service之前必须创建一个数据库(在Controller上执行)
# mysql -u root -p (root身份)
创建keystone数据库:
# create database keystone;
对keystone数据库授予适当访问权限:
# grant all privileges on keystone.* to 'keystone'@'localhost' identified by '123456';
# grant all privileges on keystone.* to 'keystone'@'%' identified by '123456';
# exit
-----------------------------------------------------------------------------------------------------------------------------------------------------
安装和配置的部件:(在Controller上执行)
默认配置文件因分布而异。您可能需要添加这些部分和选项,而不是修改现有部分和选项。此外,...配置片段中的省略号()指示您应该保留的潜在默认配置选项。
注意:
因使用Apache HTTP服务器mod_wsgi在端口5000和35357上提供身份服务请求。默认情况下 keystone 服务仍监听这些端口。
因此,需要手动禁用 keystone 服务。
安装软件包:
# yum -y install openstack-keystone httpd mod_wsgi
# vim /etc/keystone/keystone.conf
[database]
connection = mysql+pymysql://keystone:123456@ControllerNode/keystone        # 在原句上改(不要留原句)大约在661行,keystone是数据库名,123456是登陆数据库密码,后面是主机名
[token]
provider = fernet            # 在原句上改(不要留原句)大约在2759行
填充身份服务数据库:
# su -s /bin/sh -c "keystone-manage db_sync" keystone
(执行上句时记得在xshell下再开个窗口监视 tail -f /var/log/keystone/keystone.log 的变化,这里容易出错)
初始化Fernet密钥存储库:
# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
引导身份服务:
# keystone-manage bootstrap --bootstrap-password 123456 \        (123456为管理用户自定义密码)
--bootstrap-admin-url http://ControllerNode:35357/v3/ \           (ControllerNode是主机名)
--bootstrap-internal-url http://ControllerNode:5000/v3/ \           (ControllerNode是主机名)
--bootstrap-public-url http://ControllerNode:5000/v3/ \             (ControllerNode是主机名)
--bootstrap-region-id RegionOne
-----------------------------------------------------------------------------------------------------------------------------------------------------
配置Apache HTTP服务器:
# vim /etc/httpd/conf/httpd.conf
将 ServerName www.example.com:80 改成 ServerName ControllerNode      (记得备份原句,大约在95行)

创建一个指向 /usr/share/keystone/wsgi-keystone.conf 文件的链接:
# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

启动apache和加入到开机自启中:
# systemctl start httpd.service     {stop | restart}
# systemctl enable httpd.service

配置管理帐户:
# export OS_USERNAME=admin                   # 定义账户为admin
# export OS_PASSWORD=123456                    # admin的密码为123456
# export OS_PROJECT_NAME=admin            # 项目名也是admin
# export OS_USER_DOMAIN_NAME=Default          # 账户域名为默认
# export OS_PROJECT_DOMAIN_NAME=Default        # 账户项目域名为默认
# export OS_AUTH_URL=http://ControllerNode:35357/v3   # 验证地址为Controller节点地址加端口
# export OS_IDENTITY_API_VERSION=3 # 系统身份接口版本为3版本
-----------------------------------------------------------------------------------------------------------------------------------------------------
创建一个项目,域,用户和角色:
身份服务为每个OpenStack服务提供身份验证服务。身份验证服务使用域,项目,用户和角色的组合。
该教程使用一个服务项目,其中包含您添加到环境中的每项服务的唯一用户。
创建service 项目:
# openstack project create --domain default --description "Service-test-opop" service
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Service-test-opop |
| domain_id | default |
| enabled | True |
| id | 8b06044323804d88a939fa47074cf44c |
| is_domain | False |
| name | service |
| parent_id | default |
+-------------+----------------------------------+
普通(非管理员)任务应该使用非特权项目和用户。该文档只创建demo测试项目和用户。

创建demo项目:
# openstack project create --domain default --description "Demo Project" demo
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Demo Project |
| domain_id | default |
| enabled | True |
| id | 29dba8a787e640548114a79945a4a502 |
| is_domain | False |
| name | demo |
| parent_id | default |
+-------------+----------------------------------+

查看项目列表:
# openstack project list
+----------------------------------+---------+
| ID | Name |
+----------------------------------+---------+
| 29dba8a787e640548114a79945a4a502 | demo |
| 7225a7921e4147ea9d2e216541f751c5 | admin |
| 8b06044323804d88a939fa47074cf44c | service |
+----------------------------------+---------+

创建demo用户:
# openstack user create --domain default --password-prompt demo
User Password: (这里自定义密码,我这里定义的是123456)
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | 6e9709521df14504912ce1e33cbcde38 |
| name | demo |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+

创建角色:
# openstack role create weixiao
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | None |
| id | b99cc97b7a464f70b1d24cd6225d7077 |
| name | weixiao |
+-----------+----------------------------------+.

将 weixiao 角色添加到 demo 项目和用户:
# openstack role add --project demo --user demo weixiao      (该命令不提供输出)
查看用户列表:
# openstack user list
+----------------------------------+-------+
| ID | Name |
+----------------------------------+-------+
| 6e9709521df14504912ce1e33cbcde38 | demo |
| ed35e3ec4c644cfda8d23770d39d80fc | admin |
+----------------------------------+-------+
注:可以重复此过程来创建其他项目和用户....!!!!!!!!!!!!!

-----------------------------------------------------------------------------------------------------------------------------------------------------
验证操作:(在安装其他服务之前验证身份服务的操作)
在控制器节点上执行以下命令:
取消设置临时变量 OS_AUTH_URL 和 OS_PASSWORD 环境变量:
# unset OS_AUTH_URL
# unset OS_AUTH_URL OS_PASSWORD
作为admin用户,请求身份验证令牌:
# openstack --os-auth-url http://ControllerNode:35357/v3/ \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name admin --os-username admin token issue
Password: (改行是提示,密码是admin的密码123456)
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| expires | 2018-05-04T09:01:38+0000 |
| id | gAAAAABa7BNipHeRyoqOKFqBZb5a6J-73S7CBPjyKpjQDOat2-aXRj6Pp6zkL8rABk9sE5wSZ0cCBzUDXJoXZOvnZp2BiKMeqNTkTYzimbBsrYywmBOzhcb9O1DVqZFoGT_7X_b-arj13YmyvvkH0V9IHtczHFOprmNVh3QZu5PCLQDAuLa2ay8 |
| project_id | 7225a7921e4147ea9d2e216541f751c5 |
| user_id | ed35e3ec4c644cfda8d23770d39d80fc |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

作为demo用户,请求身份验证令牌:
# openstack --os-auth-url http://ControllerNode:5000/v3/ --os-project-domain-name Default --os-user-domain-name Default --os-project-name demo --os-username demo token issue
Password:      (这里是demo用户的密码123456,)
// 此命令使用demo 用户和API端口5000 的密码,该端口只允许对Identity Service API进行常规(非管理员)访问。
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| expires | 2018-05-04T09:06:36+0000 |
| id | gAAAAABa7BSMaoQXELgoMN2fGqaBVhGr-paTmH0nIsUyKLY6Gf23tvs5jNdjYtbyvH0j_Vi99Og1Srq4uVjQ-fyEXr8VZihbjftsX-CIqzKYZXvmVF2fikU-If8EL8upmqlHY5PYGocLkbloXHAYu9OcWcNFgTJgFift3EYDCZ82l855oY01Ijk |
| project_id | 29dba8a787e640548114a79945a4a502 |
| user_id | 6e9709521df14504912ce1e33cbcde38 |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


----------------------------------------------------------- 华丽的分隔符 --------------------------------------------------------------------------------------
----------------------------------------------------------- 华丽的分隔符 --------------------------------------------------------------------------------------
创建OpenStack客户端环境脚本:
前面的部分使用了环境变量和命令选项的组合来通过openstack客户端与Identity服务进行交互 。为了提高客户端操作的效率,OpenStack支持简单的客户端环境脚本,也称为OpenRC文件。这些脚本通常包含所有客户端的常用选项,但也支持独特的选项。
有关更多信息,请参阅https://docs.openstack.org/queens/user/

创建脚本:
原文:Create client environment scripts for the admin and demo projects and users. Future portions of this guide reference these scripts to load appropriate credentials for client operations.
创建客户端环境的脚本admin和demo 项目和用户。该教程的未来部分引用这些脚本来为客户端操作加载适当的凭据。

随便找个位置(自己知道在哪就行)创建并编辑 admin-openrc文件并添加以下内容:
(客户端也支持使用clouds.yaml文件,请参阅:https://docs.openstack.org/os-client-config/latest/)
# vim 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=123456 (密码是admin的密码123456)
    export OS_AUTH_URL=http://ControllerNode:35357/v3 (ControllerNode是controller端的主机名)
    export OS_IDENTITY_API_VERSION=3
    export OS_IMAGE_API_VERSION=2
# chmod 755 admin-openrc    (给脚本赋权限)
# vim 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=123456
    export OS_AUTH_URL=http://ControllerNode:5000/v3
    export OS_IDENTITY_API_VERSION=3
    export OS_IMAGE_API_VERSION=2
# chmod 755 demo-openrc
使用脚本:
要以特定项目和用户身份运行客户端,只需在运行客户端环境脚本之前加载相关的客户端环境脚本即可。
例如:加载admin-openrc文件以使用Identity服务的位置以及admin项目和用户凭据填充环境变量:
# . admin-openrc    (前面的点不要忘记)
请求身份验证令牌:
# openstack token issue

          后续其他节点文档会抓紧跟上....

猜你喜欢

转载自www.cnblogs.com/smlile-you-me/p/8992061.html