Skip to content

Instantly share code, notes, and snippets.

@ishikawa84g
Last active December 25, 2015 01:49
Show Gist options
  • Save ishikawa84g/6897607 to your computer and use it in GitHub Desktop.
Save ishikawa84g/6897607 to your computer and use it in GitHub Desktop.
DevStack から抽出した Keystone 初期化用のあれ。 Nova, Glance, Keystone, Cinder, Neutron, Ceilometer のみ。ちょっと書き換え。気に食わない部分は多々あるけどとりあえず動く。
#!/bin/bash
# --------
# Defaults
# --------
ADMIN_PASSWORD=${ADMIN_PASSWORD:-secret}
SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD}
export SERVICE_TOKEN=ADMIN
export SERVICE_ENDPOINT=http://127.0.0.1:35357/v2.0
SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}
KEYSTONE_SERVICE_PROTOCOL=http
KEYSTONE_AUTH_PROTOCOL=http
NOVA_SERVICE_PROTOCOL=http
CINDER_SERVICE_PROTOCOL=http
GLANCE_SERVICE_PROTOCOL=http
CEILOMETER_SERVICE_PROTOCOL=http
NEUTRON_SERVICE_PROTOCOL=http
EC2_SERVICE_PROTOCOL=http
IDENTITY_API_VERSION=2.0
REGION=RegionOne
SERVICE_HOST=127.0.0.1
KEYSTONE_SERVICE_HOST=${SERVICE_HOST:-127.0.0.1}
KEYSTONE_SERVICE_INT_HOST=${KEYSTONE_SERVICE_HOST:-127.0.0.1}
KEYSTONE_SERVICE_ADMIN_HOST=${KEYSTONE_SERVICE_HOST:-127.0.0.1}
GLANCE_SERVICE_HOST=${SERVICE_HOST:-127.0.0.1}
GLANCE_SERVICE_INT_HOST=${GLANCE_SERVICE_HOST:-127.0.0.1}
GLANCE_SERVICE_ADMIN_HOST=${GLANCE_SERVICE_HOST:-127.0.0.1}
CEILOMETER_SERVICE_HOST=${SERVICE_HOST:-127.0.0.1}
CEILOMETER_SERVICE_INT_HOST=${CEILOMETER_SERVICE_HOST:-127.0.0.1}
CEILOMETER_SERVICE_ADMIN_HOST=${CEILOMETER_SERVICE_HOST:-127.0.0.1}
NOVA_SERVICE_HOST=${SERVICE_HOST:-127.0.0.1}
NOVA_SERVICE_INT_HOST=${NOVA_SERVICE_HOST:-127.0.0.1}
NOVA_SERVICE_ADMIN_HOST=${NOVA_SERVICE_HOST:-127.0.0.1}
NEUTRON_SERVICE_HOST=${SERVICE_HOST:-127.0.0.1}
NEUTRON_SERVICE_INT_HOST=${NEUTRON_SERVICE_HOST:-127.0.0.1}
NEUTRON_SERVICE_ADMIN_HOST=${NEUTRON_SERVICE_HOST:-127.0.0.1}
EC2_SERVICE_HOST=${SERVICE_HOST:-127.0.0.1}
EC2_SERVICE_INT_HOST=${EC2_SERVICE_HOST:-127.0.0.1}
EC2_SERVICE_ADMIN_HOST=${EC2_SERVICE_HOST:-127.0.0.1}
CINDER_SERVICE_HOST=${SERVICE_HOST:-127.0.0.1}
CINDER_SERVICE_INT_HOST=${CINDER_SERVICE_HOST:-127.0.0.1}
CINDER_SERVICE_ADMIN_HOST=${CINDER_SERVICE_HOST:-127.0.0.1}
# ------------
# Function
# ------------
function get_id () {
echo `"$@" | awk '/ id / { print $4 }'`
}
# --------------------------------------
# Admin
# --------------------------------------
ADMIN_TENANT=$(get_id keystone tenant-create --name admin)
ADMIN_ROLE=$(get_id keystone role-create --name admin)
ADMIN_USER=$(get_id keystone user-create --name admin --pass "$ADMIN_PASSWORD" --email admin@localhost.localdomain)
keystone user-role-add --user-id $ADMIN_USER --role-id $ADMIN_ROLE --tenant-id $ADMIN_TENANT
# --------------------------------------
# Service
# --------------------------------------
SERVICE_TENANT=$(get_id keystone tenant-create --name $SERVICE_TENANT_NAME)
# --------------------------------------
# demo
# --------------------------------------
MEMBER_ROLE=$(keystone role-list | awk "/ _member_ / { print \$2 }")
DEMO_TENANT=$(get_id keystone tenant-create --name=demo)
DEMO_USER=$(get_id keystone user-create --name demo --pass "$ADMIN_PASSWORD" --email demo@localhost.localdomain)
keystone user-role-add --user-id $DEMO_USER --role-id $MEMBER_ROLE --tenant-id $DEMO_TENANT
keystone user-role-add --user-id $ADMIN_USER --role-id $ADMIN_ROLE --tenant-id $DEMO_TENANT
# --------------------------------------
# Services
# --------------------------------------
KEYSTONE_SERVICE=$(get_id keystone service-create --name keystone --type identity --description "Keystone Identity Service")
GLANCE_SERVICE=$(get_id keystone service-create --name=glance --type=image --description="Glance Image Service")
CEILOMETER_SERVICE=$(get_id keystone service-create --name=ceilometer --type=metering --description="Ceilometer Service")
NOVA_SERVICE=$(get_id keystone service-create --name=nova --type=compute --description="Nova Compute Service")
NOVA_V3_SERVICE=$(get_id keystone service-create --name=nova --type=computev3 --description="Nova Compute Service V3")
NEUTRON_SERVICE=$(get_id keystone service-create --name=neutron --type=network --description="Neutron Service")
EC2_SERVICE=$(get_id keystone service-create --name=ec2 --type=ec2 --description="EC2 Compatibility Layer")
CINDER_SERVICE=$(get_id keystone service-create --name=cinder --type=volume --description="Cinder Volume Service")
CINDER_V2_SERVICE=$(get_id keystone service-create --name=cinder --type=volumev2 --description="Cinder Volume Service V2")
# --------------------------------------
# Service Users
# --------------------------------------
NOVA_USER=$(get_id keystone user-create --name=nova --pass="$SERVICE_PASSWORD" --tenant_id $SERVICE_TENANT --email=nova@localhost.localdomain)
GLANCE_USER=$(get_id keystone user-create --name=glance --pass="$SERVICE_PASSWORD" --tenant_id $SERVICE_TENANT --email=glance@localhost.localdomain)
CEILOMETER_USER=$(get_id keystone user-create --name=ceilometer --pass="$SERVICE_PASSWORD" --tenant_id $SERVICE_TENANT --email=ceilometer@localhost.localdomain)
NEUTRON_USER=$(get_id keystone user-create --name=neutron --pass="$SERVICE_PASSWORD" --tenant_id $SERVICE_TENANT --email=neutron@localhost.localdomain)
CINDER_USER=$(get_id keystone user-create --name=cinder --pass="$SERVICE_PASSWORD" --tenant_id $SERVICE_TENANT --email=cinder@localhost.localdomain)
# --------------------------------------
# User role add
# --------------------------------------
keystone user-role-add --tenant-id $SERVICE_TENANT --role-id $ADMIN_ROLE --user-id $GLANCE_USER
keystone user-role-add --tenant-id $SERVICE_TENANT --role-id $ADMIN_ROLE --user-id $CEILOMETER_USER
keystone user-role-add --tenant-id $SERVICE_TENANT --role-id $ADMIN_ROLE --user-id $NOVA_USER
keystone user-role-add --tenant-id $SERVICE_TENANT --role-id $ADMIN_ROLE --user-id $NEUTRON_USER
keystone user-role-add --tenant-id $SERVICE_TENANT --role-id $ADMIN_ROLE --user-id $CINDER_USER
# --------------------------------------
# Endpoints
# --------------------------------------
keystone endpoint-create \
--region $REGION \
--service_id $KEYSTONE_SERVICE \
--publicurl "$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:5000/v$IDENTITY_API_VERSION" \
--adminurl "$KEYSTONE_AUTH_PROTOCOL://$KEYSTONE_SERVICE_ADMIN_HOST:35357/v$IDENTITY_API_VERSION" \
--internalurl "$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_INT_HOST:5000/v$IDENTITY_API_VERSION"
keystone endpoint-create \
--region $REGION \
--service_id $GLANCE_SERVICE \
--publicurl "$GLANCE_SERVICE_PROTOCOL://$GLANCE_SERVICE_HOST:9292" \
--adminurl "$GLANCE_SERVICE_PROTOCOL://$GLANCE_SERVICE_ADMIN_HOST:9292" \
--internalurl "$GLANCE_SERVICE_PROTOCOL://$GLANCE_SERVICE_INT_HOST:9292"
keystone endpoint-create \
--region $REGION \
--service_id $CEILOMETER_SERVICE \
--publicurl "$CEILOMETER_SERVICE_PROTOCOL://$CEILOMETER_SERVICE_HOST:8777" \
--adminurl "$CEILOMETER_SERVICE_PROTOCOL://$CEILOMETER_SERVICE_ADMIN_HOST:8777" \
--internalurl "$CEILOMETER_SERVICE_PROTOCOL://$CEILOMETER_SERVICE_INT_HOST:8777"
keystone endpoint-create \
--region $REGION \
--service_id $NOVA_SERVICE \
--publicurl "$NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_HOST:8774/v2/\$(tenant_id)s" \
--adminurl "$NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_ADMIN_HOST:8774/v2/\$(tenant_id)s" \
--internalurl "$NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_INT_HOST:8774/v2/\$(tenant_id)s"
keystone endpoint-create \
--region $REGION \
--service_id $NOVA_V3_SERVICE \
--publicurl "$NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_HOST:8774/v3" \
--adminurl "$NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_ADMIN_HOST:8774/v3" \
--internalurl "$NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_INT_HOST:8774/v3"
keystone endpoint-create \
--region $REGION \
--service_id $NEUTRON_SERVICE \
--publicurl "$NEUTRON_SERVICE_PROTOCOL://$NEUTRON_SERVICE_HOST:9696" \
--adminurl "$NEUTRON_SERVICE_PROTOCOL://$NEUTRON_SERVICE_ADMIN_HOST:9696" \
--internalurl "$NEUTRON_SERVICE_PROTOCOL://$NEUTRON_SERVICE_INT_HOST:9696"
keystone endpoint-create \
--region $REGION \
--service_id $EC2_SERVICE \
--publicurl "$EC2_SERVICE_PROTOCOL://$EC2_SERVICE_HOST:8773/services/Cloud" \
--adminurl "$EC2_SERVICE_PROTOCOL://$EC2_SERVICE_ADMIN_HOST:8773/services/Admin" \
--internalurl "$EC2_SERVICE_PROTOCOL://$EC2_SERVICE_INT_HOST:8773/services/Cloud"
keystone endpoint-create \
--region $REGION \
--service_id $CINDER_SERVICE \
--publicurl "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:8776/v1/\$(tenant_id)s" \
--adminurl "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_ADMIN_HOST:8776/v1/\$(tenant_id)s" \
--internalurl "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_INT_HOST:8776/v1/\$(tenant_id)s"
keystone endpoint-create \
--region $REGION \
--service_id $CINDER_V2_SERVICE \
--publicurl "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:8776/v2/\$(tenant_id)s" \
--adminurl "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_ADMIN_HOST:8776/v2/\$(tenant_id)s" \
--internalurl "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_INT_HOST:8776/v2/\$(tenant_id)s"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment