Setting up Jenkins slaves on Rackspace for GlusterFS regression testing
This is for RHEL/CentOS 6.x. The below commands should be run as root.
Install additional required packages
yum -y install cmockery2-devel dbench libacl-devel mock nfs-utils yajl perl-Test-Harness salt-minion
Enable yum-cron for automatic rpm updates
chkconfig yum-cron on
Add the mock user
useradd -g mock mock
Disable eth1
Because GlusterFS can fail if more than 1 ethernet interface
sed -i 's/ONBOOT=yes/ONBOOT=no/' /etc/sysconfig/network-scripts/ifcfg-eth1
Disable IPv6
As per https://access.redhat.com/site/node/8709
sed -i 's/IPV6INIT=yes/IPV6INIT=no/' /etc/sysconfig/network-scripts/ifcfg-eth0
echo 'options ipv6 disable=1' > /etc/modprobe.d/ipv6.conf
chkconfig ip6tables off
sed -i 's/NETWORKING_IPV6=yes/NETWORKING_IPV6=no/' /etc/sysconfig/network
echo ' ' >> /etc/sysctl.conf
echo '# ipv6 support in the kernel, set to 0 by default' >> /etc/sysctl.conf
echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf
echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf
sed -i 's/v inet6/- inet6/' /etc/netconfig
Update hostname
vi /etc/sysconfig/network
vi /etc/hosts
Remove IPv6 and eth1 interface from /etc/hosts
sed -i 's/^10\./#10\./' /etc/hosts
sed -i 's/^2001/#2001/' /etc/hosts
Install ntp
yum -y install ntp
chkconfig ntpdate on
service ntpdate start
Install OpenJDK, needed for Jenkins slaves
yum -y install java-1.7.0-openjdk
Create the Jenkins user
useradd -G wheel jenkins
chmod 755 /home/jenkins
Set the Jenkins password
passwd jenkins
Copy the Jenkins SSH key from build.gluster.org
mkdir /home/jenkins/.ssh
chmod 700 /home/jenkins/.ssh
cp `<somewhere>` /home/jenkins/.ssh/id_rsa
chown -R jenkins:jenkins /home/jenkins/.ssh
chmod 600 /home/jenkins/.ssh/id_rsa
Generate the SSH known hosts file for jenkins user
su - jenkins
mkdir ~/foo
cd ~/foo
git clone `[`ssh://build@review.gluster.org/glusterfs.git`](ssh://build@review.gluster.org/glusterfs.git)
(this will ask if the new host fingerprint should be added. Choose yes)
cd ..
rm -rf ~/foo
exit
Install git from RPMForge
yum -y install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
yum -y --enablerepo=rpmforge-extras update git
Install the GlusterFS patch acceptance tests
git clone git://forge.gluster.org/gluster-patch-acceptance-tests/gluster-patch-acceptance-tests.git /opt/qa
Add the loopback mount point to /etc/fstab
For the 1GB Rackspace VM's use this:
echo '/backingstore /d xfs loop 0 2' >> /etc/fstab
mount /d
For the 2GB and above Rackspace VM's use this:
echo '/dev/xvde /d xfs defaults 0 2' >> /etc/fstab
mount /d
Create the directories needed for the regression testing
JDIRS="/var/log/glusterfs /var/lib/glusterd /var/run/gluster /d /d/archived_builds /d/backends /d/build /d/logs /home/jenkins/root"
mkdir -p $JDIRS
chown jenkins:jenkins $JDIRS
chmod 755 $JDIRS
ln -s /d/build /build
Create the directories where regression logs are archived
ADIRS="/archives/archived_builds /archives/logs"
mkdir -p $ADIRS
chown jenkins:jenkins $ADIRS
chmod 755 $ADIRS
Install Nginx
For making logs available over http
yum -y install http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
yum -y install nginx
lokkit -s http
Copy the Nginx config file into place
cp -f /opt/qa/nginx/default.conf /etc/nginx/conf.d/default.conf
Enable wheel group for sudo
sed -i 's/# %wheel\tALL=(ALL)\tNOPASSWD/%wheel\tALL=(ALL)\tNOPASSWD/' /etc/sudoers
Reboot (for networking changes to take effect)
reboot
Add forward and reverse DNS entries for the slave into Rackspace DNS
Rackspace recently added API calls for its Cloud DNS service, so we should be able to fully automate this part as well now.