From 128b3e738f0a3c30342b0d1c7554a3acc49ca8b7 Mon Sep 17 00:00:00 2001 From: Andrew Grimberg Date: Fri, 23 Sep 2016 10:56:38 -0700 Subject: Jenkins spin-up scripts Scripts used for Jenkins minion startup when used with OpenStack plugin managed minions Change-Id: I616222a0fab12d8f283b5e633a612551c0d5f313 Signed-off-by: Andrew Grimberg --- jenkins-scripts/README | 8 +++++ jenkins-scripts/basic_settings.sh | 54 ++++++++++++++++++++++++++++++++++ jenkins-scripts/create_jenkins_user.sh | 41 ++++++++++++++++++++++++++ jenkins-scripts/jenkins-init-script.sh | 27 +++++++++++++++++ jenkins-scripts/system_type.sh | 31 +++++++++++++++++++ 5 files changed, 161 insertions(+) create mode 100644 jenkins-scripts/README create mode 100755 jenkins-scripts/basic_settings.sh create mode 100755 jenkins-scripts/create_jenkins_user.sh create mode 100755 jenkins-scripts/jenkins-init-script.sh create mode 100755 jenkins-scripts/system_type.sh (limited to 'jenkins-scripts') diff --git a/jenkins-scripts/README b/jenkins-scripts/README new file mode 100644 index 000000000..cff7f26f8 --- /dev/null +++ b/jenkins-scripts/README @@ -0,0 +1,8 @@ +The scripts in this directory are used by the Jenkins spin-up component +for dynamic minions. + +The spinup script will be as follows (${system_type} will be replaced +with the appropriate system_type script) + +git clone https://gerrit.fd.io/r/p/ci-management.git /ci-management +/ci-management/jenkins-scripts/jenkins-init-script.sh diff --git a/jenkins-scripts/basic_settings.sh b/jenkins-scripts/basic_settings.sh new file mode 100755 index 000000000..412dfff38 --- /dev/null +++ b/jenkins-scripts/basic_settings.sh @@ -0,0 +1,54 @@ +#!/bin/bash +# @License EPL-1.0 +############################################################################## +# Copyright (c) 2016 The Linux Foundation and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +############################################################################## + +case "$(facter operatingsystem)" in + Ubuntu) + apt-get update + # make sure that the ca-certs are properly updated + /usr/sbin/update-ca-certificates + + # attach to the fd.io.dev apt repo + echo 'deb http://nexus.fd.io/content/repositories/fd.io.dev/ ./' >> /etc/apt/sources.list + ;; + *) + # Do nothing on other distros for now + ;; +esac + +IPADDR=$(facter ipaddress) +HOSTNAME=$(facter hostname) +FQDN=$(facter fqdn) + +echo "${IPADDR} ${HOSTNAME} ${FQDN}" >> /etc/hosts + +#Increase limits +cat < /etc/security/limits.d/jenkins.conf +jenkins soft nofile 16000 +jenkins hard nofile 16000 +EOF + +cat <> /etc/ssh/ssh_config +Host * + ServerAliveInterval 60 + +# we don't want to do SSH host key checking on spin-up systems +# Don't use CIDR since SSH won't parse it +# 10.30.48.0/23 +Host 10.30.48.* 10.30.49.* + StrictHostKeyChecking no + UserKnownHostsFile /dev/null +EOSSH + +cat < /etc/ssh/ssh_known_hosts +[gerrit.fd.io]:29418,[162.253.54.31]:29418 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC76FxV43JIk/HpI5JUZfizmak9znK/QzsjPoNHt/Eo2Vp68kvJIRZ+PzI7RJR0NsdsXlyqzRsGuH+Cj99ZuLVjNMqz1Y1A5y6itYAgT42KDcnV/JoPx6WV+THdQ+oMSp2dINtvD1kc6Om8iAA2CwYOfIZ/FQS5A9OX2xzFopo4qAN3nRk9kpcHyC698R5SDNZBbk6eqlsBz0827KJrSpOSEEMBhtroBM4JV8vImcSWeJuQ5QFdZgQdQaI8R5YFBRbWu3mDSgJfjJk89xT2CkUiqIynNJeiQMM4IZxcdQB3zJ1RUEJepxv77yV09NZ8jwhaN6X659UJZjsCZ5ffvc77 +EOKNOWN + +# vim: sw=2 ts=2 sts=2 et : diff --git a/jenkins-scripts/create_jenkins_user.sh b/jenkins-scripts/create_jenkins_user.sh new file mode 100755 index 000000000..779d1f7c1 --- /dev/null +++ b/jenkins-scripts/create_jenkins_user.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# @License EPL-1.0 +############################################################################## +# Copyright (c) 2016 The Linux Foundation and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +############################################################################## + +####################### +# Create Jenkins User # +####################### + +OS=$(facter operatingsystem | tr '[:upper:]' '[:lower:]') + +useradd -m -s /bin/bash jenkins + +# Check if docker group exists +grep -q docker /etc/group +if [ "$?" == '0' ] +then + # Add jenkins user to docker group + usermod -a -G docker jenkins +fi + +# Check if mock group exists +grep -q mock /etc/group +if [ "$?" == '0' ] +then + # Add jenkins user to mock group so it can build RPMs using mock if available + usermod -a -G mock jenkins +fi + +mkdir /home/jenkins/.ssh +mkdir /w +cp -r /home/${OS}/.ssh/authorized_keys /home/jenkins/.ssh/authorized_keys +# Generate ssh key for use by Robot jobs +echo -e 'y\n' | ssh-keygen -N "" -f /home/jenkins/.ssh/id_rsa -t rsa +chown -R jenkins:jenkins /home/jenkins/.ssh /w diff --git a/jenkins-scripts/jenkins-init-script.sh b/jenkins-scripts/jenkins-init-script.sh new file mode 100755 index 000000000..67987b54d --- /dev/null +++ b/jenkins-scripts/jenkins-init-script.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# @License EPL-1.0 +############################################################################## +# Copyright (c) 2016 The Linux Foundation and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +############################################################################## + +# vim: ts=4 sw=4 sts=4 et : + +cd /ci-management/jenkins-scripts +chmod +x ./*.sh +./system_type.sh + +source /tmp/system_type.sh +./basic_settings.sh +if [ -f "${SYSTEM_TYPE}.sh" ] +then + ./"${SYSTEM_TYPE}.sh" +fi + +# Create the jenkins user last so that hopefully we don't have to deal with +# guard files +./create_jenkins_user.sh diff --git a/jenkins-scripts/system_type.sh b/jenkins-scripts/system_type.sh new file mode 100755 index 000000000..88210a4ce --- /dev/null +++ b/jenkins-scripts/system_type.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# @License EPL-1.0 +############################################################################## +# Copyright (c) 2016 The Linux Foundation and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +############################################################################## + +HOST=$(/bin/hostname) +SYSTEM_TYPE='' + +IFS=',' +for i in "basebuild,basebuild" \ + "centos,centos" \ + "ubuntu1404,ubuntu1404" \ + "ubuntu1604,ubuntu1604" +do set -- $i + if [[ $HOST == *"$1"* ]]; then + SYSTEM_TYPE="$2" + break + fi +done + +# Write out the system type to an environment file to then be sourced +echo "SYSTEM_TYPE=${SYSTEM_TYPE}" > /tmp/system_type.sh + +# vim: sw=4 ts=4 sts=4 et : -- cgit 1.2.3-korg