diff --git a/type/__opennebula_repo/manifest b/type/__opennebula_repo/manifest new file mode 100644 index 0000000..4c9f108 --- /dev/null +++ b/type/__opennebula_repo/manifest @@ -0,0 +1,32 @@ +#!/bin/sh + +one_release=$(cat "${__object:?}/parameter/one-release") + +os=$(cat "${__global:?}/explorer/os") +os_release=$(cat "${__global:?}/explorer/lsb_release") +case "$os" in + debian|ubuntu) + if [ "$os" = "debian" ]; then + os="Debian" + else + os="Ubuntu" + fi + + __package gnupg2 + __package ca-certificates + + require="__package/gnupg2 __package/ca-certificates" __apt_key_uri opennebula \ + --name "Opennebula APT repository" \ + --uri https://downloads.opennebula.org/repo/repo.key \ + --state present + + require="__apt_key_uri/opennebula" __apt_source opennebula \ + --uri "http://downloads.opennebula.org/repo/$one_release/$os/$os_release/" \ + --distribution stable \ + --component opennebula + ;; + *) + echo "This type is expected to run on Ubuntu, not $os. Exiting." >&2 + exit 1 + ;; +esac diff --git a/type/__opennebula_repo/parameter/required b/type/__opennebula_repo/parameter/required new file mode 100644 index 0000000..44c8c98 --- /dev/null +++ b/type/__opennebula_repo/parameter/required @@ -0,0 +1 @@ +one-release diff --git a/type/__opennebula_repo/singleton b/type/__opennebula_repo/singleton new file mode 100644 index 0000000..e69de29 diff --git a/type/__recycledcloud_opennebula_node/files/ceph.client.libvirt.keyring.sh b/type/__recycledcloud_opennebula_node/files/ceph.client.libvirt.keyring.sh new file mode 100755 index 0000000..0befbff --- /dev/null +++ b/type/__recycledcloud_opennebula_node/files/ceph.client.libvirt.keyring.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +cat << EOF +[client.libvirt] + key = $LIBVIRT_KEY + caps mon = "profile rbd" + caps osd = "profile rbd pool=one" +EOF diff --git a/type/__recycledcloud_opennebula_node/files/lnth.ch.pub b/type/__recycledcloud_opennebula_node/files/lnth.ch.pub new file mode 100644 index 0000000..cd38ef4 --- /dev/null +++ b/type/__recycledcloud_opennebula_node/files/lnth.ch.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDEPIotg1yfaCg++zGUCg2MR2Aq/xfXb8+wWwYyIfgTdCoNB6L8EWcxpo73Wx8HkGjyYufo6nQOPBfkos1mrdpZCdxMShfixk6weywGCaIph0EEMwgvftTnK1HmZz935DEhJMm0GEEx2RNCUXVjfkPM8ASpfaNGzikseL1/HudBXgNb0umddnoHt5N15J5gTE9dNgnwvXqHAdeyPqJK+Mc0cxVQIt5tG9fps71/9Ovh0vJs8LQfpzdicB1QkRTxTI9Td9It843lz6iihznwSzFrzWpuc3HpSyx+1IUGoPUl+LdDeuxT0jK78MibCJ+r+t8pY62AochPd10Gjj5GF7DlE3dTHd0HurcvPtWzO/fx6ZLh7/kj4TKTs0AULJVH5puJ3j1RdCPJNPzYLUKoifxuoXnhtgBeyAoaZoV25aR/HPFj2kwOKCuS1SoctqNvG6ZPqFkWll5tc8QxddhHcul5+jMBTTOCzAHePKVinIRUbGVF9/MirYDjIfs7eounpok= oneadmin@bottom-center diff --git a/type/__recycledcloud_opennebula_node/files/lsne.ch.pub b/type/__recycledcloud_opennebula_node/files/lsne.ch.pub new file mode 100644 index 0000000..1f2296e --- /dev/null +++ b/type/__recycledcloud_opennebula_node/files/lsne.ch.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCtLXNb7LYaYpUSynmP5+25AJX0II0M0IuNHC++plxuYBu/ziouiSHsfyoVeBUTXbPAxmz1Ginp1qSzXdL5R9J1ryUPDq8Ml/V+Wj3HrISxGjIrhBXABCct3U2XfN4Ag4KYapmDREe2EJ1TaSNOGUaVoL2/kxw4Uz8v4V6YNiXsN2l8d3H9Tp2c0VpXRmSIaMWqETl0yl3f8rz2IAFRPNkc4GW+ChbYy3YR9dy8P2okBJR5d0nQqLtSSgneexNePG8X/1E8cqTOwJGFZh8G7gLdhHlalgrqLbEGR7JH5RZm87ml1OvlDWQQqjlTZLRdeHKz5ebHy+tHeYUCns2akNdu7+mSzUX4ZYY/3vrCE14G9Yoebff1kRcGnzS4mqG0dNAnOy+HT62rdfAuGCWQZqkNhgOTjaokxiK4Zhg5jUyTcyRiJaa1I25wdyOfRZQnqd2FTkW6zhalh+MloCXL9yugKHd2395lKwIualKVolqrRAtrdztsaiW9EgD5Fl9OJUk= oneadmin@gentle-pony diff --git a/type/__recycledcloud_opennebula_node/gencode-remote b/type/__recycledcloud_opennebula_node/gencode-remote new file mode 100755 index 0000000..62610a0 --- /dev/null +++ b/type/__recycledcloud_opennebula_node/gencode-remote @@ -0,0 +1,18 @@ +#!/bin/sh + +ceph_libvirt_key=$(cat "$__object/parameter/ceph-secret") +UUID=$(cat "$__object/parameter/ceph-secret-uuid") + +cat << EOF +cat > secret.xml << END + + $UUID + + client.libvirt secret + + +END + +virsh -c qemu:///system secret-define secret.xml +virsh -c qemu:///system secret-set-value --secret $UUID --base64 $ceph_libvirt_key +EOF diff --git a/type/__recycledcloud_opennebula_node/manifest b/type/__recycledcloud_opennebula_node/manifest new file mode 100644 index 0000000..3d490ee --- /dev/null +++ b/type/__recycledcloud_opennebula_node/manifest @@ -0,0 +1,37 @@ +#!/bin/sh +ONE_RELEASE='5.12' + +os=$(cat "${__global:?}/explorer/os") +case "$os" in + ubuntu) + os="Ubuntu" + ;; + debian) + __package qemu-block-extra + __package netcat-openbsd + ;; + *) + echo "This type is expected to run on Ubuntu, not $os. Exiting." >&2 + exit 1 + ;; +esac + +zone=$(cat "${__object:?}/parameter/zone") + +LIBVIRT_KEY=$(cat "${__object:?}/parameter/ceph-secret") +export LIBVIRT_KEY + +__opennebula_repo --one-release $ONE_RELEASE + +require="__opennebula_repo" __package opennebula-node +require="__package/opennebula-node" __ssh_authorized_keys oneadmin \ + --key "$(cat "${__type:?}/files/$zone.pub")" + +mkdir -p "${__object:?}/files" +"${__type:?}/files/ceph.client.libvirt.keyring.sh" > "${__object:?}/files/ceph.client.libvirt.keyring" + +__directory /etc/ceph --parents +require="__directory/etc/ceph __package/opennebula-node" __file \ + /etc/ceph/ceph.client.libvirt.keyring \ + --source "$__object/files/ceph.client.libvirt.keyring" \ + --owner oneadmin diff --git a/type/__recycledcloud_opennebula_node/parameter/required b/type/__recycledcloud_opennebula_node/parameter/required new file mode 100644 index 0000000..e0e554a --- /dev/null +++ b/type/__recycledcloud_opennebula_node/parameter/required @@ -0,0 +1,3 @@ +zone +ceph-secret +ceph-secret-uuid diff --git a/type/__recycledcloud_opennebula_node/singleton b/type/__recycledcloud_opennebula_node/singleton new file mode 100644 index 0000000..e69de29