Skip to content
Snippets Groups Projects
Commit afeaf500 authored by Pierre Ozoux's avatar Pierre Ozoux
Browse files

Adds script to create vultr instances for tests purposes

parent 729d9fcf
No related branches found
No related tags found
No related merge requests found
#cloud-config
hostname: backup.test
coreos:
update:
reboot-strategy: best-effort
users:
- name: backup
ssh-authorized-keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA9rLjfQVci9g/ex+ZYGH0n1cSyp65oKeAgcPQtWGJ6V3KbzzePlR+ROSwA8XtSks9geQdq8kuWvO07cWrgvoOg1OYRfRhjQj0mY0uIKXSEAcGC2ndZoKN0CBOsPhYhZCxeMIem9ixmOFPSRhYgfg6+JZDn5/EZR/s2Et04yksHRmwxxuc7Pj6d0bBvUnkWz6IEZ7G8qhNikOAXskxEJKnm5grpPf7bQk6nztNbHwxuCHC3FrcTlu3a3yEMpC1+bmkCicVOQGtl7aVEQiGJMc7jITv52YC6Gcg+Oz65hLG9JJF3w42uFj01di6ghJAHwaqOBP2fGpKhoi1+FwQnmnf root@server.test
#cloud-config
hostname: server.test
coreos:
update:
reboot-strategy: best-effort
etcd:
addr: 172.17.42.1:4001
bind-addr: 172.17.42.1:4001
peer-addr: 172.17.42.1:7001
peer-bind-addr: 172.17.42.1:7001
units:
- name: etcd.service
command: start
write_files:
- path: /etc/environment
permissions: 0600
owner: root
content: |
ENCRYPT_KEY="30082747"
BACKUP_DESTINATION="backup@##BACKUP_IP##"
- path: /etc/hosts
permissions: 0644
owner: root
content: |
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 static.test
127.0.0.1 wordpress.test
127.0.0.1 known.test
127.0.0.1 piwik.test
127.0.0.1 owncloud.test
##BACKUP_IP## backup.test
- path: /root/key.pub
permissions: 0644
owner: root
content: |
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
mQENBFS2lIEBCAC+kiok9swkG+ufytTbsT4jUrrPiRLqCt8ATlkCsCeensSE0c5q
H9bbsUhEEA6JUhsQ4P/p+5KVB9du4odvsBeB5bW4dm79f+YuZMNiOXW7rzQ8AXjK
PJLSYtwa7P5xPTN4OU8IPg06FMEyrWpdfviMv+f5ekJrC6hyTfDBTtfcr2/u4Hu8
PSC3AP76FO1QwRzCBHzzCWwoMe/WnUc1F36C3S1//yJn6IZvgQppc4Z2NXkFTUFm
+xK63vSzH5b3Foqd0JgFZ0O/40V3Y/g2lhA3dFLKFlZU3BpgOGQbXck7pUuQpmMR
k7+pz6b0CRtnk2kB7ViRzY65x74f+JY44q7pABEBAAG0FVRlc3QgQmFja3VwIDxy
b290QHQxPokBOAQTAQIAIgUCVLaUgQIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgEC
F4AACgkQN2JsMjAIJ0efrggAkf7uh7fM+6uKlamJRBxN0GQdo8ORNpflND62GLQp
TdvGB2sJdVrAspwcEiccaUsEcCiFGyJlNzCuNCjj7OGtBme3+NCCerIR+hFukO5l
tVttcvIQTf+9FPXT5B0TvempI7Of3+WEwmhG7OBOt6VlikKxQ3gFcRCAhznPJyu0
SUU6h0swEYeojNJTbrsoUDGQt3VFbN+0Iv6SoY9gYM18ak8yxxUJBTyiVofFZBDV
Rx1iGQ8reaHUvkjfwmdSSDpRUk7S7Z4ciAWOt7ZvENJI9LERmdEHm3JYfIM1ENB2
CfwLziIzpQ2DcwxZJw3W+tF6ip78+PDftBoy5MqTTKKzibkBDQRUtpSBAQgApp/S
R3pEn3fLQeOG5w5DI6nUZFOfMjiAL5azvkcDiBdtJp7KafQnjGOuJBH0u+Rb9t32
BkvuKNNbumLn0H8a8HDqwEI5vVYil4YCbPtmFIrmBjWwaReEH/hYWz/vZcbdSA9w
V5nNToE8SoESJh9GyAfS3UMTCQj6HX/i8ldHMqVgoY7gwOQHSLuZlRYT/b5Clbfy
9iKen0sjxhtnW+sYwXfY3iwda7m8LMFkUhdzjthhhInrtv2KhNTvJS94PLmx6F9v
PSq87Wozg/mN+nCYCSA2NuXMZS5G9Wxl2n7qHVLNIwRL17qJ2uG+nLEIi/gG9nf7
bA+qItGljIKBwpYC/wARAQABiQEfBBgBAgAJBQJUtpSBAhsMAAoJEDdibDIwCCdH
NqMIAJP+iow4wkvmiphHCKbCMFM9k82w9qJ8cE3uCDlWDrjnjf9vJFId6NwhLnl/
TIb/MeKHPP178Kn05ZAI0nFokRGhzyx1OFZOy5HfoDjo8Y6uiAZWq0jRDqYPWkDr
rRnApbcjKTdirrhYL4b3v7MloaKU4qrpYiYGIhdd2+pZTkvY7AKojVw1Xi5CiIj6
puXiXENEetu0HhyGMiH9TjAQgt81R0VIj+X+CTZQa/3e9NWXf0O5T7zqadvIGzEC
YsLlEkuop3TqPdIEk0uJVmtbfNOaHMUIl4/ZziYZmVDUhXyfPfU5JM12yMTRTe7t
OCeGO1ft3KS3Dm4KSgDcDK43vi8=
=2QSP
-----END PGP PUBLIC KEY BLOCK-----
- path: /root/.ssh/id_rsa
permissions: 0600
owner: root
content: |
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAwPay430FXIvYP3sfmWBh9J9XEsqeuaCngIHD0LVhieldym88
3j5UfkTksAPF7UpLPYHkHavJLlrztO3Fq4L6DoNTmEX0YY0I9JmNLiCl0hAHBgtp
3WaCjdAgTrD4WIWQsXjCHpvYsZjhT0kYWIH4OviWQ5+fxGUf7NhLdOMpLB0ZsMcb
nOz4+ndGwb1J5Fs+iBGexvKoTYpDgF7JMRCSp5uYK6T3+20JOp87TWx8Mbghwtxa
3E5bt2t8hDKQtfm5pAonFTkBrZe2lREIhiTHO4yE7+dmAuhnIPjs+uYSxvSSRd8O
NrhY9NXYuoISQB8GqjgT9nxqSoaItfhcEJ5p3wIDAQABAoIBAHMwUWV/cj3mtTZf
92MFqDPxEneDQPEquBL8Y7opLIq5JmX7tWgt6R5fXey8s+CM4xFagqQ7siLb5HNz
JPbXfxI+zx4tVE8Pc/Mf3qlUj+gv7SFsmsuxr+mb/k07U2T0hoWKwsam3dpWmtlL
lx7upxH85yaDGUqR21b1X0XtfNx5kMj9584JQ9Bgs4vXd/iCCrF9SsCMIk0pdg/8
LDvhHJr4sLFJWVj54HW4k+Bf+xbERp+adHsR6FIlT6OcJD9vzLrTQT8KTgyHppM9
ZTqdThp+qYw4GKV0fDtlwC3G80q60aYfLdzf7m8SBsuJWgRyjm7YPpjxK3xJjpEH
qM/7c3ECgYEA7HXAUYR+ZZpWj3acGYOMfbAPu8d26L0TD8qs6LbLUb4uSOlYuQQu
mn/F8sRiszuWEqAAA3RJlRSUK6HhyI30Tbe/K3p/QnBxjNfU5reolRvjSvD2Txpt
q1xHNHCezZb8JuZgyYn0CfKHyxs2OjQDmQoa+jHHQ2QkCtinmqfLya0CgYEA0OjL
clHMrJIhgHDx+KpzGGaRKh1/8Zn+pa1iBFYdXEN/h36/ZYuAYgmxV/jX+nc3hrce
iUj1xNEN+51Ozn5KyHImSSGlJ1Ra0af0h0+0jtXN+a3lB8uWozenItMuH2S5dEDM
VXqDWRRjc6dHTjoDda2Tdy1yT/9ci2E7zcd+izsCgYAZTojksI9uhFQbSpBuUpvo
n70vVauuQP4XRJO43EdqWjZN61tpgb8THfWrg8UkdY4cNC+MLxfo8qjg+pRViIvK
/Y1iM9wG2k3syvSoNKPAQZnT3XIfCS8PlfKw9BSq4CvgZeuZ5j/OCLzryd/F3uc7
q88zU7yFw+PvnTxi2u5+iQKBgQCeFDm2ZK1ivCT7ovuGdbwn75zS6IWjFSr6xSsR
KvSGl1DN/5vmw9u+06TNc7BCh6mNl81Uhs/qQWK6TbuPR0NhT/cmiX4GN6+NS/Ed
3rM7DhARaYOQFX8EPJ2NHY2eFcK7dDjqSY1Qf7wNjLvJNt7dUh3vJYWFgS7PDSGK
wfVAdwKBgQCsaRcaopsbjknffjPefhx6DinLrdWZ+HN4hKft29gXUyiWxyKHl7Bw
L6nmdssgy786p/zR4uAy7Q9NEm5vhbfsStGOEfNb1gVgmcvCkLmRJ/ptIyg3t6pq
QBCRI/nRcO5FhEEqIXcn7tccBLVxJVp41XKqvONpYqq+oBNuy2po9w==
-----END RSA PRIVATE KEY-----
- path: /root/.ssh/id_rsa.pub
permissions: 0600
owner: root
content: |
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA9rLjfQVci9g/ex+ZYGH0n1cSyp65oKeAgcPQtWGJ6V3KbzzePlR+ROSwA8XtSks9geQdq8kuWvO07cWrgvoOg1OYRfRhjQj0mY0uIKXSEAcGC2ndZoKN0CBOsPhYhZCxeMIem9ixmOFPSRhYgfg6+JZDn5/EZR/s2Et04yksHRmwxxuc7Pj6d0bBvUnkWz6IEZ7G8qhNikOAXskxEJKnm5grpPf7bQk6nztNbHwxuCHC3FrcTlu3a3yEMpC1+bmkCicVOQGtl7aVEQiGJMc7jITv52YC6Gcg+Oz65hLG9JJF3w42uFj01di6ghJAHwaqOBP2fGpKhoi1+FwQnmnf root@server.test
#!/bin/bash
function valid_ip()
{
local ip=$1
local stat=1
if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
OIFS=$IFS
IFS='.'
ip=($ip)
IFS=$OIFS
[[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \
&& ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
stat=$?
fi
return $stat
}
LABEL=$1
SSHKEYID=`curl -s https://api.vultr.com/v1/sshkey/list\?api_key\=$VULTR_API_KEY | cut -d\" -f2`
SUBID=`curl -s -d "DCID=24&VPSPLANID=29&OSID=179&label=$LABEL&SSHKEYID=$SSHKEYID" https://api.vultr.com/v1/server/create\?api_key\=$VULTR_API_KEY | cut -d\" -f4`
while :
do
IP=`curl -s https://api.vultr.com/v1/server/list_ipv4\?api_key\=$VULTR_API_KEY\&SUBID\=$SUBID | cut -d\" -f6`
if valid_ip $IP; then
break
else
echo "waiting to get an IP..."
sleep 5
fi
done
sudo -- sh -c "echo $IP $LABEL \#$SUBID >> /etc/hosts"
while :
do
ssh -o "StrictHostKeyChecking no" -o "BatchMode yes" root@$LABEL exit
if [ $? == 0 ];
then
break
else
echo "waiting to be able to ssh..."
sleep 5
fi
done
#!/bin/bash -eux
LABEL=$1
SUBID=`cat /etc/hosts | grep $LABEL | cut -d# -f2`
sudo sed -i "/$LABEL/ d" /etc/hosts
curl -d SUBID=$SUBID https://api.vultr.com/v1/server/destroy\?api_key\=$VULTR_API_KEY
#!/bin/bash -eux
/usr/bin/coreos-cloudinit --from-file=/var/lib/coreos-install/user_data
docker pull pierreozoux/rsyslog
docker pull pierreozoux/haproxy
docker pull pierreozoux/confd
docker pull pierreozoux/postfix
#docker pull pierreozoux/dovecot
docker pull pierreozoux/nginx
docker pull pierreozoux/mysql
docker pull pierreozoux/wordpress
docker pull pierreozoux/known
docker pull pierreozoux/piwik
docker pull pierreozoux/owncloud
docker pull pierreozoux/duplicity
docker pull ibuildthecloud/systemd-docker
# Create Directory structure
mkdir -p /data/domains
mkdir -p /data/runtime/haproxy/approved-certs
git clone https://github.com/pierreozoux/IndiePaaS.git /data/indiehosters
# Install unit-files
cp /data/indiehosters/unit-files/* /etc/systemd/system && systemctl daemon-reload
# Configure and start HAproxy
cp /data/indiehosters/tests/unsecure-certs/indiehosters.dev.pem /data/runtime/haproxy/approved-certs/default.pem
systemctl enable rsyslog
systemctl start rsyslog
systemctl enable postfix
systemctl start postfix
systemctl enable confd
systemctl start confd
systemctl enable haproxy.path
systemctl start haproxy.path
source /etc/environment
# Put the backup server in known_hosts files using RSA algo
# https://github.com/paramiko/paramiko/issues/243
ssh -o "StrictHostKeyChecking no" -o "BatchMode yes" -o "HostKeyAlgorithms=ssh-rsa" $BACKUP_DESTINATION exit
# Import backup encryption key
gpg --import /root/key.pub
TRUSTVAR=`gpg --fingerprint root | grep Key|cut -d= -f2|sed 's/ //g'`
TRUST_VALUE=':6:'
echo $TRUSTVAR$TRUST_VALUE | gpg --import-ownertrust
docker run --rm -v /opt/bin:/target jpetazzo/nsenter
#!/bin/bash -eux
ROOT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/..
# Create backup for tests
$ROOT_DIR/scripts/create_vultr.sh backup.test
scp $ROOT_DIR/configs/backup.config root@backup.test:/var/lib/coreos-install/user_data
ssh root@backup.test /usr/bin/coreos-cloudinit --from-file=/var/lib/coreos-install/user_data
BACKUP_IP=`cat /etc/hosts | grep backup.test | cut -d" " -f1`
# Create server for tests
$ROOT_DIR/scripts/create_vultr.sh server.test
cat $ROOT_DIR/configs/server.config | sed s/##BACKUP_IP##/$BACKUP_IP/g > /tmp/server.config
scp /tmp/server.config root@server.test:/var/lib/coreos-install/user_data
scp $ROOT_DIR/scripts/install.sh root@server.test:/tmp/install.sh
ssh root@server.test /tmp/install.sh
IP=`cat /etc/hosts | grep server.test | cut -d" " -f1`
# Adds ip to /etc/hosts file
echo "We'll now modify your /etc/hosts to add the test application name"
applications=( `cat $ROOT_DIR/SUPPORTED_APPLICATIONS` )
for application in "${applications[@]}"
do
sudo -- sh -c "echo $IP $application.test >> /etc/hosts"
done
#!/bin/bash -eux
ROOT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/..
$ROOT_DIR/scripts/destroy_vultr.sh backup.test
ssh-keygen -f ~/.ssh/known_hosts -R backup.test
$ROOT_DIR/scripts/destroy_vultr.sh server.test
ssh-keygen -f ~/.ssh/known_hosts -R server.test
applications=( `cat $ROOT_DIR/SUPPORTED_APPLICATIONS` )
for application in "${applications[@]}"
do
sudo sed -i "/$application.test/ d" /etc/hosts
done
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment