Skip to main content

Primary links

  • Home
  • AI
  • Kubernetes
  • Incus
  • Ansible
  • Terraform
  • OpenStack
  • Virtualization
  • Linux
  • SmartHome
  • HowTo

Misc

  • Linux
  • Hardware
  • Programming
  • Databases
  • Multimedia
  • Windows

Cloud

  • OpenStack
    • Application credentials
      • Create users application credentials
    • Authentificaton
    • Barbican (Secret)
    • CLI client (OSC)
    • Cleanup OpenStack
    • Cloud images
    • Designate (DNSaaS)
    • DevStack
    • Gerrit / OpenDev
    • Glance (image)
    • Heat
    • Horizon
    • Ironic / Bifrost
    • Magnum
    • MicroStack
    • Mistral
    • Neutron (network)
    • Object storage
    • Octavia (loadbalancer)
    • OpenStack GPU passthrough
    • OpenvSwitch (OVS)
    • Quota
    • RabbitMQ
    • VPN
    • block storage volume (cinder)
    • compute (nova)
    • control
    • diskimage-builder
    • flavor
    • gnocchi
    • kolla-ansible
    • project
    • resource provider
    • server (VM)
    • user
  • cloud-config
  • nextcloud

Virtualization

  • Virtualization
  • Incus
  • Docker
  • KVM
  • Kubernetes
  • LXC
  • LXD
  • QEMU
  • VMware
  • VirtualBox
  • multipass
  • podman
  • vagrant
  • XEN

Network

  • DNS
  • Firewall
  • Linux
  • OpenvSwitch
  • SSL
  • VLAN
  • VPN
  • iPXE
  • namespaces
  • nmcli
  • tcpdump

Storage

  • CEPH
  • DRBD
  • LVM
  • S3
  • ZFS
  • btrfs

Automation / CI/CD

  • Install
  • Ansible
  • GitLab
  • LLM
  • Preseed
  • Puppet
  • Terraform
  • Ubuntu autoinstall

Monitoring / Visualisation

  • Grafana
  • Icinga
  • Prometheus
  • Monitoring
  • ELK
  • mermaid
  • openstack
  • keyclock

Single user

# user OS_TOKEN
export OS_TOKEN=gAAAAABjtUl_4LZr3iNqI7dOoBYMw-...

# cat ~/.config/openstack/clouds.yaml
clouds:
  dev-admin-token:
    auth:
      auth_url: https://keystone.service.examle.com/v3
    region_name: "eu-south"
    interface: "public"
    identity_api_version: 3
    project_domain_name: "my-foo"
    project_name: "foo"
    auth_type: "v3token"

OS_AC=$(openstack application credential create ${OS_AC_NAME} --unrestricted --os-cloud dev-admin-token -f json)

Multiple user

export OS_ENV=dev

export RESELLER="foo"
export KEYCLOAK_ADMIN_URL="https://keycloak.${OS_ENV}.example.com"
export KEYCLOAK_ADMIN_USER="keycloak"
export KEYCLOAK_ADMIN_PASSWORD=$(grep keycloak_password /etc/keycloak/keycloak-client.properties | cut -d" " -f3)
export KEYSTONE_SP_ID="keystone.service.${OS_ENV}.example.com"

ADMIN_TOKEN=$(curl -d "client_id=admin-cli" -s -d "username=$KEYCLOAK_ADMIN_USER" -d "password=$KEYCLOAK_ADMIN_PASSWORD" -d "grant_type=password" "$KEYCLOAK_ADMIN_URL/auth/realms/master/protocol/openid-connect/token" | jq -r .access_token)
KEYSTONE_CLIENT_ID=$(curl -s -H "Authorization: Bearer $ADMIN_TOKEN" "$KEYCLOAK_ADMIN_URL/auth/admin/realms/$RESELLER/clients?clientId=$KEYSTONE_SP_ID&viewableOnly=true" | jq -r ".[0].id")
KEYSTONE_CLIENT_SECRET=$(curl -s -H "Authorization: Bearer $ADMIN_TOKEN" "$KEYCLOAK_ADMIN_URL/auth/admin/realms/$RESELLER/clients/$KEYSTONE_CLIENT_ID/client-secret" | jq -r ".value")


KEYCLOAK_USER_NAME=foo
KEYCLOAK_USER_PASSWORD=pass1234

KEYCLOAK_KEYSTONE_SCOPED_TOKEN=$(curl -d "client_id=$KEYSTONE_SP_ID" -d "client_secret=$KEYSTONE_CLIENT_SECRET" -s -d "username=$KEYCLOAK_USER_NAME" -d "password=$KEYCLOAK_USER_PASSWORD" -d "grant_type=password" -d "scope=openid email profile" "$KEYCLOAK_ADMIN_URL/auth/realms/$RESELLER/protocol/openid-connect/token" | jq -r ".access_token")
export OS_TOKEN=$(curl -g -i -s -D -x-suebject-token -X POST https://$KEYSTONE_SP_ID/v3/OS-FEDERATION/identity_providers/my-foo/protocols/openid/auth -H "Authorization: Bearer $KEYCLOAK_KEYSTONE_SCOPED_TOKEN" | grep x-subject-token: | cut -d" " -f2 | tr -d '\r')

export OS_AUTH_URL=https://keystone.service.${OS_ENV}.example.com/v3
export OS_REGION_NAME=eu-south
export OS_INTERFACE=public
export OS_IDENTITY_API_VERSION=3
export OS_PROJECT_DOMAIN_NAME=foo
export OS_PROJECT_NAME=bar
export OS_AUTH_TYPE=v3token

OS_AC_NAME=my-${OS_ENV}-${KEYCLOAK_USER_NAME}-ac
OS_AC=$(openstack application credential create ${OS_AC_NAME} --unrestricted -f json)
OS_AC_ID=$(echo ${OS_AC} | jq -r .id)
OS_AC_SECRET=$(echo ${OS_AC} | jq -r .secret)

mkdir -p /home/${KEYCLOAK_USER_NAME}/.config/openstack

cat <> /home/${KEYCLOAK_USER_NAME}/.config/openstack/clouds.yaml
clouds:
  ${OS_AC_NAME}:
    auth:
      auth_url: https://keystone.service.dev.example.com/v3
      application_credential_id: "${OS_AC_ID}"
      application_credential_secret: "${OS_AC_SECRET}"
    region_name: "eu-south"
    interface: "public"
    identity_api_version: 3
    auth_type: "v3applicationcredential"
EOF

chown -R ${KEYCLOAK_USER_NAME}. /home/${KEYCLOAK_USER_NAME}/.config

echo "export OS_CLOUD=${OS_AC_NAME}" >> /home/${KEYCLOAK_USER_NAME}/.bashrc

# optional: execute user postdeploy script
su -l ${KEYCLOAK_USER_NAME} -c ~/${OS_AC_NAME}-postdeploy.sh"
Profiles GitHub StackOverflow LinkedIn Xing
Contact Imprint
© panticz 2026

Cookie-Einstellungen

Diese Website nutzt eingebettete Inhalte von Drittanbietern (z.B. YouTube, SoundCloud). Beim Laden dieser Inhalte werden Daten an die jeweiligen Anbieter übermittelt. Datenverarbeitungserklärung