#!/bin/bash # Install & configure OpenNebula with MariaDB Galera Cluster as HA # This script is idempotent like an Ansible playbook! # I.e. run it as many times as you want to, it won't hurt! # -e = stop on exception, -x = debug, -a = export all variables set -e -x -a # Include config . ./load-config.sh ### Check host variables if [ -z "$play_host" -o -z "$node_name" -o -z "$int_ip" ]; then echo "play_host/node_name/int_ip not specified" exit 1 fi ### Configure network . ./network.sh ### Install packages scp ./etc/apt/sources.list.d/opennebula.list root@$play_host:/etc/apt/sources.list.d/opennebula.list scp ./etc/apt/sources.list.d/mariadb.list root@$play_host:/etc/apt/sources.list.d/mariadb.list ssh root@$play_host < /etc/mysql/mariadb.conf.d/50-server.cnf' if [ "$init_db" -eq 1 ]; then # Create a new cluster ssh root@$play_host < /var/lib/one/.one/one_auth echo serveradmin:$serveradmin_password > /var/lib/one/.one/ec2_auth echo serveradmin:$serveradmin_password > /var/lib/one/.one/occi_auth echo serveradmin:$serveradmin_password > /var/lib/one/.one/oneflow_auth echo serveradmin:$serveradmin_password > /var/lib/one/.one/onegate_auth echo serveradmin:$serveradmin_password > /var/lib/one/.one/sunstone_auth echo $one_key > /var/lib/one/.one/one_key chown oneadmin:oneadmin /var/lib/one/.one/* chmod 600 /var/lib/one/.one/* EOF ssh root@$play_host < /etc/keepalived/keepalived.conf' ssh root@$play_host 'chmod 755 /etc/one/one-cluster.sh && systemctl restart keepalived' # Setup onedns envsubst < ./etc/systemd/system/onedns.service.env | \ ssh root@$play_host 'cat > /etc/systemd/system/onedns.service' scp etc/sysctl.conf root@$play_host:/etc/ ssh root@$play_host < tmp$$ onehost update -a $play_host tmp$$ rm tmp$$ fi EOF # Apply the patch scp opennebula-ceph-cpds-clone.diff root@$play_host:~/ ssh root@$play_host < /etc/ceph/ceph.conf' scp ./ceph-deploy/ceph.client.admin.keyring root@$play_host:/etc/ceph/ scp ./ceph-deploy/ceph.client.libvirt.keyring root@$play_host:/etc/ceph/ ssh root@$play_host 'chmod 600 /etc/ceph/ceph.client.admin.keyring' # Add Ceph secret ssh root@$play_host < secret.xml < $libvirt_secret_uuid client.libvirt secret EOS KEY=\$(ceph auth get-key client.libvirt) virsh -c qemu:///system secret-define secret.xml; virsh -c qemu:///system secret-set-value --secret $libvirt_secret_uuid --base64 \$KEY fi EOF