82 lines
3.7 KiB
Bash
Executable File
82 lines
3.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# load venv and credentials
|
|
source /home/openstack/kolla_ussuri/bin/activate
|
|
source /etc/kolla/admin-openrc.sh
|
|
|
|
# vars
|
|
OPENSTACK_CLI=openstack
|
|
EXT_NET_CIDR='192.168.140.0/24'
|
|
EXT_NET_RANGE='start=192.168.140.200,end=192.168.140.254'
|
|
EXT_NET_GATEWAY='192.168.140.1'
|
|
PROJECT='test'
|
|
ACCOUNT='tseed'
|
|
ACCOUNT_PASSWORD='Password0'
|
|
ACCOUNT_EMAIL='toby.n.seed@gmail.com'
|
|
|
|
# check cluster
|
|
$OPENSTACK_CLI host list
|
|
$OPENSTACK_CLI hypervisor list
|
|
$OPENSTACK_CLI user list
|
|
|
|
# provider network
|
|
$OPENSTACK_CLI network create --external --share --provider-physical-network physnet1 --provider-network-type flat provider_network
|
|
$OPENSTACK_CLI subnet create --dhcp --network provider_network --subnet-range ${EXT_NET_CIDR} --gateway ${EXT_NET_GATEWAY} --allocation-pool ${EXT_NET_RANGE} provider_subnet
|
|
|
|
# create project
|
|
$OPENSTACK_CLI project create --domain default --description "guest project" $PROJECT
|
|
|
|
# set quota on project
|
|
$OPENSTACK_CLI quota set --instances 10 $PROJECT
|
|
$OPENSTACK_CLI quota set --cores 4 $PROJECT
|
|
$OPENSTACK_CLI quota set --ram 6144 $PROJECT
|
|
$OPENSTACK_CLI quota set --gigabytes 30 $PROJECT
|
|
$OPENSTACK_CLI quota set --volumes 10 $PROJECT
|
|
$OPENSTACK_CLI quota set --backups 0 $PROJECT
|
|
$OPENSTACK_CLI quota set --snapshots 0 $PROJECT
|
|
$OPENSTACK_CLI quota set --key-pairs 20 $PROJECT
|
|
$OPENSTACK_CLI quota set --floating-ips 20 $PROJECT
|
|
$OPENSTACK_CLI quota set --networks 10 $PROJECT
|
|
$OPENSTACK_CLI quota set --routers 10 $PROJECT
|
|
$OPENSTACK_CLI quota set --subnets 10 $PROJECT
|
|
$OPENSTACK_CLI quota set --secgroups 20 $PROJECT
|
|
$OPENSTACK_CLI quota set --secgroup-rules 100 $PROJECT
|
|
|
|
# create user
|
|
$OPENSTACK_CLI user create --password ${ACCOUNT_PASSWORD} --email ${ACCOUNT_EMAIL} $ACCOUNT
|
|
|
|
# set the default project in the web console for user
|
|
$OPENSTACK_CLI user set --project $PROJECT $ACCOUNT
|
|
$OPENSTACK_CLI project show $(openstack user show $ACCOUNT --domain default -f json | jq -r .default_project_id) -f json | jq -r .description
|
|
|
|
# set RBAC for guest project
|
|
$OPENSTACK_CLI role add --project $PROJECT --user $ACCOUNT admin
|
|
|
|
# download the cirros test image for admin project
|
|
wget http://download.cirros-cloud.net/0.5.1/cirros-0.5.1-x86_64-disk.img
|
|
$OPENSTACK_CLI image create --disk-format qcow2 --container-format bare --private --project admin --property os_type=linux --file ./cirros-0.5.1-x86_64-disk.img cirros-0.5.1
|
|
|
|
# download the ubuntu image for all projects
|
|
wget https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.img
|
|
$OPENSTACK_CLI image create --disk-format qcow2 --container-format bare --public --property os_type=linux --file ./bionic-server-cloudimg-amd64.img ubuntu_18.04
|
|
|
|
# create a flavour for the admin project
|
|
$OPENSTACK_CLI flavor create admin.tiny --ram 1048 --disk 1 --vcpus 2 --private --project admin
|
|
|
|
# create flavours for the guest project
|
|
$OPENSTACK_CLI flavor create m1.tiny --ram 512 --disk 5 --vcpus 1 --private --project $PROJECT
|
|
$OPENSTACK_CLI flavor create m1.smaller --ram 1024 --disk 10 --vcpus 1 --private --project $PROJECT
|
|
|
|
# collect vars
|
|
export PROJECT=$PROJECT
|
|
export ACCOUNT=$ACCOUNT
|
|
export ACCOUNT_PASSWORD=$ACCOUNT_PASSWORD
|
|
export AUTH_URL=$(openstack endpoint list -f json | jq -r '.[] | select(."Service Name" == "keystone" and ."Interface" == "public") | .URL')
|
|
export PROVIDER_NET_ID=$(openstack network list -f json | jq -r '.[] | select(."Name" == "provider_network") | .ID')
|
|
export IMAGE=$(openstack image list -f json | jq -r '.[] | select(."Name" == "ubuntu_18.04") | .ID')
|
|
export FLAVOR=$(openstack flavor list --all -f json | jq -r '.[] | select(."Name" == "m1.tiny") | .ID')
|
|
export PUB_KEY=$(cat /home/openstack/.ssh/id_rsa.pub)
|
|
|
|
# render terraform vars.tf
|
|
envsubst < /home/openstack/stack/vars.tf.envsubst > /home/openstack/stack/vars.tf
|