#!/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