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." |