OpenStack

Releases
https://releases.openstack.org/
https://releases.openstack.org/stein/index.html

Create VM

openstack keypair create foo-key --public-key ~/.ssh/id_rsa.pub

Change user / admin password

. /etc/kolla/admin-openrc.sh
openstack user password set --password new-password --original-password current-admin-password

Credentials

# connect to specific cloud
openstack server list --os-cloud=dev-foo
 
source /etc/kolla/admin-openrc.sh

CLI
https://docs.openstack.org/ocata/user-guide/cli-cheat-sheet.html
https://docs.openstack.org/queens/user/
https://docs.openstack.org/keystone/latest/admin/cli-manage-projects-users-and-roles.html
https://docs.openstack.org/python-openstackclient/latest/cli/command-list.html

Instance
https://docs.openstack.org/mitaka/install-guide-ubuntu/launch-instance.html

openstack image list
openstack network list
openstack keypair list

Ansible

https://github.com/panticz/ansible/tree/master/roles/devstack
pip install -U openstacksdk python-openstacksdk ansible

Cloud images
http://panticz.de/cloud-images

Cloud config
https://docs.openstack.org/nova/rocky/user/config-drive.html

old

sudo apt-get install git
git clone https://git.openstack.org/openstack-dev/devstack
 
cat <<EOF> local.conf 
[[local|localrc]]
ADMIN_PASSWORD=devstack
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
EOF
 
sudo devstack/tools/create-stack-user.sh
su stack
 
cd devstack
./stack.sh
 
ssh -N -L 8080:localhost:80 root@192.168.254.46
 
 
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=stack
export OS_AUTH_URL=http://localhost:35357/v2.0
 
nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
 
nova list
nova floating-ip-create public

Terraform
https://github.com/terraform-providers/terraform-provider-openstack/tree/master/examples/app-with-networking

Network
https://developer.openstack.org/firstapp-libcloud/networking.html

openstack network create worker_network
openstack subnet create worker_subnet --network worker_network --subnet-range 10.0.1.0/24
openstack router create project_router
openstack router set project_router --external-gateway public
openstack router add subnet project_router worker_subnet

# add floating IP pool

openstack subnet list
openstack subnet set --allocation-pool start=10.40.0.100,end=10.40.0.200 public1
openstack subnet show public1 -c allocation_pools -f value

Command line

sudo apt install -y python-magnumclient
pip install python-magnumclient

Microstack on Ubuntu

sudo snap install microstack --classic --candidate

cloud-init images
https://docs.openstack.org/image-guide/ubuntu-image.html

bash completion

openstack complete | sudo tee /etc/bash_completion.d/osc.bash_completion > /dev/null
. /etc/bash_completion

Project / User

openstack project list --domain example.com
openstack domain create example.com
openstack project create openstack --domain example.com
openstack role add --user foo --project openstack admin

Connect to a (cirros) VM without floating IP

cirros password: gocubsgo
for ROUTER in $(ip netns | grep qrouter | cut -d" " -f1); do
    ip netns exec ${ROUTER} ssh cirros@${VM_IP}
done

endpoint
https://docs.openstack.org/security-guide/api-endpoints/api-endpoint-configuration-recommendations.html

openstack endpoint list | grep keystone
openstack service list
 
openstack endpoint list | grep 5000
openstack endpoint create identity --region RegionOne internal http://10.0.2.111:5000
 
openstack endpoint list | grep identity
openstack endpoint set --url http://10.0.2.10:5000 --interface public ab00147b8bf44319bf14927d74582359

Nested virtualisation
https://docs.openstack.org/devstack/latest/guides/devstack-with-nested-kvm.html

cat <<EOF>> /etc/modprobe.d/kvm.conf
options kvm_intel nested=1
options kvm_amd nested=1
EOF
 
# modprobe kvm-intel
reboot
cat /sys/module/kvm_intel/parameters/nested
 
# nested networking (disable security on external port)
openstack port set --disable-port-security openstack-net-ext-port1

Object storage

openstack container create bucket1
openstack object create bucket1 /etc/fstab --name fstab

Mailinglist
http://paste.openstack.org/

Module

openstack versions show
openstack module list

Direct database access

# neutron
DB_PASS=$(grep neutron_database_password /etc/kolla/passwords.yml | cut -d " " -f2)
mysql -h db.service.i.ewcs.ch --password=${DB_PASS} -P 6033 -u neutron -D neutron
mysql -B -h db.service.i.ewcs.ch --password=${DB_PASS} -P 6033 -u neutron -D neutron -e "select * from floatingips"
 
# octavia
DB_PASS=$(grep octavia_database_password /etc/kolla/passwords.yml | cut -d " " -f2)
mysql -h db.service.i.ewcs.ch --password=${DB_PASS} -P 6033 -u octavia -D octavia
select * from load_balancer;
 
# service
openstack service list --long
 
# project
openstack project list --my-projects

user

# show user roles
MGMT_USER_ID=b912ba4325fbb6c18483602245f9b515b
openstack role assignment list --user ${MGMT_USER_ID} --names

Secret

openstack secret get --payload_content_type application/octet-stream --file /tmp/file1.out https://barbican.service.example.com/v1/secrets/fc9918f28076-05ae-4ad1-b54d-64e4bb48

Project

PROJECT_ID=$(openstack project list -c ID -f value)
echo ${PROJECT_ID}

Quota
https://docs.openstack.org/ocata/user-guide/cli-cheat-sheet.html
https://docs.openstack.org/nova/latest/admin/quotas.html

openstack quota show
openstack quota show ${PROJECT_ID}
 
# show default quota
penstack quota show --default
 
# set quotas
openstack quota set --class --instances 20 default
openstack quota set --class --cores 	20 default
openstack quota set --class --ram 	$((68 * 1024)) default
 
openstack quota show
openstack quota set --class --gigabytes 10000 default
 
# show quota (admin only)
openstack quota list --project ${PROJECT_ID} --detail --compute 
openstack quota list --project ${PROJECT_ID} --detail --network 
openstack quota list --project ${PROJECT_ID} --detail --volume 
 
# set quota
openstack quota set --secgroups -1 service
openstack quota set --cores -1 service
openstack quota set --ram -1 service
openstack quota set --floating-ips -1 service

Releases
https://releases.openstack.org/teams/octavia.html#rocky

Parameter / configuration
https://github.com/openstack/kolla-ansible/blob/master/ansible/group_vars/all.yml

Project

openstack project set --domain foo --name bar-dev bar

Policy

# grep member /etc/kolla -r 
horizon/local_settings:OPENSTACK_KEYSTONE_DEFAULT_ROLE = "_member_"
 
# docker exec -i neutron_server oslopolicy-policy-generator --namespace neutron | egrep 'create_floatingip|^"(admin_only|context_is_admin)'
"context_is_admin": "role:admin"
"create_floatingip:floating_ip_address": "rule:admin_only"
"admin_only": "rule:context_is_admin"
"create_floatingip": "rule:regular_user"
"create_floatingip_port_forwarding": "rule:admin_or_ext_parent_owner"

Links
https://www.openstack.org/software/
http://docs.openstack.org/developer/devstack/guides/single-vm.html
http://docs.openstack.org/liberty/install-guide-ubuntu/
http://docs.openstack.org/developer/devstack/
https://www.ubuntu.com/cloud
https://trickycloud.wordpress.com/