~juju-qa/juju-ci-tools/trunk

482 by Curtis Hovey
Added script to setup slave. This could be charmed up.
1
#!/bin/bash
996.2.1 by Curtis Hovey
Update rules to provision a slave.
2
# setup-slave.bash private_ip [public_address] [./cloud-city]
482 by Curtis Hovey
Added script to setup slave. This could be charmed up.
3
set -eux
4
1334 by Curtis Hovey
Pass region to run_instances for manual testings.
5
MASTER="http://juju-ci.vapour.ws:8080/"
996.2.1 by Curtis Hovey
Update rules to provision a slave.
6
KEY="staging-juju-rsa"
7
482 by Curtis Hovey
Added script to setup slave. This could be charmed up.
8
SLAVE=$1
1003.3.1 by Curtis Hovey
Fix default for setting up a slave.
9
SLAVE_ADDRESS="${2:-$(juju status $SLAVE |
482 by Curtis Hovey
Added script to setup slave. This could be charmed up.
10
    grep public-address |
11
    cut -d : -f 2 |
996.2.1 by Curtis Hovey
Update rules to provision a slave.
12
    sed 's/ //g')}"
13
LOCAL_CLOUD_CITY="${3:-./cloud-city}"
482 by Curtis Hovey
Added script to setup slave. This could be charmed up.
14
1139 by Curtis Hovey
Setup up proposed pocket. Pass control-bucket.
15
SERIES=$(ssh -i $LOCAL_CLOUD_CITY/$KEY ubuntu@$SLAVE_ADDRESS "lsb_release -sc")
16
DEB_LINE="http://archive.ubuntu.com/ubuntu/ $SERIES-proposed restricted main multiverse universe"
17
1143.2.1 by Curtis Hovey
Place jenkins and lxc on large volumes.
18
# Put jenkins and lxc on large volume if possible.
19
ssh -i $LOCAL_CLOUD_CITY/$KEY ubuntu@$SLAVE_ADDRESS <<EOT
20
sudo apt-get install -y lxc
21
if [[ -n \$(df -h | grep /mnt | tr -s ' ' |  cut -d ' ' -f 4 | grep G) ]]; then
22
    if [[ ! -d /mnt/jenkins ]]; then
23
        sudo cp -rp /var/lib/jenkins /mnt
24
        sudo mv /var/lib/jenkins /var/lib/jenkins.old
25
        sudo ln -s /mnt/jenkins /var/lib/jenkins
1456 by Curtis Hovey
Fix asses_win_client and setup-slave.bash
26
        sudo chown -h jenkins:jenkins /var/lib/jenkins
1143.2.1 by Curtis Hovey
Place jenkins and lxc on large volumes.
27
    fi
28
    if [[ ! -d /mnt/lxc ]]; then
29
        sudo cp -rp /var/lib/lxc /mnt
30
        sudo mv /var/lib/lxc /var/lib/lxc.old
31
        sudo ln -s /mnt/lxc /var/lib/lxc
32
    fi
1167.1.1 by Curtis Hovey
Place lxd on the big disk when possible.
33
    if [[ ! -d /mnt/lxc && -d /var/lib/lxd ]]; then
34
        sudo cp -rp /var/lib/lxd /mnt
35
        sudo mv /var/lib/lxd /var/lib/lxd.old
36
        sudo ln -s /mnt/lxd /var/lib/lxd
1456 by Curtis Hovey
Fix asses_win_client and setup-slave.bash
37
        sudo chown -h lxd:lxd /var/lib/lxd
1167.1.1 by Curtis Hovey
Place lxd on the big disk when possible.
38
    fi
1143.2.1 by Curtis Hovey
Place jenkins and lxc on large volumes.
39
fi
40
EOT
41
482 by Curtis Hovey
Added script to setup slave. This could be charmed up.
42
# Copy the authorized_keys so that we can ssh as jenkins.
1043 by Curtis Hovey
Update the list of slaves that need updating.
43
ssh -i $LOCAL_CLOUD_CITY/$KEY ubuntu@$SLAVE_ADDRESS <<EOT
44
sudo sed -i -r "s,(127.0.0.1.*localhost),\1 $SLAVE," /etc/hosts
45
echo 'jenkins ALL=(ALL) NOPASSWD:ALL' | sudo tee -a /etc/sudoers.d/91-jenkins
46
sudo chmod 0440 /etc/sudoers.d/91-jenkins
47
test -d /var/lib/jenkins/.ssh/ || sudo mkdir -p /var/lib/jenkins/.ssh/
48
cat ./.ssh/authorized_keys | sudo tee -a /var/lib/jenkins/.ssh/authorized_keys
49
sudo chmod 700 /var/lib/jenkins/.ssh/
50
sudo chmod 600 ./.ssh/authorized_keys
51
sudo chown -R jenkins:jenkins /var/lib/jenkins/.ssh
1456 by Curtis Hovey
Fix asses_win_client and setup-slave.bash
52
sudo usermod -a -G lxd jenkins
1043 by Curtis Hovey
Update the list of slaves that need updating.
53
EOT
482 by Curtis Hovey
Added script to setup slave. This could be charmed up.
54
55
# Install ssh rules for juju to repeatedly create instances.
56
ssh -i $LOCAL_CLOUD_CITY/$KEY jenkins@$SLAVE_ADDRESS \
57
"cat << EOC | tee -a /var/lib/jenkins/.ssh/config
533 by Curtis Hovey
Don't check the identities of kvm machines on 192.168.
58
Host 10.* 192.168.*
482 by Curtis Hovey
Added script to setup slave. This could be charmed up.
59
  StrictHostKeyChecking no
60
  UserKnownHostsFile /dev/null
61
  User ubuntu
62
  IdentityFile /var/lib/jenkins/cloud-city/$KEY
1139 by Curtis Hovey
Setup up proposed pocket. Pass control-bucket.
63
EOC
64
"
65
66
# Setup proposed.
67
ssh -i $LOCAL_CLOUD_CITY/$KEY jenkins@$SLAVE_ADDRESS \
68
"cat << EOC | sudo tee -a /etc/apt/preferences.d/proposed-updates
69
Package: *
70
Pin: release a=$SERIES-proposed
71
Pin-Priority: 400
482 by Curtis Hovey
Added script to setup slave. This could be charmed up.
72
EOC"
73
740 by Curtis Hovey
Install deps before branches.
74
# Install stable juju.
75
ssh -i $LOCAL_CLOUD_CITY/$KEY jenkins@$SLAVE_ADDRESS <<EOT
1139 by Curtis Hovey
Setup up proposed pocket. Pass control-bucket.
76
echo "deb $DEB_LINE" | sudo tee -a /etc/apt/sources.list
740 by Curtis Hovey
Install deps before branches.
77
sudo apt-add-repository -y ppa:juju/stable
78
sudo apt-get update
1143.2.1 by Curtis Hovey
Place jenkins and lxc on large volumes.
79
sudo apt-get install -y bzr make ntp
740 by Curtis Hovey
Install deps before branches.
80
EOT
81
482 by Curtis Hovey
Added script to setup slave. This could be charmed up.
82
# Place a copy of cloud city on the slave as jenkins using your Lp privs.
83
bzr branch lp:~juju-qa/+junk/cloud-city \
84
    bzr+ssh://jenkins@$SLAVE_ADDRESS/var/lib/jenkins/cloud-city
85
86
# Realise the private branch, then get the other branches.
87
ssh -i $LOCAL_CLOUD_CITY/$KEY jenkins@$SLAVE_ADDRESS <<EOT
88
bzr checkout cloud-city cloud-city
1143.2.1 by Curtis Hovey
Place jenkins and lxc on large volumes.
89
bzr branch lp:workspace-runner workspace-runner
482 by Curtis Hovey
Added script to setup slave. This could be charmed up.
90
bzr branch lp:juju-release-tools juju-release-tools
91
bzr branch lp:juju-ci-tools juju-ci-tools
92
bzr branch lp:juju-ci-tools/repository repository
93
chmod 600 cloud-city/$KEY*
560 by Curtis Hovey
Not my home damn it, Jenkin's home.
94
ln -s /var/lib/jenkins/cloud-city/$KEY .ssh/id_rsa
95
ln -s /var/lib/jenkins/cloud-city/$KEY.pub .ssh/id_rsa.pub
530 by Curtis Hovey
Reluctanlt download the slave.jar again because it is
96
sudo /usr/share/jenkins/bin/download-slave.sh $MASTER
996.2.1 by Curtis Hovey
Update rules to provision a slave.
97
if [[ \$(uname) == "Linux" ]]; then
1143.2.1 by Curtis Hovey
Place jenkins and lxc on large volumes.
98
    cd ~/juju-ci-tools
996.2.1 by Curtis Hovey
Update rules to provision a slave.
99
    make install-deps
1143.2.1 by Curtis Hovey
Place jenkins and lxc on large volumes.
100
    cd ~/workspace-runner
101
    make install
996.2.1 by Curtis Hovey
Update rules to provision a slave.
102
fi
482 by Curtis Hovey
Added script to setup slave. This could be charmed up.
103
EOT
104
105
# Configure Jenkins with launch command
529 by Curtis Hovey
Fix trailing quote.
106
echo "Set the slave's launch method to to use the ssh gateway."