-
Notifications
You must be signed in to change notification settings - Fork 234
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Port over scrubbed version of EC2 Docker Worker cookbook
- Loading branch information
Dan Buch
committed
Mar 31, 2015
1 parent
17dee5f
commit 81c37dd
Showing
13 changed files
with
320 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
hostname = `hostname`.strip | ||
|
||
default[:ec2_docker_worker][:docker][:volume][:device] = "/dev/xvdc" | ||
default[:ec2_docker_worker][:docker][:volume][:metadata_size] = '2G' | ||
default[:ec2_docker_worker][:docker][:preseed] = false | ||
default[:ec2_docker_worker][:docker][:dir] = "/mnt/docker" | ||
# The dm_basesize is set at cloud-init time to the max available per container | ||
default[:ec2_docker_worker][:docker][:dm_basesize] = "12G" | ||
default[:ec2_docker_worker][:docker][:dm_fs] = "xfs" | ||
default[:ec2_docker_worker][:docker][:restart_retries] = 30 | ||
default[:ec2_docker_worker][:docker][:restart_retry_delay] = 2 | ||
default[:ec2_docker_worker][:docker][:languages] = %w[ | ||
android | ||
erlang | ||
go | ||
haskell | ||
jvm | ||
node-js | ||
perl | ||
php | ||
python | ||
ruby | ||
] | ||
|
||
default[:travis][:worker][:tld] = "com" | ||
|
||
set[:travis][:worker][:domain] = "bb.travis-ci.#{node[:travis][:worker][:tld]}" | ||
set[:travis][:worker][:fqdn] = "#{hostname}.#{node[:travis][:worker][:domain]}" | ||
set[:travis][:worker][:hostname] = hostname | ||
set[:travis][:worker][:provider] = 'docker' | ||
set[:travis][:worker][:home] = '/home/deploy/travis-worker' | ||
set[:travis][:worker][:env] = 'linux' | ||
|
||
set[:jruby][:version] = '1.7.16' | ||
|
||
set[:collectd][:interval] = 60 | ||
|
||
set[:sudo][:groups] = ["admin"] | ||
set[:sudo][:users] = [{ name: "ubuntu", nopassword: true }] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
name "ec2_docker_worker" | ||
version "0.0.1" | ||
|
||
depends "build-essential" | ||
depends "git" | ||
depends "apt" | ||
depends "networking_basic" | ||
depends "ntp" | ||
depends "java" | ||
depends "jruby" | ||
depends "collectd" | ||
depends "collectd-librato" | ||
depends "travis_worker_collectd" | ||
depends "users" | ||
depends "sudo" | ||
depends "ssh" | ||
depends "monit" | ||
depends "travis_worker" | ||
depends "papertrail" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
apt_repository "restricted-universe-multiverse" do | ||
uri "http://archive.ubuntu.com/ubuntu" | ||
distribution node[:lsb][:codename] | ||
components ["restricted", "universe", "multiverse"] | ||
action :add | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
service 'docker' do | ||
provider Chef::Provider::Service::Upstart | ||
action [:enable, :start] | ||
end | ||
|
||
bash 'zomg wait for docker' do | ||
code 'start docker ; docker version' | ||
retries node[:ec2_docker_worker][:docker][:restart_retries] | ||
retry_delay node[:ec2_docker_worker][:docker][:restart_retry_delay] | ||
end | ||
|
||
node[:ec2_docker_worker][:docker][:languages].each do |lang| | ||
execute "docker pull quay.io/travisci/travis-#{lang}:latest" | ||
execute "docker tag quay.io/travisci/travis-#{lang}:latest travis:#{lang}" | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
user "deploy" do | ||
action :create | ||
end | ||
|
||
include_recipe "build-essential" | ||
include_recipe "apt" | ||
include_recipe "ec2_docker_worker::apt" | ||
include_recipe "ec2_docker_worker::volume_pre" | ||
include_recipe "git" | ||
include_recipe "networking_basic" | ||
include_recipe "ntp" | ||
include_recipe "users" | ||
include_recipe "sudo" | ||
include_recipe "ssh::sshd" | ||
include_recipe "java" | ||
include_recipe "jruby" | ||
|
||
template "/etc/profile.d/jruby.sh" do | ||
source "etc-profile.d-jruby.sh.erb" | ||
owner "root" | ||
mode "0755" | ||
end | ||
|
||
include_recipe "travis_docker" | ||
include_recipe "collectd" | ||
include_recipe "collectd-librato" | ||
include_recipe "travis_worker_collectd::ec2-docker" | ||
include_recipe "monit" | ||
include_recipe "travis_worker::ec2-docker" | ||
include_recipe "papertrail" | ||
|
||
template "/etc/cloud/cloud.cfg" do | ||
source "cloud.cfg.erb" | ||
owner "root" | ||
group "root" | ||
mode "0644" | ||
end | ||
|
||
include_recipe "ec2_docker_worker::volume_post" | ||
include_recipe "ec2_docker_worker::docker_preseed" if !!node[:ec2_docker_worker][:docker][:preseed] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
template "/etc/default/docker.chef" do | ||
source "etc-default-docker.chef.sh.erb" | ||
owner "root" | ||
group "root" | ||
mode 0644 | ||
end | ||
|
||
template "/etc/default/docker" do | ||
source "etc-default-docker.sh.erb" | ||
owner "root" | ||
group "root" | ||
mode 0644 | ||
end | ||
|
||
template "/etc/init/docker.conf" do | ||
source "etc-init-docker.conf.erb" | ||
owner "root" | ||
group "root" | ||
mode 0644 | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
package "lvm2" | ||
package "xfsprogs" | ||
|
||
template "/usr/local/bin/travis-docker-volume-setup" do | ||
source "travis-docker-volume-setup.sh.erb" | ||
owner "root" | ||
group "root" | ||
mode 0755 | ||
variables( | ||
device: node[:ec2_docker_worker][:docker][:volume][:device], | ||
metadata_size: node[:ec2_docker_worker][:docker][:volume][:metadata_size], | ||
) | ||
end |
75 changes: 75 additions & 0 deletions
75
worker_host/ec2_docker_worker/templates/default/cloud.cfg.erb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
# Chef manages this file on <%= node.name %> <3 <3 <3 | ||
# vim:filetype=yaml | ||
disable_root: true | ||
preserve_hostname: true | ||
|
||
bootcmd: | ||
- "echo worker-linux-docker-${INSTANCE_ID#i-} > /etc/hostname" | ||
- "hostname -F /etc/hostname" | ||
|
||
timezone: "UTC" | ||
|
||
cloud_init_modules: | ||
- "migrator" | ||
- "seed_random" | ||
- "bootcmd" | ||
- "write-files" | ||
- "growpart" | ||
- "resizefs" | ||
- "ca-certs" | ||
- "rsyslog" | ||
- "ssh" | ||
|
||
cloud_config_modules: | ||
- "emit_upstart" | ||
- "disk_setup" | ||
- "mounts" | ||
- "ssh-import-id" | ||
- "locale" | ||
- "set-passwords" | ||
- "grub-dpkg" | ||
- "apt-pipelining" | ||
- "apt-configure" | ||
- "package-update-upgrade-install" | ||
- "timezone" | ||
- "disable-ec2-metadata" | ||
- "runcmd" | ||
|
||
cloud_final_modules: | ||
- "scripts-vendor" | ||
- "scripts-per-once" | ||
- "scripts-per-boot" | ||
- "scripts-per-instance" | ||
- "scripts-user" | ||
- "ssh-authkey-fingerprints" | ||
- "keys-to-console" | ||
- "phone-home" | ||
- "final-message" | ||
- "power-state-change" | ||
|
||
system_info: | ||
distro: "ubuntu" | ||
paths: | ||
cloud_dir: "/var/lib/cloud/" | ||
templates_dir: "/etc/cloud/templates/" | ||
upstart_dir: "/etc/init/" | ||
package_mirrors: | ||
- arches: | ||
- "i386" | ||
- "amd64" | ||
failsafe: | ||
primary: "http://archive.ubuntu.com/ubuntu" | ||
security: "http://security.ubuntu.com/ubuntu" | ||
search: | ||
primary: | ||
- "http://%(ec2_region)s.ec2.archive.ubuntu.com/ubuntu/" | ||
- "http://%(availability_zone)s.clouds.archive.ubuntu.com/ubuntu/" | ||
security: [] | ||
- arches: | ||
- "armhf" | ||
- "armel" | ||
- "default" | ||
failsafe: | ||
primary: "http://ports.ubuntu.com/ubuntu-ports" | ||
security: "http://ports.ubuntu.com/ubuntu-ports" | ||
ssh_svcname: "ssh" |
4 changes: 4 additions & 0 deletions
4
worker_host/ec2_docker_worker/templates/default/etc-default-docker.chef.sh.erb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# Chef manages this file on <%= node.name %> <3 <3 <3 | ||
DOCKER_STORAGE_OPT_DM_BASESIZE="<%= node[:ec2_docker_worker][:docker][:dm_basesize] %>" | ||
DOCKER_STORAGE_OPT_DM_FS="<%= node[:ec2_docker_worker][:docker][:dm_fs] %>" | ||
DOCKER_GRAPH_DIR="<%= node[:ec2_docker_worker][:docker][:dir] %>" |
11 changes: 11 additions & 0 deletions
11
worker_host/ec2_docker_worker/templates/default/etc-default-docker.sh.erb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# Chef manages this file on <%= node.name %> <3 <3 <3 | ||
DOCKER_OPTS="\ | ||
--exec-driver=lxc --icc=false \ | ||
-H tcp://127.0.0.1:4243 \ | ||
-H unix:///var/run/docker.sock \ | ||
-g $DOCKER_GRAPH_DIR \ | ||
-s devicemapper \ | ||
--storage-opt dm.basesize=$DOCKER_STORAGE_OPT_DM_BASESIZE \ | ||
--storage-opt dm.datadev=/dev/direct-lvm/data \ | ||
--storage-opt dm.metadatadev=/dev/direct-lvm/metadata \ | ||
--storage-opt dm.fs=$DOCKER_STORAGE_OPT_DM_FS" |
53 changes: 53 additions & 0 deletions
53
worker_host/ec2_docker_worker/templates/default/etc-init-docker.conf.erb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
# Chef manages this file on <%= node.name %> <3 <3 <3 | ||
# vim:filetype=upstart | ||
description "Docker daemon" | ||
|
||
start on (local-filesystems and stopped cloud-final and net-device-up IFACE!=lo) | ||
stop on runlevel [!2345] | ||
limit nofile 524288 1048576 | ||
limit nproc 524288 1048576 | ||
|
||
respawn | ||
|
||
pre-start script | ||
# see also https://github.com/tianon/cgroupfs-mount/blob/master/cgroupfs-mount | ||
if grep -v '^#' /etc/fstab | grep -q cgroup \ | ||
|| [ ! -e /proc/cgroups ] \ | ||
|| [ ! -d /sys/fs/cgroup ]; then | ||
exit 0 | ||
fi | ||
if ! mountpoint -q /sys/fs/cgroup; then | ||
mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup | ||
fi | ||
( | ||
cd /sys/fs/cgroup | ||
for sys in $(awk '!/^#/ { if ($4 == 1) print $1 }' /proc/cgroups); do | ||
mkdir -p $sys | ||
if ! mountpoint -q $sys; then | ||
if ! mount -n -t cgroup -o $sys cgroup $sys; then | ||
rmdir $sys || true | ||
fi | ||
fi | ||
done | ||
) | ||
|
||
travis-docker-volume-setup | ||
end script | ||
|
||
script | ||
DOCKER=/usr/bin/$UPSTART_JOB | ||
DOCKER_OPTS= | ||
if [ -f /etc/default/${UPSTART_JOB}.chef ] ; then | ||
. /etc/default/${UPSTART_JOB}.chef | ||
fi | ||
if [ -f /etc/default/${UPSTART_JOB}.cloud-init ] ; then | ||
. /etc/default/${UPSTART_JOB}.cloud-init | ||
fi | ||
export DOCKER_STORAGE_OPT_DM_BASESIZE | ||
export DOCKER_STORAGE_OPT_DM_FS | ||
export DOCKER_GRAPH_DIR | ||
if [ -f /etc/default/$UPSTART_JOB ]; then | ||
. /etc/default/$UPSTART_JOB | ||
fi | ||
exec "$DOCKER" -d $DOCKER_OPTS | ||
end script |
3 changes: 3 additions & 0 deletions
3
worker_host/ec2_docker_worker/templates/default/etc-profile.d-jruby.sh.erb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# Chef manages this file on <%= node.name %> <3 <3 <3 | ||
# vim:filetype=sh | ||
export PATH=$PATH:/opt/jruby/bin |
22 changes: 22 additions & 0 deletions
22
worker_host/ec2_docker_worker/templates/default/travis-docker-volume-setup.sh.erb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
#!/bin/bash | ||
# Chef manages this file on <%= node.name %> <3 <3 <3 | ||
|
||
set -ex | ||
|
||
: ${DEVICE:=<%= @device %>} | ||
: ${METADATA_SIZE:=<%= @metadata_size %>} | ||
|
||
if [[ -e /dev/direct-lvm/metadata ]] ; then | ||
echo "$(basename $0): Metadata volume already exists. Assuming set up" | ||
exit 0 | ||
fi | ||
|
||
pvcreate "$DEVICE" | ||
|
||
vgcreate direct-lvm $DEVICE | ||
|
||
lvcreate -n metadata direct-lvm --size "$METADATA_SIZE" | ||
dd if=/dev/zero of=/dev/direct-lvm/metadata bs=1M count=10 | ||
|
||
lvcreate -n data direct-lvm -l '100%FREE' | ||
dd if=/dev/zero of=/dev/direct-lvm/data bs=1M count=10 |