OpenStack_Havana_Install_guide的keystone脚本2

本文介绍了一个用于配置OpenStack环境中各项服务及其端点的Shell脚本。该脚本通过定义MySQL数据库连接参数及Keystone认证服务的相关配置来创建并设置OpenStack的服务组件和访问端点。

endpoint.sh


内容:直接帖上来就是发不了

#!/bin/sh
#
# Keystone basic Endpoints

# Mainly inspired by https://github.com/openstack/keystone/blob/master/tools/sample_data.sh

# Modified by Bilel Msekni / Institut Telecom
#
# Support: openstack@lists.launchpad.net
# License: Apache Software License (ASL) 2.0
#

# Host address
#LOCAL_IP=10.10.100.51
#PUBLIC_IP=192.168.100.51

# MySQL definitions
MYSQL_USER=keystone
MYSQL_DATABASE=keystone
MYSQL_HOST=$LOCAL_IP
MYSQL_PASSWORD=$MYSQL_PASS

# Keystone definitions
KEYSTONE_REGION=RegionOne
#export SERVICE_TOKEN=ADMIN
export SERVICE_ENDPOINT="http://${LOCAL_IP}:35357/v2.0"

while getopts "u:D:p:m:K:R:E:T:vh" opt; do
  case $opt in
    u)
      MYSQL_USER=$OPTARG
      ;;
    D)
      MYSQL_DATABASE=$OPTARG
      ;;
    p)
      MYSQL_PASSWORD=$OPTARG
      ;;
    m)
      MYSQL_HOST=$OPTARG
      ;;
    K)
      MASTER=$OPTARG
      ;;
    R)
      KEYSTONE_REGION=$OPTARG
      ;;
    E)
      export SERVICE_ENDPOINT=$OPTARG
      ;;
    T)
      export SERVICE_TOKEN=$OPTARG
      ;;
    v)
      set -x
      ;;
    h)
      cat <&2
      exit 1
      ;;
    :)
      echo "Option -$OPTARG requires an argument" >&2
      exit 1
      ;;
  esac
done  

if [ -z "$KEYSTONE_REGION" ]; then
  echo "Keystone region not set. Please set with -R option or set KEYSTONE_REGION variable." >&2
  missing_args="true"
fi

if [ -z "$SERVICE_TOKEN" ]; then
  echo "Keystone service token not set. Please set with -T option or set SERVICE_TOKEN variable." >&2
  missing_args="true"
fi

if [ -z "$SERVICE_ENDPOINT" ]; then
  echo "Keystone service endpoint not set. Please set with -E option or set SERVICE_ENDPOINT variable." >&2
  missing_args="true"
fi

if [ -z "$MYSQL_PASSWORD" ]; then
  echo "MySQL password not set. Please set with -p option or set MYSQL_PASSWORD variable." >&2
  missing_args="true"
fi

if [ -n "$missing_args" ]; then
  exit 1
fi
 
keystone service-create --name nova --type compute --description 'OpenStack Compute Service'
keystone service-create --name cinder --type volume --description 'OpenStack Volume Service'
keystone service-create --name glance --type image --description 'OpenStack Image Service'
keystone service-create --name keystone --type identity --description 'OpenStack Identity'
keystone service-create --name ec2 --type ec2 --description 'OpenStack EC2 service'
keystone service-create --name neutron --type network --description 'OpenStack Networking service'
keystone service-create --name ceilometer --type metering --description="Ceilometer Metering Service"

create_endpoint () {
  case $1 in
    compute)
    keystone endpoint-create --region $KEYSTONE_REGION --service-id $2 --publicurl 'http://'"$PUBLIC_IP"':8774/v2/$(tenant_id)s' --adminurl 'http://'"$LOCAL_IP"':8774/v2/$(tenant_id)s' --internalurl 'http://'"$LOCAL_IP"':8774/v2/$(tenant_id)s'
    ;;
    volume)
    keystone endpoint-create --region $KEYSTONE_REGION --service-id $2 --publicurl 'http://'"$PUBLIC_IP"':8776/v1/$(tenant_id)s' --adminurl 'http://'"$LOCAL_IP"':8776/v1/$(tenant_id)s' --internalurl 'http://'"$LOCAL_IP"':8776/v1/$(tenant_id)s'
    ;;
    image)
    keystone endpoint-create --region $KEYSTONE_REGION --service-id $2 --publicurl 'http://'"$PUBLIC_IP"':9292/v2' --adminurl 'http://'"$LOCAL_IP"':9292/v2' --internalurl 'http://'"$LOCAL_IP"':9292/v2'
    ;;
    identity)
    keystone endpoint-create --region $KEYSTONE_REGION --service-id $2 --publicurl 'http://'"$PUBLIC_IP"':5000/v2.0' --adminurl 'http://'"$LOCAL_IP"':35357/v2.0' --internalurl 'http://'"$LOCAL_IP"':5000/v2.0'
    ;;
    ec2)
    keystone endpoint-create --region $KEYSTONE_REGION --service-id $2 --publicurl 'http://'"$PUBLIC_IP"':8773/services/Cloud' --adminurl 'http://'"$LOCAL_IP"':8773/services/Admin' --internalurl 'http://'"$LOCAL_IP"':8773/services/Cloud'
    ;;
    network)
    keystone endpoint-create --region $KEYSTONE_REGION --service-id $2 --publicurl 'http://'"$PUBLIC_IP"':9696/' --adminurl 'http://'"$LOCAL_IP"':9696/' --internalurl 'http://'"$LOCAL_IP"':9696/'
    ;;
    metering)
    keystone endpoint-create --region $KEYSTONE_REGION --service-id $2 --publicurl 'http://'"$PUBLIC_IP"':8777/' --adminurl 'http://'"$LOCAL_IP"':8777/' --internalurl 'http://'"$LOCAL_IP"':8777/' 
	;;  
	esac
}

for i in compute volume image object-store identity ec2 network metering; do
  id=`mysql -h "$MYSQL_HOST" -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE" -ss -e "SELECT id FROM service WHERE type='"$i"';"` || exit 1
  create_endpoint $i $id
done


<think>我们正在讨论Kolla-ansible中的配置项`openstack_region_name`。根据用户提供的引用和之前的问题,我们需要解释这个配置项的作用。在OpenStack中,一个区域(Region)通常代表一个地理上的数据中心或一个独立的可用性区域。`openstack_region_name`配置项在Kolla-ansible中用于设置OpenStack部署的默认区域名称。作用:1.**标识部署区域**:为整个OpenStack云环境设置一个逻辑区域名称。例如,可以设置为"RegionOne"(默认值)或自定义名称如"Beijing"。2.**多区域部署基础**:当需要部署多个区域(如多个数据中心)时,每个区域应有唯一名称以实现跨区域资源管理。3.**服务端点关联**:OpenStack服务端点(Endpoint)的注册会关联到该区域(参考引用[1]中`openstackendpointcreate`命令的`--region`参数)[^1]。4.**资源隔离与定位**:用户创建资源(如实例、卷)时,资源默认归属于该区域,便于在多区域环境中定位资源。配置示例:在`globals.yml`中设置:```yamlopenstack_region_name:"RegionOne"```注意事项:-默认值为`"RegionOne"`,多数单节点部署无需修改。-多区域部署时需确保各区域名称唯一,并通过`openstackendpointcreate`显式注册跨区域服务端点[^1]。相关问题:1.如何修改现有OpenStack部署的区域名称?2.多区域部署中Glance镜像如何共享?3.`openstack_region_name`与`nova_region_name`配置项有何区别?</think>### Kolla中`openstack_region_name`配置项详解 #### 核心作用 `openstack_region_name`是Kolla-ansible部署OpenStack时的**区域标识符配置项**,主要功能如下: 1. **定义地理/逻辑区域** 为OpenStack云设置唯一区域名称(如`RegionOne`),标识物理数据中心或逻辑分区。这是多区域部署的基础标识[^2][^4]。 2. **服务端点注册** 控制服务API端点的注册位置(参考引用[1]的`openstack endpoint create`命令)。例如: ```bash openstack endpoint create --region {{openstack_region_name}} placement public http://controller:8778 ``` 该配置确保所有服务端点(Nova, Glance等)统一注册到指定区域[^1]。 3. **多区域协同** 当需要跨数据中心部署时(如北京+上海双区域),通过不同区域的`openstack_region_name`实现: ```yaml # 北京区域globals.yml openstack_region_name: "Beijing" # 上海区域globals.yml openstack_region_name: "Shanghai" ``` 4. **资源隔离与路由** 影响用户操作: - `openstack server list`默认显示当前区域资源 - `openstack --os-region-name Shanghai image list`可跨区域查询 #### 配置方法 在`globals.yml`中设置(引用[2][4]): ```yaml openstack_region_name: "RegionOne" # 默认值,建议按实际修改 ``` 需注意: - **首次部署时定义**:区域名称写入数据库后不宜修改 - **与Keystone同步**:所有服务注册端点时必须使用相同区域名 #### 典型场景示例 | **场景** | **配置值** | **影响** | |------------------------|---------------------|------------------------------| | 单数据中心 | `RegionOne` (默认) | 所有服务注册到同一区域 | | 开发测试环境 | `DevRegion` | 与生产环境隔离 | | 多区域灾难恢复 | `PrimarySite`/`DRSite` | 实现跨区域资源迁移 | > **重要提示**:若未显式配置,Kolla将使用默认值`RegionOne`。但实际部署中建议明确命名(如`Beijing-DC1`)以避免混淆[^4]。 #### 故障案例 用户曾因区域名不一致导致服务不可用: - 控制节点配置`RegionOne` - 计算节点误配`RegionTwo` - 结果:Nova无法在`RegionTwo`找到Placement服务端点,实例创建失败[^3] *** ### 相关问题 1. 如何修改已部署OpenStack的区域名称? 2. 多区域部署时Glance镜像如何共享? 3. `openstack_region_name`与`nova_region_name`有何区别? 4. 区域名称是否影响Cinder卷的跨区域挂载? 5. 如何通过区域名称实现流量调度优化? [^1]: 服务端点注册与区域名称的关联性 [^2]: 多节点部署中区域标识的关键作用 [^3]: 配置不一致引发的服务故障案例 [^4]: Kolla-ansible配置项层级管理机制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值