From 65f5bfb99699328e5bfc5d3d28399f27512aac7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Floure?= Date: Mon, 16 Dec 2019 14:51:14 +0100 Subject: [PATCH 1/9] Do not enable unused systemd-networkd on Fedora image --- fedora-build-opennebula-image.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/fedora-build-opennebula-image.sh b/fedora-build-opennebula-image.sh index 3dddae1..219ad6e 100755 --- a/fedora-build-opennebula-image.sh +++ b/fedora-build-opennebula-image.sh @@ -130,7 +130,6 @@ run_root dnf -y install e2fsprogs # Initalize base services. run_root systemd-machine-id-setup -run_root systemctl enable systemd-networkd.service run_root ln -sf /usr/share/zoneinfo/UTC /etc/localtime run_root systemctl enable systemd-timesyncd.service From d11620a9fb7a1550df37d221711413cd2960704b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Floure?= Date: Tue, 17 Dec 2019 10:18:40 +0100 Subject: [PATCH 2/9] Fedora image: be sure to use right kernel version when generating initramfs --- fedora-build-opennebula-image.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fedora-build-opennebula-image.sh b/fedora-build-opennebula-image.sh index 219ad6e..837ba6f 100755 --- a/fedora-build-opennebula-image.sh +++ b/fedora-build-opennebula-image.sh @@ -143,7 +143,8 @@ run_root dnf -y install kernel grub2 cat > /mnt/etc/dracut.conf.d/virtio-blk.conf < Date: Tue, 17 Dec 2019 11:21:54 +0100 Subject: [PATCH 3/9] Remove now irrelevant comment from Fedora image definition --- fedora-build-opennebula-image.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/fedora-build-opennebula-image.sh b/fedora-build-opennebula-image.sh index 837ba6f..5197acc 100755 --- a/fedora-build-opennebula-image.sh +++ b/fedora-build-opennebula-image.sh @@ -83,8 +83,6 @@ mount "${NBD_DEVICE}p2" /mnt mkdir /mnt/boot mount "${NBD_DEVICE}p1" /mnt/boot -# XXX: dnf has a lot a weird (libX11?) dependencies, use microdnf instead? - dnf -y \ --releasever=$RELEASE \ --installroot=/mnt \ From 5e438aafe83a10444fc68f35b4074748df4905c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Floure?= Date: Tue, 17 Dec 2019 13:56:05 +0100 Subject: [PATCH 4/9] Fedora image: increase /boot from 100M to 500M --- fedora-build-opennebula-image.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fedora-build-opennebula-image.sh b/fedora-build-opennebula-image.sh index 5197acc..45c1629 100755 --- a/fedora-build-opennebula-image.sh +++ b/fedora-build-opennebula-image.sh @@ -68,7 +68,7 @@ trap cleanup EXIT # Create partition table, format partitions. sfdisk --no-reread "$NBD_DEVICE" < Date: Fri, 27 Dec 2019 11:06:45 +0100 Subject: [PATCH 5/9] [script]Add new file for ceph pg repair --- pg_repair | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 pg_repair diff --git a/pg_repair b/pg_repair new file mode 100644 index 0000000..428923f --- /dev/null +++ b/pg_repair @@ -0,0 +1,14 @@ +#!/bin/bash -e + +pglist_arr=( $(ceph health detail | grep pg | grep active | awk '{print $2}' )) + +echo ${pglist_arr[*]} + +for ((i=0; i<${#pglist_arr[@]}; i++)) do + if [ 1 -eq $(ceph pg repair ${pglist_arr[$i]} | grep repair | grep instructing | wc -l) ]; then + echo repair error + break + fi + echo ${pglist_arr[$i]} repair ok + sleep 10 +done \ No newline at end of file From 693b1bed0063ebd97586746d08cb4a9fb386b9dc Mon Sep 17 00:00:00 2001 From: Jin-Guk Kwon Date: Fri, 27 Dec 2019 11:08:24 +0100 Subject: [PATCH 6/9] [script]Update pg_repair for error message --- pg_repair | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pg_repair b/pg_repair index 428923f..caa9953 100644 --- a/pg_repair +++ b/pg_repair @@ -6,9 +6,9 @@ echo ${pglist_arr[*]} for ((i=0; i<${#pglist_arr[@]}; i++)) do if [ 1 -eq $(ceph pg repair ${pglist_arr[$i]} | grep repair | grep instructing | wc -l) ]; then - echo repair error + echo repair script error break fi - echo ${pglist_arr[$i]} repair ok + echo ${pglist_arr[$i]} repair script done sleep 10 done \ No newline at end of file From 54e4bc1d49f951a57576b86f9a9620d7b3df5a8a Mon Sep 17 00:00:00 2001 From: llnu Date: Thu, 2 Jan 2020 20:46:15 +0100 Subject: [PATCH 7/9] added alpine compatible version --- ceph-osd-create-start-alpine | 107 +++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100755 ceph-osd-create-start-alpine diff --git a/ceph-osd-create-start-alpine b/ceph-osd-create-start-alpine new file mode 100755 index 0000000..a19e1da --- /dev/null +++ b/ceph-osd-create-start-alpine @@ -0,0 +1,107 @@ +#!/bin/sh +# 17:19, 2018-02-09 +# Nico Schottelius + +# Based on ceph-disk -v prepare --bluestore /dev/sdc --osd-id ${ID} --osd-uuid $(uuidgen) --crush-device-class "ssd" + +# Create: +# - block -> link to partuuid +# - block_uuid -e> uuid if the block +# - ceph_fsid -> get from ceph-conf +# crush_device_class -> ssd, hdd +# fsid -> uuidgen! +# magic -> string "ceph osd volume v026" +# type -> bluestore + +fsid=$(ceph-conf --cluster=ceph --name=osd. --lookup fsid) +fs_uuid=$(uuidgen) +magic="ceph osd volume v026" + +set -x +set -e + +if [ $# -lt 2 ]; then + echo "$0 disk class [osdweight]" + echo "class = hdd or ssd" + exit 1 +fi + +export DEV=$1;shift +export CLASS=$1; shift + + +uuid_metadata=$(uuidgen) +uuid_block=$(uuidgen) + +osd_id=$(ceph osd create) + +dev_metadata="/dev/disk/by-partuuid/$uuid_metadata" +dev_block="/dev/disk/by-partuuid/$uuid_block" + +/usr/bin/sgdisk --new=0:0:+100M --change-name="0:ceph data" \ + --partition-guid="0:$uuid_metadata" \ + --typecode=0:4fbd7e29-9d25-41b8-afd0-062c0ceff05d \ + --mbrtogpt -- $DEV +/sbin/udevadm settle --timeout=600 + +# Using gdisk --largest-new does not change the name or set guid; +# So use 2 steps instead +/usr/bin/sgdisk --largest-new=0 --mbrtogpt -- $DEV +/sbin/udevadm settle --timeout=600 + + +lastpart=$(gdisk -l $DEV | tail -n1 | awk '{ print $1 }') +/usr/bin/sgdisk --change-name="${lastpart}:ceph block" \ + --partition-guid="${lastpart}:$uuid_block" \ + --typecode="${lastpart}:cafecafe-9b03-4f30-b4c6-b4b80ceff106" \ + --mbrtogpt -- $DEV +/sbin/udevadm settle --timeout=600 + +#echo $1 +#echo $(blkid | grep $1"2") + +#cblock=$(blkid | grep $1"2" | cut -d'"' -f4) +#echo $cblock + +/sbin/mkfs -t xfs -f -i size=2048 -- "$dev_metadata" + +mountpath=/var/lib/ceph/osd/ceph-${osd_id} + +mkdir -p "$mountpath" +mount "$dev_metadata" "$mountpath" + +ln -s $dev_block "$mountpath/block" + +echo "$uuid_block" > "$mountpath/block_uuid" +echo "$fsid" > "$mountpath/ceph_fsid" +echo "$magic" > "$mountpath/magic" +echo "$CLASS" > "$mountpath/crush_device_class" +echo $(echo $dev_block | cut -c23-) > "$mountpath/fsid" + + +# Important, otherwise --mkfs later will try to create filestore +echo bluestore > "$mountpath/type" + +ceph auth get-or-create "osd.${osd_id}" osd \ + 'allow *' mon 'allow profile osd' > $mountpath/keyring + +echo ${osd_id} > "$mountpath/whoami" +touch "$mountpath/openrc" + +ceph-osd --cluster ceph -i "${osd_id}" --mkfs +chown -R ceph:ceph "$mountpath" + +if [ $# -eq 1 ]; then + WEIGHT=$1; shift +else + devname=$(readlink -f $dev_block) + nodev=$(echo $devname | sed 's,/dev/,,') + WEIGHT=$(lsblk -l -b | awk "/^$nodev/ { print \$4/(1024^4) }") +fi + +ceph osd crush add osd.${osd_id} ${WEIGHT} host=$(hostname) + +echo "$metadata_dev /var/lib/ceph/osd/ceph-${osd_id} xfs noatime 0 0" >> /etc/fstab + +# Starting with monit, if available +ceph-osd -i ${osd_id} From fe27d294b1ca5884586a8713c169780030d3b7bc Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 7 Jan 2020 18:07:34 +0100 Subject: [PATCH 8/9] Add script to detect DNS64 prefix --- detect-dns64-prefix.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 detect-dns64-prefix.py diff --git a/detect-dns64-prefix.py b/detect-dns64-prefix.py new file mode 100644 index 0000000..e5bd179 --- /dev/null +++ b/detect-dns64-prefix.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python3 +# Nico Schottelius, 2020-01-07 +# Detect the DNS64 prefix +# Based on https://tools.ietf.org/html/draft-ietf-behave-nat64-discovery-heuristic-05 + +import dns.resolver +import ipaddress + + +if __name__ == '__main__': + dns64_prefix = None + answers = dns.resolver.query('ipv4only.arpa', 'AAAA') + + for rdata in answers: + address = str(rdata) + network = ipaddress.IPv6Network("{}/96".format(address), + strict=False) + # print("{}: {}".format(rdata, network)) + print("{}".format(network)) From e56e1d587800cf31f7aa9d3f8f0023fb710fb8bf Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 7 Jan 2020 18:08:53 +0100 Subject: [PATCH 9/9] + explanation --- detect-dns64-prefix.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/detect-dns64-prefix.py b/detect-dns64-prefix.py index e5bd179..1179ca4 100644 --- a/detect-dns64-prefix.py +++ b/detect-dns64-prefix.py @@ -2,6 +2,12 @@ # Nico Schottelius, 2020-01-07 # Detect the DNS64 prefix # Based on https://tools.ietf.org/html/draft-ietf-behave-nat64-discovery-heuristic-05 +# +# How it works: +# - ipv4only.arpa only has A records. +# - a DNS64 server will add AAAA records +# - we take this response (if any) and derive the IPv6 prefix from it +# import dns.resolver import ipaddress