OpenStack GPU passthrough
Enable iommu in BIOS
Configure compute node
Show neutron router namespaces by floating IP (FIP)
FLOATING_IP=1.2.3.4 # search in floating IP table ROUTER_ID=$(openstack floating ip list --floating-ip-address ${FLOATING_IP} --long -c Router -f value) if [ -z ${ROUTER_ID} ]; then # search in router ROUTER_ID=$(openstack router list --long | grep ${FLOATING_IP} | cut -d" " -f2) fi PROJECT_ID=$(openstack router show ${ROUTER_ID} -c project_id -f value) echo -e "\e[34m# Project" openstack router show ${ROUTER_ID} -c id -c name echo echo -e "\e[34m# Router" openstack project show ${PROJECT_ID} -c id -c name -c description echo echo -e "\e[34m# Router namespaces" openstack network agent list --router ${ROUTER_ID} --long --sort-column 'HA State' echo
Install Home Assistant on Raspberry Pi
Install Home Assistant on Raspberry Pi
https://www.home-assistant.io/installation/raspberrypi/
# Install rpi-imager sudo apt install rpi-imager # Create Homeassistant SD-Card # Other specific-purpose OS > Home assistants and home Automation > Home Assistant OS # Connect to HA http://YOUR_HOME_ASSISTANT_IP:8123/ # Create Home Assistant account # Install SSH plugin in Add-on-Store http://YOUR_HOME_ASSISTANT_IP:8123/hassio/addon/core_ssh/info # Open SSH Web CLI http://YOUR_HOME_ASSISTANT_IP:8123/hassio/ingress/core_ssh # get wifi data from workstation WIFI_SSID="$(nmcli dev wifi show-password | grep SSID | cut -d' ' -f2-)" WIFI_PASS="$(nmcli dev wifi show-password | grep Pass | cut -d' ' -f2-)" echo ha network update wlan0 \ --ipv4-method auto \ --wifi-auth wpa-psk \ --wifi-mode infrastructure \ --wifi-ssid \'${WIFI_SSID}\' \ --wifi-psk \'${WIFI_PASS}\' # paste output to SSH online console # debug ha network info
Enable SSH key to hypervisor (Raspberry Pi)
https://community.home-assistant.io/t/howto-how-to-access-the-home-assistant-os-host-itself-over-ssh/263352/6
Raspberry Pi
Images
https://www.raspberrypi.org/downloads/
# Raspbian (Debian Jessie)
sudo umount /dev/mmcblk0*
wget -q http://director.downloads.raspberrypi.org/raspbian/images/raspbian-2016-02-29/2016-02-26-raspbian-jessie.zip -P /tmp
unzip -p /home/pako/Downloads/2016-02-26-raspbian-jessie.zip | sudo dd of=/dev/mmcblk0
sync
wget -q http://director.downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2016-02-29/2016-02-26-raspbian-jessie-lite.zip -P /tmp
View used codecs
for codec in H264 MPG2 WVC1 MPG4 MJPG WMV9 ; do \
Tasmota on SONOFF Zigbee Bridge Pro
Flashing Tasmota on SONOFF Zigbee Bridge Pro
https://notenoughtech.com/home-automation/tasmota-on-sonoff-zb-bridge-pro/
Download
http://ota.tasmota.com/tasmota32/tasmota32-zbbrdgpro.bin
Use ESP Flasher v.1.4.1
https://github.com/Jason2866/ESP_Flasher/releases/download/v.1.4.1/Ubuntu.zip
Install minikube
Install docker
http://www.panticz.de/docker
Install minikube
https://minikube.sigs.k8s.io/docs/start/
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_$(dpkg --print-architecture).deb sudo dpkg -i minikube_latest_*.deb rm minikube_latest_*.deb sudo usermod -aG docker $USER && newgrp docker minikube start minikube addons enable ingress
Install kubectl
https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#install-using-native-package-management
Deploy kubernetes cluster with kubeadm
Prepare VM for Container Runtime
https://kubernetes.io/docs/setup/production-environment/container-runtimes/
# run on all nodes cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF sudo modprobe overlay sudo modprobe br_netfilter # sysctl params required by setup, params persist across reboots cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF sudo sysctl --system # Verify lsmod | grep br_netfilter lsmod | grep overlay sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward
Install containerd
https://github.com/containerd/containerd/blob/main/docs/getting-started.md
https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
Docker networking
docker network ls docker network inspect bridge docker network inspect host docker network inspect none ip addr show docker0 ip link show docker0 ip -c link show type bridge ip netns docker inspect ${DOCKER_ID} ip link # attached to bridge # vethxxx@ifx ip -n ${INTERFACE_ID} # assignet do container # eth0@ifx ip -n ${NAMESPACE_ID} addr docker run -p 8080:80 nginx # forward internal port 80 to host port 8080 #iptables -t nat -A PREROUTING -j DNAT --dport 8080 -to-destination 80 #iptables -t nat -A Docker -j DNAT --dport 8080 --to-destination 172.17.0.3:80 iptables -nvL -t nat
Terraform: OpenStack
OpenStack Providery
https://registry.terraform.io/providers/terraform-provider-openstack/openstack/latest/docs
# Configure the OpenStack Provider provider "openstack" { user_name = "admin" tenant_name = "admin" password = "pwd" auth_url = "http://myauthurl:5000/v2.0" region = "RegionOne" } # cloud.yaml provider "openstack" { cloud = "dev-foo" }
resource "openstack_networking_router_v2" "router_1" { name = "foo-router" external_network_id = "88934cac-8d55-40d5-8ff9-bde65011741d" } resource "openstack_networking_router_interface_v2" "terraform" { router_id = openstack_networking_router_v2.router_1.id subnet_id = openstack_networking_subnet_v2.subnet_1.id }
resource "openstack_compute_instance_v2" "basic" { name = "basic" image_id = "ad091b52-742f-469e-8f3c-fd81cadf0743" flavor_id = "3" key_pair = "my_key_pair_name" security_groups = ["default"] metadata = { this = "that" } network { name = "my_network" } }
Image