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
  • 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: project

Create project

USER_ID=xxxxxxxxxx
PROJECT_ID=xxxxxxxxx

openstack project create foo-project --domain bar

ROLES="
creator
heat_stack_owner
load-balancer_member
member
_member_
"

for ROLE in ${ROLES}; do
    openstack role add --user ${USER_ID} --project ${PROJECT_ID} ${ROLE}
done

openstack role assignment list --names --user ${USER_ID}

OpenStack: Horizon

List templates

docker exec -it horizon bash
ls -l /var/lib/kolla/venv/lib/python2.7/site-packages/openstack_dashboard/themes

Configure theme
/etc/kolla/horizon/custom_local_settings

AVAILABLE_THEMES = [
    ('default', 'Default', 'themes/default'),
    ('foo_bar', 'Foo bar', 'themes/foo_bar')
]

SELECTABLE_THEMES = [
    ('foo_bar', 'Foo bar', 'themes/foo_bar')
]

DEFAULT_THEME = 'foo_bar'

restic

Install

sudo apt install -y restic

Configure systemd

cat < ~/.config/systemd/user/restic-backup.service
[Unit]
Description=Restic backup service

[Service]
Type=oneshot
Environment=BACKUP_PATHS="vault.pass vault-private.pass .gtkrc-2.0 .bashrc .icons .themes .thunderbird .config .ssh/config"
Environment=BACKUP_EXCLUDES="--exclude=Code --exclude=google-chrome --exclude=VirtualBox --exclude=ImapMail"
Environment=RETENTION_HOURS=8
Environment=RETENTION_DAYS=5
Environment=RETENTION_WEEKS=0
Environment=RETENTION_MONTHS=0
Environment=RETENTION_YEARS=0
Environment=RESTIC_REPOSITORY=%h/Backup
Environment=RESTIC_PASSWORD=sup3r_s3cr3t_r3p0_p4ssw0rd
ExecStart=restic backup --tag systemd.timer $BACKUP_EXCLUDES $BACKUP_PATHS
ExecStartPost=restic forget --tag systemd.timer --group-by "paths,tags" --prune --keep-hourly $RETENTION_HOURS --keep-daily $RETENTION_DAYS 
#--keep-weekly $RETENTION_WEEKS --keep-monthly $RETENTION_MONTHS --keep-yearly $RETENTION_YEARS
ExecStartPost=rsync -aHAXx --numeric-ids --delete --stats --info=progress2 --out-format="[%%t]:%%o:%%f:Last Modified %%M" --verbose -e "ssh -o Compression=no -x" "%h/Backup/" restic@BACKUP_SERVER_FQDN:/home/restic/HOSTNAME/
EOF
<code>

<strong>Links</strong>
https://www.geekbundle.org/backups-mit-restic/

Get server(s) power consumption

bmc_credentials.conf

export BMC_USER=ADMIN
export BMC_PASS=ADMIN

get-power-consumption.sh

#!/bin/bash

# source BMC credentials
. $(dirname "${BASH_SOURCE[0]}")/bmc_credentials.conf

if [ $# -eq 1 ]; then
    BMC_NODES="${1}"
else
    echo "Usage: $0 \"\""
    echo "e.g $0 \"10.0.0.1 \$(echo 10.0.2.{10..20})\""
    exit
fi

printf "%-40s %-10s %-10s\n" "Server" "Current" "AVG"
for BMC_NODE in ${BMC_NODES}; do
    POWER_CONSUMPTION=$(curl --connect-timeout 3 -s https://${BMC_NODE}/redfish/v1/Chassis/1/Power/ -k -u ${BMC_USER}:${BMC_PASS} | jq -r ".PowerControl[].PowerConsumedWatts")
    [ -z ${POWER_CONSUMPTION} ] && POWER_CONSUMPTION=$(ipmitool -I lanplus -H ${BMC_NODE} -U ${BMC_USER} -P ${BMC_PASS} dcmi power reading | awk '/Instantaneous/ {print $(NF-1)}')

    POWER_CONSUMPTION_AVG=$(curl --connect-timeout 3 -s https://${BMC_NODE}/redfish/v1/Chassis/1/Power/ -k -u ${BMC_USER}:${BMC_PASS} | jq -r ".PowerControl[].PowerMetrics.AverageConsumedWatts")
    [ -z ${POWER_CONSUMPTION_AVG} ] && POWER_CONSUMPTION_AVG=$(ipmitool -I lanplus -H ${BMC_NODE} -U ${BMC_USER} -P ${BMC_PASS} dcmi power reading | awk '/Average/ {print $(NF-1)}')

    printf "%-40s %-10s %-10s\n" "${BMC_NODE}" "${POWER_CONSUMPTION}" "${POWER_CONSUMPTION_AVG}"
done

define server (BMC) list

BMC_NODES="
10.0.0.222
$(echo www{1..9}.example.com)
$(echo 10.0.1.{101..201})
"

Get data from redfish / ipmi

podman

Install

sudo apt-get install -y software-properties-common uidmap
sudo add-apt-repository -y ppa:projectatomic/ppa
sudo apt-get -y install podman

Container

podman run --name nginx -v /tmp/html:/usr/share/nginx/html:ro -d -p 8080:80 docker://nginx

podman run \
    -dt \
    -p 8080:8080/tcp \
    -e HTTPD_VAR_RUN=/var/run/httpd \
    -e HTTPD_MAIN_CONF_D_PATH=/etc/httpd/conf.d \
    -e HTTPD_MAIN_CONF_PATH=/etc/httpd/conf \
    -e HTTPD_CONTAINER_SCRIPTS_PATH=/usr/share/container-scripts/httpd/ \
    registry.fedoraproject.org/f27/

Links
https://podman.io/

Floating IPs

# list all floating IPs
openstack floating ip list
openstack floating ip show 1.2.3.4
openstack floating ip list --project ${PROJECT_ID} --long

# Allocate floating IP
openstack floating ip create public 

# Allocate specific floating IP for a project (as cloud admin)
openstack floating ip create public --floating-ip-address 10.11.12.13 --project foo-project
FLOATING_IP=$(openstack floating ip create public -c floating_ip_address -f value --floating-ip-address 10.11.12.13)

# Associate floating IP to instance
openstack server add floating ip ${INSTANCE_NAME_OR_ID} ${FLOATING_IP}

# Disassociate floating IP
openstack server remove floating ip ${INSTANCE_NAME_OR_ID} ${FLOATING_IP}

# Release floating IP
openstack floating ip delete ${FLOATING_IP}

# show used floating IPs
NETWORK_ID=$(openstack subnet list --network public -c Network -f value)
openstack ip availability show -c total_ips -c used_ips ${NETWORK_ID}

# Add floating IP to port
openstack floating ip set --port ${PORT_ID} ${FLOATING_IP}

List reserved floating IPs per project

PROJECT_IDS=$(openstack floating ip list --status DOWN  -f value -c Project | sort -u)
for PROJECT_ID in ${PROJECT_IDS}; do
    PROJECT_NAME="$(openstack project show ${PROJECT_ID} -c name -f value)"
    DOMAIN_ID="$(openstack project show ${PROJECT_ID} -c domain_id -f value)"
    DOMAIN_NAME="$(openstack domain show ${DOMAIN_ID} -c name -f value)"

    echo "# ${DOMAIN_NAME} > ${PROJECT_NAME} (${PROJECT_ID})"

    openstack floating ip list --status DOWN  --project ${PROJECT_ID} -c "Floating IP Address" -f value
    echo
done

List available / used floating IP

s3cmd

Install s3cmd (s3 CLI client)

sudo apt install -y s3cmd

Configuration file

s3cmd --configure
${HOME}/.s3cfg

CLI

s3cmd mb s3://buk1
s3cmd put /tmp/1m.img s3://buk1
s3cmd ls s3://buk1
s3cmd du
s3cmd rm s3://buk1/1m.img
s3cmd mv s3://buk1/1m.img s3://buk2/1m.img
s3cmd rb s3://buk1
s3cmd rb s3://buk1 --recursive
s3cmd rm s3://lfs/ --recursive --force

# list all objects
s3cmd --host s3.exampl3.com \
  --access_key=${AWS_ACCESS_KEY_ID} \
  --secret_key=${AWS_SECRET_ACCESS_KEY} \
  --host-bucket X \
  la

s3cmd \
  --access_key xxxxxxxxxxx  \
  --secret_key xxxxxxxxxxxxxx \
  --host-bucket '%(bucket)s.s3.example.com' \
  --host s3.example.com \
  --signature-v2 \
  --no-preserve \
  ls s3://foo-duply

s3cmd \
  --host s3.example.com \
  --access_key=${S3_ACCESS_KEY} \
  --secret_key=${S3_SECRET_KEY} \
  --host-bucket X \
  --recursive \
  ls s3://images/ | grep ubuntu-22.04-amd64-disk.raw | tail -1 | cut -d"/" -f2-

ACL

s3cmd setacl s3://bucket/path/to/file --acl-public
s3cmd info s3://bucket/path/to/file
s3cmd setacl s3://bucket/path/to/file --acl-private

Links
https://lollyrock.com/articles/s3cmd-with-radosgw/
https://linuxconfig.org/getting-started-with-aws-s3cmd-command-by-examples

s3fs

Install

sudo apt install -y s3fs

Create credentials

echo ${BUCKET}:${ACCESS_KEY}:${SECRET_KEY} >> ~/.passwd-s3fs
chmod 600 ~/.passwd-s3fs

Mount S3 bucket

s3fs bucket1 /tmp/mnt -o url=https://s3.example.com

Parameter

-o passwd_file=~/.passwd-s3fs
-o url=https://s3.example.com,allow_other,umask=0000
-o use_cache=/tmp/cache

/etc/fstab

mybucket1.mydomain.org /mnt/mybucket1 fuse.s3fs _netdev,allow_other,passwd_file=/home/ftpuser/.passwd-aws-s3fs,default_acl=public-read,uid=1001,gid=65534 0 0

Links
https://github.com/s3fs-fuse/s3fs-fuse
https://gridscale.io/community/tutorials/s3-fuse-ubuntu/

NVMe firmware update with Intel SSD Firmware Update Tool

Intel SSD Firmware Update Tool
https://downloadcenter.intel.com/download/30509?v=t
https://downloadcenter.intel.com/download/30373?v=t
https://downloadmirror.intel.com/30509/eng/CLI-Intel-MAS-1.8-User-Guide-Public-342245-010US.pdf
# latest version
https://www.intel.com/content/www/us/en/download/19520/intel-memory-and-storage-tool-cli-command-line-interface.html?v=t

wget https://downloadmirror.intel.com/30373/eng/Intel%C2%AE_SSD_FUT_3.0.11.zip

intelmas show -output json
intelmas load -f -intelssd 0
intelmas show -output json -intelssd -sensor

for NVME_ID in $(intelmas show -output json -intelssd | jq '.[] | select(.ProductFamily | contains("Intel")) .Index'); do
    intelmas show -intelssd ${NVME_ID}
    intelmas load -force -intelssd ${NVME_ID}
done

Intel NVMe firmware update with Intel SSD Data Center Tool (deprected)
Check for latest version: https://downloadcenter.intel.com/search?keyword=SSD+Firmware+Update+Tool

URL=https://downloadmirror.intel.com/29720/eng/Intel_SSD_DCT_3.0.26_Linux.zip

wget ${URL} -O /tmp/Intel_SSD_Data_Center_Tool_Linux.zip
unzip -d /tmp /tmp/Intel_SSD_Data_Center_Tool_Linux.zip
sudo dpkg -i /tmp/isdct_*_amd64.deb

# Enable support for devices behind LSI RAID controller
isdct set -system EnableLSIAdapter=true

# show all avaiable Intel NVMe devices
isdct show -intelssd

isdct show -d Index,FirmwareUpdateAvailable -intelssd
isdct show -o json -d DevicePath -intelssd | jq -r .[].DevicePath

# update firmware
isdct load -intelssd 0

Flash all Intel NVMe drives

for NVME_ID in $(isdct show -d Index -intelssd | grep Index | cut -d ":" -f2); do
    isdct show -intelssd ${NVME_ID}
    yes | isdct load -intelssd ${NVME_ID}
done

Links
https://www.thomas-krenn.com/de/wiki/Intel_SSD_Data_Center_Tool
https://downloadcenter.intel.com/de/download/28639/Intel-SSD-Data-Center-Tool-Intel-SSD-DCT-?product=87278

OpenStack: compute (nova)

CLI
https://docs.openstack.org/nova/latest/admin/services.html

# list hypervisor details
openstack hypervisor list --long

# list VMs with availability zone
openstack server list --long -c ID -c Name -c Status -c Networks -c "Image Name" -c "Flavor Name" -c "Availability Zone"

# list VMs on all hypervisor
openstack server list --all --long  -c ID -c Name -c Host

# list VMs on specific hypervisor
openstack server list --all-projects --host ${COMPUTE_NODE}

# get VM count by hypervisor
openstack server list --all --long  -c Host -f value | sort | uniq -c

# list compute nodes
openstack compute service list --service nova-compute

# list compute service
openstack compute service list --host ${OS_NODE}

# add / enable compute service
openstack compute service set --enable com1-dev nova-compute

# disable compute service
for OS_SERVICE in $(openstack compute service list --host ${OS_NODE} -c Binary -f value); do
    openstack compute service set --disable --disable-reason "Maintenance" ${OS_NODE} ${OS_SERVICE}
done

# Search for server witch status error
openstack server list --all --status ERROR

# Search for server with status resizing
openstack server list --all --status=VERIFY_RESIZE

# List instances / VMs
openstack server list
openstack server list -c ID -c Name -c Status -c Networks -c Host --long

# Show VM diagnostics / statistics
nova diagnostics ${SERVER_ID}
openstack server show --diagnostics ${SERVER_ID}

# show hypervisor usage
openstack usage list

Disable compute node

Pagination

  • First page
  • Previous page
  • …
  • Page 10
  • Page 11
  • Page 12
  • Page 13
  • Page 14
  • Page 15
  • Page 16
  • Page 17
  • Page 18
  • …
  • Next page
  • Last page
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