vx-worker 0.2.0.pre33 → 0.2.0.pre34

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/docker/.gitignore +1 -0
  3. data/docker/Dockerfile +30 -10
  4. data/docker/build.sh +47 -0
  5. data/docker/playbooks/group_vars/all.yml +24 -0
  6. data/docker/playbooks/roles/bootstrap/main.yml +11 -0
  7. data/docker/playbooks/roles/build-essential/main.yml +19 -0
  8. data/docker/playbooks/roles/cleanup/main.yml +17 -0
  9. data/docker/playbooks/roles/elasticsearch/main.yml +38 -0
  10. data/docker/playbooks/roles/erlang/main.yml +15 -0
  11. data/docker/playbooks/roles/java/main.yml +59 -0
  12. data/docker/playbooks/roles/mysql/main.yml +15 -0
  13. data/docker/playbooks/roles/nodejs/main.yml +16 -0
  14. data/docker/playbooks/roles/phantomjs/main.yml +34 -0
  15. data/docker/playbooks/roles/postgresql/files/pg_hba.conf +2 -0
  16. data/docker/playbooks/roles/postgresql/main.yml +29 -0
  17. data/docker/playbooks/roles/rabbitmq/main.yml +20 -0
  18. data/docker/playbooks/roles/rbenv/files/gemrc +5 -0
  19. data/docker/playbooks/roles/rbenv/files/rbenv.patch +4 -0
  20. data/docker/playbooks/roles/rbenv/main.yml +52 -0
  21. data/docker/playbooks/roles/rbenv/templates/version +1 -0
  22. data/docker/playbooks/roles/redis/main.yml +21 -0
  23. data/docker/playbooks/roles/services/main.yml +8 -0
  24. data/docker/playbooks/roles/services/templates/docker-boot.upstart.conf +11 -0
  25. data/docker/playbooks/site.yml +21 -0
  26. data/lib/vx/worker/configuration.rb +6 -6
  27. data/lib/vx/worker/version.rb +1 -1
  28. data/spec/lib/worker/configuration_spec.rb +9 -9
  29. metadata +32 -12
  30. data/docker/bootstrap.sh +0 -106
  31. data/docker/sv-enable +0 -26
  32. data/docker/sv-gen +0 -50
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7fdd0afcea78f520eda09ccca9b0c94132d268c9
4
- data.tar.gz: bee94d952102d53cbd7da0bf088c694cea64832b
3
+ metadata.gz: f156dc45c556ad160b6d8feaa4f9aa5f3df5732b
4
+ data.tar.gz: d2740321400b14f56f47367105833b301fd57fb4
5
5
  SHA512:
6
- metadata.gz: 68afc13e5976e7e917a5dd9840b692513aa9f0bc48c03262b037ebc010f20a7f3ba3e085fd471cf694d5f68276caa4d85dacb86d0837d9f02ba0e44223e086b9
7
- data.tar.gz: cf2d8305ccafc91229e5ccc09344b547299261a9b0e04e62b2599f327a3f9b3a1cba30029b051d719a302930ea20cd6532169240fdb536f9a755df4e2ed6798e
6
+ metadata.gz: 4fadda2537e204fcfc716ad84bd1c814415517b6c5973515eeedd2c9110438c4d322f64a9fcae781febba842f60358f146cd29ea2ed9a9c7b3a7b40b313b24b0
7
+ data.tar.gz: 35cd903b4bbf2207ef4b5c71f695cb053f39e7cab226adf16045e8c3d2597ae7f6c8885b39f5c7580921143090f76b2a7ff9c1ca4b16543e4c98adea24022b7e
data/docker/.gitignore ADDED
@@ -0,0 +1 @@
1
+ .ansible_hosts
data/docker/Dockerfile CHANGED
@@ -1,15 +1,35 @@
1
- FROM ubuntu:12.04
1
+ # ssh
2
2
 
3
- # disable questions
4
- ENV DEBIAN_FRONTEND noninteractive
3
+ FROM ubuntu:12.04
5
4
 
6
- # disable service autostarting
7
5
  ENV RUNLEVEL 1
8
6
 
9
- # add runit helpers
10
- ADD ./sv-gen /usr/local/bin/sv-gen
11
- ADD ./sv-enable /usr/local/bin/sv-enable
7
+ RUN echo "deb mirror://mirrors.ubuntu.com/mirrors.txt precise main restricted universe" > /etc/apt/sources.list
8
+ RUN apt-get -qy update
9
+
10
+ # add ssh
11
+ RUN DEBIAN_FRONTEND=noninteractive RUNLEVEL=1 apt-get install -qy openssh-server
12
+ RUN sed -i 's/start on filesystem/start on filesystem or dockerboot/' /etc/init/ssh.conf
13
+
14
+ # add dbus, need for upstart jobs
15
+ RUN DEBIAN_FRONTEND=noninteractive RUNLEVEL=1 apt-get install -qy dbus
16
+ RUN sed -i 's/start on local-filesystems/start on local-filesystems or dockerboot/' /etc/init/dbus.conf
17
+
18
+ # change /bin/mknod, need for openjdk-7-jdk => fuse
19
+ RUN dpkg-divert --local --rename --add /sbin/mknod && ln -s /bin/true /sbin/mknod
20
+
21
+ # create user
22
+ RUN useradd -m vexor -s /bin/bash
23
+ RUN echo "vexor:vexor" | chpasswd
24
+ RUN apt-get -qy install sudo
25
+ RUN echo "vexor ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers
26
+
27
+ # fix locales
28
+ RUN locale-gen en_US.UTF-8
29
+ RUN dpkg-reconfigure -fnoninteractive locales
30
+ RUN update-locale LC_ALL="en_US.UTF-8" LANG="en_US.UTF-8" LANGUAGE="en_US"
31
+
32
+ # install python and modules, needed for ansible
33
+ RUN DEBIAN_FRONTEND=noninteractive RUNLEVEL=1 apt-get install -qy python
12
34
 
13
- # run bootstrap
14
- ADD ./bootstrap.sh /tmp/bootstrap.sh
15
- RUN /tmp/bootstrap.sh && rm /tmp/bootstrap.sh
35
+ ENTRYPOINT ["/sbin/init", "--startup-event", "dockerboot"]
data/docker/build.sh ADDED
@@ -0,0 +1,47 @@
1
+ #!/bin/bash
2
+
3
+ set -e
4
+
5
+ DOCKER="docker -H tcp://localhost"
6
+
7
+ if [ -z $CONTAINER ] ; then
8
+ echo "* Build SSH image"
9
+ ${DOCKER} build -t dmexe/precise-ssh:latest .
10
+
11
+ CONTAINER=$(${DOCKER} run -d dmexe/precise-ssh)
12
+ echo "* Spawn container ${CONTAINER}"
13
+ fi
14
+
15
+ if [ -z $IMAGE_TAG ] ; then
16
+ IMAGE_TAG=latest
17
+ fi
18
+
19
+ if [ -z $IMAGE_NAME ] ; then
20
+ IMAGE_NAME=dmexe/precise
21
+ fi
22
+
23
+ ADDR=$(${DOCKER} inspect ${CONTAINER} | grep IPAddress | cut -d '"' -f 4)
24
+ echo "* Using container IPAddress ${ADDR}"
25
+
26
+ ANSIBLE_HOSTS=$(pwd)/.ansible_hosts
27
+ echo $ADDR > $ANSIBLE_HOSTS
28
+ export ANSIBLE_HOSTS
29
+ export ANSIBLE_HOST_KEY_CHECKING=False
30
+
31
+ if [ ! -z $TAGS ] ; then
32
+ TAGS=" --tags ${TAGS}"
33
+ fi
34
+
35
+ ANSIBLE_OPTS="--ask-pass -u vexor -s ${TAGS}"
36
+
37
+ echo "* Run playbooks, type 'vexor' in 'SSH password:' prompt"
38
+ ansible-playbook playbooks/site.yml $ANSIBLE_OPTS
39
+
40
+ echo "* Kill container ${CONTAINER}"
41
+ $DOCKER kill $CONTAINER
42
+
43
+ echo "* Commit container ${CONTAINER} to ${IMAGE_NAME}:${IMAGE_TAG}"
44
+ $DOCKER commit ${CONTAINER} ${IMAGE_NAME}:${IMAGE_TAG}
45
+
46
+ echo "* DONE"
47
+
@@ -0,0 +1,24 @@
1
+ ---
2
+ pg_version: 9.3
3
+ mysql_version: 5.5
4
+ phantomjs_version: 1.9.2
5
+ elasticsearch_version: 0.90.8
6
+
7
+ services_onboot:
8
+ - postgresql
9
+ - mysql
10
+ - redis-server
11
+
12
+ ruby_versions:
13
+ - 2.0.0-p353
14
+ - 1.9.3-p484
15
+ - 1.8.7-p374
16
+ - jruby-1.7.9
17
+
18
+ java_packages:
19
+ - openjdk-7-jdk
20
+ - icedtea-7-plugin
21
+ java_ora_versions:
22
+ - oracle-java7-installer
23
+ - oracle-java8-installer
24
+ java_default_version: java-1.7.0-openjdk-amd64
@@ -0,0 +1,11 @@
1
+ ---
2
+ - hosts: all
3
+
4
+ tasks:
5
+ - name: bootstrap | install packages
6
+ apt: pkg=$item state=latest install_recommends=no
7
+ with_items:
8
+ - python-apt
9
+ - python-pycurl
10
+ - git-core
11
+ - patch
@@ -0,0 +1,19 @@
1
+ ---
2
+ - hosts: all
3
+
4
+ tasks:
5
+
6
+ - name: build-essential | install required packages
7
+ apt: pkg=$item state=latest install_recommends=no
8
+ with_items:
9
+ - build-essential
10
+ - libcurl4-openssl-dev
11
+ - libssl-dev
12
+ - libxml2-dev
13
+ - libxslt1-dev
14
+ - autoconf
15
+ - libyaml-dev
16
+ - libreadline6
17
+ - libreadline6-dev
18
+ - zlib1g
19
+ - zlib1g-dev
@@ -0,0 +1,17 @@
1
+ ---
2
+ - hosts: all
3
+ tags: cleanup
4
+
5
+ tasks:
6
+
7
+ - name: cleanup | stop dbus-daemon service
8
+ service: name=dbus state=stopped
9
+
10
+ - name: cleanup | remove dbus-daemon pid file
11
+ file: path=/var/run/dbus/pid state=absent
12
+
13
+ - name: cleanup | clean apt cache
14
+ shell: apt-get -qy clean
15
+
16
+ - name: cleanup | autoremove apt packages
17
+ shell: apt-get -qy autoremove
@@ -0,0 +1,38 @@
1
+ ---
2
+ - hosts: all
3
+ tags: elasticsearch
4
+ vars:
5
+ elasticsearch_url: https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-${elasticsearch_version}.deb
6
+ elasticsearch_root: /usr/share/elasticsearch
7
+ elasticsearch_deb: /tmp/elasticsearch-${elasticsearch_version}.deb
8
+
9
+ tasks:
10
+
11
+ - name: elasticsearch | check installed
12
+ shell: test -f ${elasticsearch_root}/v${elasticsearch_version} && echo -n 'yes' || echo -n 'no'
13
+ register: elasticsearch_installed
14
+
15
+ - name: elasticsearch | download deb
16
+ get_url: dest=${elasticsearch_deb} url=${elasticsearch_url}
17
+ when: elasticsearch_installed.stdout == 'no'
18
+
19
+ - name: elasticsearch | install deb
20
+ shell: >
21
+ dpkg -i ${elasticsearch_deb}
22
+ when: elasticsearch_installed.stdout == 'no'
23
+
24
+ - name: elasticsearch | stop elasticsearch service
25
+ service: name=elasticsearch state=stopped
26
+ when: elasticsearch_installed.stdout == 'no'
27
+
28
+ - name: elasticsearch | remove temp files
29
+ shell: rm -f ${elasticsearch_deb}
30
+ when: elasticsearch_installed.stdout == 'no'
31
+
32
+ - name: elasticsearch | touch version
33
+ shell: touch ${elasticsearch_root}/v${elasticsearch_version}
34
+ when: elasticsearch_installed.stdout == 'no'
35
+
36
+ - name: elasticsearch | stop service
37
+ service: name=elasticsearch state=stopped
38
+ when: elasticsearch_installed.stdout == 'no'
@@ -0,0 +1,15 @@
1
+ ---
2
+ - hosts: all
3
+
4
+ tasks:
5
+
6
+ - name: erlang | add apt repo
7
+ apt_repository: repo='deb http://packages.erlang-solutions.com/debian precise contrib' state=present
8
+
9
+ - name: erlang | add apt key
10
+ apt_key: id=A14F4FCA url=http://packages.erlang-solutions.com/debian/erlang_solutions.asc state=present
11
+
12
+ - name: erlang | install packages
13
+ apt: pkg=$item state=latest update_cache=true
14
+ with_items:
15
+ - erlang-nox
@@ -0,0 +1,59 @@
1
+ ---
2
+ - hosts: all
3
+ tags: java
4
+ vars:
5
+ jdk_switcher_root: /usr/local/jdk_switcher
6
+ jdk_switcher_bin_path: /usr/local/bin/jdk_switcher.sh
7
+
8
+ tasks:
9
+
10
+ - name: java | prepare fuse
11
+ shell: touch /dev/fuse creates=/dev/fuse
12
+
13
+ - name: java | install fuse
14
+ apt: pkg=fuse state=present
15
+
16
+ - name: java | install required packages
17
+ apt: pkg=$item state=latest
18
+ with_items:
19
+ - debconf
20
+ - debconf-utils
21
+
22
+ - name: java | install openjdk packages
23
+ apt: pkg=$item state=latest install_recommends=no
24
+ with_items: $java_packages
25
+
26
+ - name: java | add webupd8team repo
27
+ apt_repository: repo='deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main' state=present
28
+
29
+ - name: java | add webupd8team repo key
30
+ apt_key: url=http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0xC2518248EEA14886 state=present
31
+
32
+ - name: java | retrieve status of oracle licences
33
+ shell: >
34
+ debconf-get-selections | grep -q ${item} && echo -n 'yes' || echo -n 'no'
35
+ register: java_license_status
36
+ with_items: $java_ora_versions
37
+
38
+ - name: java | accept oracle licenses
39
+ shell: >
40
+ /bin/echo -e ${item.item} shared/accepted-oracle-license-v1-1 select true | debconf-set-selections
41
+ when: item.stdout != "yes"
42
+ with_items: ${java_license_status.results}
43
+
44
+ - name: java | apt-get update (to fix cannot be authenticated error)
45
+ shell: apt-get update
46
+
47
+ - name: java | install oracle versions
48
+ apt: pkg=$item state=latest
49
+ with_items: $java_ora_versions
50
+
51
+ - name: java | update jdk_switcher repo
52
+ git: repo=git://github.com/michaelklishin/jdk_switcher.git dest=$jdk_switcher_root
53
+
54
+ - name: java | copy jdk_switcher to path
55
+ file: path=${jdk_switcher_bin_path} src=${jdk_switcher_root}/jdk_switcher.sh state=link
56
+
57
+ - name: java | set default version
58
+ shell: >
59
+ update-java-alternatives -s ${java_default_version}
@@ -0,0 +1,15 @@
1
+ ---
2
+ - hosts: all
3
+
4
+ tasks:
5
+
6
+ - name: mysql | install packages
7
+ apt: pkg=$item state=latest install_recommends=no
8
+ environment:
9
+ RUNLEVEL: '1'
10
+ with_items:
11
+ - mysql-server-${mysql_version}
12
+ - libmysqlclient-dev
13
+
14
+ - name: mysql | stop mysql server
15
+ service: name=mysql state=stopped
@@ -0,0 +1,16 @@
1
+ ---
2
+ - hosts: all
3
+ tags: nodejs
4
+
5
+ tasks:
6
+
7
+ - name: nodejs | add apt repo
8
+ apt_repository: repo='deb http://ppa.launchpad.net/chris-lea/node.js/ubuntu precise main' state=present
9
+
10
+ - name: nodejs | add apt key
11
+ apt_key: id=C7917B12 url=http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0xB9316A7BC7917B12 state=present
12
+
13
+ - name: nodejs | install packages
14
+ apt: pkg=$item state=latest update_cache=true
15
+ with_items:
16
+ - nodejs
@@ -0,0 +1,34 @@
1
+ ---
2
+ - hosts: all
3
+ tags: phantomjs
4
+ vars:
5
+ phantomjs_root: /usr/local/phantomjs-${phantomjs_version}-linux-x86_64
6
+ phantomjs_url: https://phantomjs.googlecode.com/files/phantomjs-${phantomjs_version}-linux-x86_64.tar.bz2
7
+ phantomjs_archive: /tmp/phantomjs-${phantomjs_version}.tar.bz2
8
+
9
+ tasks:
10
+
11
+ - name: phantomjs | check installed
12
+ shell: test -d ${phantomjs_root} && echo -n 'yes' || echo -n 'no'
13
+ register: phantomjs_installed
14
+
15
+ - name: phantomjs | download archive
16
+ get_url: dest=${phantomjs_archive} url=${phantomjs_url}
17
+ when: phantomjs_installed.stdout == 'no'
18
+
19
+ - name: phantomjs | install required packages
20
+ apt: pkg=${item}
21
+ with_items:
22
+ - bzip2
23
+
24
+ - name: phantomjs | unpack archive
25
+ shell: >
26
+ tar -jxf ${phantomjs_archive} -C /usr/local
27
+ when: phantomjs_installed.stdout == 'no'
28
+
29
+ - name: phantomjs | add to path
30
+ file: src=${phantomjs_root}/bin/phantomjs dest=/usr/local/bin/phantomjs state=link
31
+
32
+ - name: phantomjs | remove temp files
33
+ shell: rm -f ${phantomjs_archive}
34
+ when: phantomjs_installed.stdout == 'no'
@@ -0,0 +1,2 @@
1
+ local all all trust
2
+ host all all all trust
@@ -0,0 +1,29 @@
1
+ #
2
+ # require packages: python-apt, python-pycurl
3
+ #
4
+ ---
5
+ - hosts: all
6
+
7
+ tasks:
8
+
9
+ - name: postgresql | add apt repo
10
+ apt_repository: repo='deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main' state=present
11
+
12
+ - name: postgresql | add apt key
13
+ apt_key: id=ACCC4CF8 url=https://www.postgresql.org/media/keys/ACCC4CF8.asc state=present
14
+
15
+ - name: postgresql | install packages
16
+ apt: pkg=$item state=latest update_cache=true
17
+ environment:
18
+ RUNLEVEL: '1'
19
+ with_items:
20
+ - postgresql-${pg_version}
21
+ - postgresql-client-${pg_version}
22
+ - postgresql-contrib-${pg_version}
23
+ - libpq-dev
24
+
25
+ - name: postgresql | create pg_hba.conf
26
+ copy: src=files/pg_hba.conf dest=/etc/postgresql/${pg_version}/main/pg_hba.conf
27
+
28
+ - name: postgresql | stop postgresql server
29
+ service: name=postgresql state=stopped
@@ -0,0 +1,20 @@
1
+ ---
2
+ - hosts: all
3
+
4
+ tasks:
5
+
6
+ - name: rabbitmq | add apt repo
7
+ apt_repository: repo='deb http://www.rabbitmq.com/debian/ testing main' state=present
8
+
9
+ - name: rabbitmq | add apt key
10
+ apt_key: url=http://www.rabbitmq.com/rabbitmq-signing-key-public.asc state=present
11
+
12
+ - name: rabbitmq | install packages
13
+ apt: pkg=$item state=latest update_cache=true
14
+ environment:
15
+ RUNLEVEL: '1'
16
+ with_items:
17
+ - rabbitmq-server
18
+
19
+ - name: rabbitmq | stop rabbitmq server
20
+ service: name=rabbitmq-server state=stopped
@@ -0,0 +1,5 @@
1
+ ---
2
+ :sources:
3
+ - http://gems.rubyforge.org
4
+ - http://gems.github.com
5
+ gem: --no-ri --no-rdoc
@@ -0,0 +1,4 @@
1
+ 24c24
2
+ < RBENV_ROOT="${HOME}/.rbenv"
3
+ ---
4
+ > RBENV_ROOT="/usr/local/rbenv"
@@ -0,0 +1,52 @@
1
+ ---
2
+ - hosts: all
3
+ vars:
4
+ rbenv_root: /usr/local/rbenv
5
+ ruby_build_root: /usr/local/ruby-build
6
+ rbenv_path: /usr/local/bin/rbenv
7
+ tags: ruby
8
+
9
+ tasks:
10
+
11
+ - name: rbenv | update rbenv repo
12
+ git: repo=git://github.com/sstephenson/rbenv.git dest=$rbenv_root version=v0.4.0
13
+ register: rbenv_repo_created
14
+
15
+ - name: rbenv | add rbenv to path
16
+ file: src=${rbenv_root}/bin/rbenv path=${rbenv_path} state=link
17
+
18
+ - name: rbenv | create rbenv.patch file
19
+ copy: src=files/rbenv.patch dest=${rbenv_root}/rbenv.patch
20
+ register: rbenv_patch_created
21
+
22
+ - name: rbenv | apply rbenv.patch
23
+ command: patch -N ${rbenv_root}/libexec/rbenv ${rbenv_root}/rbenv.patch
24
+ when: rbenv_patch_created.changed or rbenv_repo_created.changed
25
+
26
+ - name: rbenv | update ruby-build repo
27
+ git: repo=git://github.com/sstephenson/ruby-build.git dest=${ruby_build_root}
28
+
29
+ - name: rbenv | create gemrc
30
+ copy: src=files/gemrc dest=/etc/gemrc
31
+
32
+ - name: rbenv | check installed ruby versions
33
+ stat: path=${rbenv_root}/versions/${item}/bin
34
+ register: rbenv_installed_versions
35
+ with_items: $ruby_versions
36
+
37
+ - name: rbenv | install ruby versions
38
+ shell: >
39
+ ${ruby_build_root}/bin/ruby-build ${item.item} ${rbenv_root}/versions/${item.item} &&
40
+ env PATH=${rbenv_root}/versions/${item.item}/bin:\$PATH gem install bundler
41
+ with_items: ${rbenv_installed_versions.results}
42
+ when: item.stat.exists == False
43
+ notify:
44
+ - rbenv | rehash
45
+
46
+ - name: rbenv | set global version
47
+ template: src=templates/version dest=${rbenv_root}/version
48
+
49
+ handlers:
50
+
51
+ - name: rbenv | rehash
52
+ shell: rbenv rehash
@@ -0,0 +1 @@
1
+ {{ ruby_versions[0] }}
@@ -0,0 +1,21 @@
1
+ ---
2
+ - hosts: all
3
+
4
+ tasks:
5
+
6
+ - name: redis | add apt repo
7
+ apt_repository: repo='deb http://ppa.launchpad.net/chris-lea/redis-server/ubuntu precise main' state=present
8
+
9
+ - name: redis | add apt key
10
+ apt_key: id=C7917B12 url=http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0xB9316A7BC7917B12 state=present
11
+
12
+ - name: redis | install packages
13
+ apt: pkg=$item state=latest update_cache=true
14
+ environment:
15
+ RUNLEVEL: '1'
16
+ with_items:
17
+ - redis-server
18
+ - redis-tools
19
+
20
+ - name: redis | stop redis server
21
+ service: name=redis-server state=stopped
@@ -0,0 +1,8 @@
1
+ ---
2
+ - hosts: all
3
+ tags: services
4
+
5
+ tasks:
6
+
7
+ - name: services | create upstart job
8
+ template: src=templates/docker-boot.upstart.conf dest=/etc/init/docker-boot.conf
@@ -0,0 +1,11 @@
1
+ description "Start sercices on docker boot"
2
+ start on (dockerboot and started dbus)
3
+ stop on runlevel [06]
4
+
5
+ task
6
+
7
+ script
8
+ {% for srv in services_onboot %}
9
+ service {{ srv }} start
10
+ {% endfor %}
11
+ end script
@@ -0,0 +1,21 @@
1
+ ---
2
+ - hosts: all
3
+
4
+ - include: roles/bootstrap/main.yml
5
+ - include: roles/build-essential/main.yml
6
+
7
+ - include: roles/java/main.yml
8
+ - include: roles/rbenv/main.yml
9
+ - include: roles/erlang/main.yml
10
+ - include: roles/nodejs/main.yml
11
+
12
+ - include: roles/phantomjs/main.yml
13
+
14
+ - include: roles/postgresql/main.yml
15
+ - include: roles/redis/main.yml
16
+ - include: roles/mysql/main.yml
17
+ - include: roles/rabbitmq/main.yml
18
+ - include: roles/elasticsearch/main.yml
19
+
20
+ - include: roles/services/main.yml
21
+ - include: roles/cleanup/main.yml
@@ -22,15 +22,15 @@ module Vx
22
22
  path_prefix: nil,
23
23
 
24
24
  docker: {
25
- user: "ci",
26
- password: "ci",
27
- init: %w{ /usr/bin/runsvdir -P /etc/service },
28
- image: "dmexe/ci",
29
- remote_dir: "/home/ci",
25
+ user: nil,
26
+ password: nil,
27
+ init: nil,
28
+ image: nil,
29
+ remote_dir: nil
30
30
  },
31
31
 
32
32
  local: {
33
- remote_dir: "/tmp/.local_connector"
33
+ remote_dir: nil
34
34
  }
35
35
 
36
36
  def timeout
@@ -1,5 +1,5 @@
1
1
  module Vx
2
2
  module Worker
3
- VERSION = "0.2.0.pre33"
3
+ VERSION = "0.2.0.pre34"
4
4
  end
5
5
  end
@@ -5,26 +5,26 @@ describe Vx::Worker::Configuration do
5
5
  subject { config }
6
6
 
7
7
  its(:run) { should eq :docker }
8
- its(:docker) { should be }
9
- its(:timeout) { should eq 1800 }
10
- its(:amqp_url) { should be_nil }
8
+ its(:docker) { should be }
9
+ its(:timeout) { should eq 1800 }
10
+ its(:amqp_url) { should be_nil }
11
11
  its(:connector_options) { should eq config.docker }
12
12
  its(:connector_remote_dir) { should eq config.docker.remote_dir }
13
13
 
14
14
  context "docker" do
15
15
  subject { config.docker }
16
16
 
17
- its(:user) { should be }
18
- its(:password) { should be }
19
- its(:init) { should be }
20
- its(:image) { should be }
21
- its(:remote_dir) { should be }
17
+ its(:user) { should be_nil }
18
+ its(:password) { should be_nil }
19
+ its(:init) { should be_nil }
20
+ its(:image) { should be_nil }
21
+ its(:remote_dir) { should be_nil }
22
22
  end
23
23
 
24
24
  context "local" do
25
25
  subject { config.local }
26
26
 
27
- its(:remote_dir){ should be }
27
+ its(:remote_dir){ should be_nil }
28
28
  end
29
29
 
30
30
  context ".configure" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vx-worker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0.pre33
4
+ version: 0.2.0.pre34
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dmitry Galinsky
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-16 00:00:00.000000000 Z
11
+ date: 2013-12-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: vx-common
@@ -16,42 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.2.0.pre33
19
+ version: 0.2.0.pre34
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.2.0.pre33
26
+ version: 0.2.0.pre34
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: vx-message
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 0.2.0.pre33
33
+ version: 0.2.0.pre34
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 0.2.0.pre33
40
+ version: 0.2.0.pre34
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: vx-container_connector
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - '='
46
46
  - !ruby/object:Gem::Version
47
- version: 0.2.0.pre33
47
+ version: 0.2.0.pre34
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - '='
53
53
  - !ruby/object:Gem::Version
54
- version: 0.2.0.pre33
54
+ version: 0.2.0.pre34
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: vx-common-amqp
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -150,10 +150,30 @@ files:
150
150
  - LICENSE.txt
151
151
  - Rakefile
152
152
  - bin/vx-worker
153
+ - docker/.gitignore
153
154
  - docker/Dockerfile
154
- - docker/bootstrap.sh
155
- - docker/sv-enable
156
- - docker/sv-gen
155
+ - docker/build.sh
156
+ - docker/playbooks/group_vars/all.yml
157
+ - docker/playbooks/roles/bootstrap/main.yml
158
+ - docker/playbooks/roles/build-essential/main.yml
159
+ - docker/playbooks/roles/cleanup/main.yml
160
+ - docker/playbooks/roles/elasticsearch/main.yml
161
+ - docker/playbooks/roles/erlang/main.yml
162
+ - docker/playbooks/roles/java/main.yml
163
+ - docker/playbooks/roles/mysql/main.yml
164
+ - docker/playbooks/roles/nodejs/main.yml
165
+ - docker/playbooks/roles/phantomjs/main.yml
166
+ - docker/playbooks/roles/postgresql/files/pg_hba.conf
167
+ - docker/playbooks/roles/postgresql/main.yml
168
+ - docker/playbooks/roles/rabbitmq/main.yml
169
+ - docker/playbooks/roles/rbenv/files/gemrc
170
+ - docker/playbooks/roles/rbenv/files/rbenv.patch
171
+ - docker/playbooks/roles/rbenv/main.yml
172
+ - docker/playbooks/roles/rbenv/templates/version
173
+ - docker/playbooks/roles/redis/main.yml
174
+ - docker/playbooks/roles/services/main.yml
175
+ - docker/playbooks/roles/services/templates/docker-boot.upstart.conf
176
+ - docker/playbooks/site.yml
157
177
  - lib/vx/worker.rb
158
178
  - lib/vx/worker/cli.rb
159
179
  - lib/vx/worker/configuration.rb
@@ -209,7 +229,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
209
229
  version: 1.3.1
210
230
  requirements: []
211
231
  rubyforge_project:
212
- rubygems_version: 2.1.11
232
+ rubygems_version: 2.0.14
213
233
  signing_key:
214
234
  specification_version: 4
215
235
  summary: ci worker
data/docker/bootstrap.sh DELETED
@@ -1,106 +0,0 @@
1
- #!/bin/bash
2
- set -x
3
- set -e
4
-
5
- # add ubuntu repos
6
- echo "deb http://us.archive.ubuntu.com/ubuntu/ precise universe" >> /etc/apt/sources.list
7
- echo "deb http://us.archive.ubuntu.com/ubuntu/ precise multiverse" >> /etc/apt/sources.list
8
-
9
- # fixes locales
10
- locale-gen en_US.UTF-8
11
- dpkg-reconfigure -fnoninteractive locales
12
- update-locale LC_ALL="en_US.UTF-8" LANG="en_US.UTF-8" LANGUAGE="en_US"
13
- export LANGUAGE=en_US
14
- export LANG=en_US.UTF-8
15
- export LC_ALL=en_US.UTF-8
16
-
17
- # replace init
18
- dpkg-divert --local --rename --add /sbin/initctl
19
- ln -s /bin/true /sbin/initctl
20
-
21
- apt-get -qy update
22
- apt-get install -qy curl git-core build-essential vim-tiny
23
-
24
- # add evrone repo
25
- mkdir -p /etc/apt/sources.list.d
26
- echo "deb http://download.opensuse.org/repositories/home:/dmexe/xUbuntu_12.04/ ./" > /etc/apt/sources.list.d/Evrone.list
27
- curl http://download.opensuse.org/repositories/home:/dmexe/xUbuntu_12.04/Release.key | apt-key add -
28
- apt-get -qy update
29
-
30
- # add packages
31
- apt-get install -qy libmysqlclient-dev libpq-dev imagemagick libmagickwand-dev \
32
- libcurl4-openssl-dev nodejs libxml2-dev libxslt-dev \
33
- openjdk-7-jre-headless libsqlite3-dev libgeos-dev ruby
34
-
35
- # install runit
36
- chmod 0000 /sbin/start
37
- apt-get -qy install runit
38
- chmod 0755 /sbin/start
39
-
40
- # set user password
41
- useradd -m ci
42
- echo "ci:ci" | chpasswd
43
- apt-get -qy install sudo
44
- echo "ci ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
45
-
46
- # install ssh
47
- apt-get install -qy openssh-server
48
- mkdir -p /var/run/sshd
49
- sv-gen ssh "/usr/sbin/sshd -D -e"
50
-
51
- # install syslog
52
- apt-get install -qy rsyslog
53
- sv-gen rsyslogd "/usr/sbin/rsyslogd -c5 -n" root
54
-
55
- # install postgresql
56
- apt-get install -qy postgresql-9.1 postgresql-contrib-9.1
57
- echo "local all all trust" > /etc/postgresql/9.1/main/pg_hba.conf
58
- echo "host all all all trust" >> /etc/postgresql/9.1/main/pg_hba.conf
59
- sv-gen postgresql "/usr/lib/postgresql/9.1/bin/postgres -D /var/lib/postgresql/9.1/main -c config_file=/etc/postgresql/9.1/main/postgresql.conf" postgres
60
-
61
- # install mysql
62
- apt-get install -qy mysql-server-5.5
63
- sv-gen mysql "/usr/sbin/mysqld" mysql
64
-
65
- # install redis-server
66
- apt-get install -qy redis-server
67
- sed -i 's|daemonize yes|daemonize no|g' /etc/redis/redis.conf
68
- sv-gen redis-server "/usr/bin/redis-server /etc/redis/redis.conf" redis
69
-
70
- # install rabbitmq-server
71
- apt-get install -qy rabbitmq-server
72
- sv-gen rabbitmq-server "/usr/sbin/rabbitmq-server" root
73
-
74
- # install elasticsearch
75
- ES_PKG=elasticsearch-0.90.5.deb
76
- curl https://download.elasticsearch.org/elasticsearch/elasticsearch/$ES_PKG -o /tmp/$ES_PKG
77
- dpkg -i /tmp/$ES_PKG
78
- rm -f /tmp/$ES_PKG
79
- sv-gen elasticsearch "/usr/share/elasticsearch/bin/elasticsearch -f -Des.path.data=/var/lib/elasticsearch" elasticsearch
80
-
81
- # install phantomjs
82
- PH_PKG=phantomjs-1.9.2-linux-x86_64.tar.bz2
83
- curl https://phantomjs.googlecode.com/files/$PH_PKG -o /tmp/$PH_PKG
84
- tar -jxf /tmp/$PH_PKG -C /usr/local
85
- rm -f /tmp/$PH_PKG
86
- ln -sf /usr/local/$(basename $PH_PKG .tar.bz2)/bin/phantomjs /usr/local/bin
87
-
88
- # add ruby
89
- apt-get install -qy rbenv rbenv-2.0.0-p195 rbenv-1.9.3-p448 rbenv-2.0.0-p247 rbenv-1.9.3-p392
90
- apt-get install -qy ruby1.8 ruby1.8-dev rubygems # 1.8.7
91
- env RBENV_VERSION=2.0.0-p247 rbenv exec gem install bundler --no-ri --no-rdoc
92
- env RBENV_VERSION=2.0.0-p195 rbenv exec gem install bundler --no-ri --no-rdoc
93
- env RBENV_VERSION=1.9.3-p448 rbenv exec gem install bundler --no-ri --no-rdoc
94
- env RBENV_VERSION=1.9.3-p392 rbenv exec gem install bundler --no-ri --no-rdoc
95
- env RBENV_VERSION=system rbenv exec gem install bundler --no-ri --no-rdoc
96
- rbenv rehash
97
- for i in `rbenv versions | grep -v '*'` ; do RBENV_VERSION=$i rbenv exec gem update --system ; done
98
- echo 'gem: --no-ri --no-rdoc' > /etc/gemrc
99
-
100
- apt-get -qy clean autoremove
101
-
102
- sv-enable postgresql
103
- sv-enable ssh
104
- sv-enable mysql
105
- sv-enable redis-server
106
- sv-enable rsyslogd
data/docker/sv-enable DELETED
@@ -1,26 +0,0 @@
1
- #!/bin/bash
2
-
3
- set -e
4
-
5
- NAME=${1}
6
- USAGE="Usage: sv-enable <service>"
7
- SRC=/etc/sv/${NAME}
8
- DST=/etc/service/${NAME}
9
-
10
- if [ "x${1}" = "x" ] ; then
11
- echo $USAGE
12
- exit 1
13
- fi
14
-
15
- if [ ! -d ${SRC} ] ; then
16
- echo "Service ${NAME} does not exists"
17
- exit 1
18
- fi
19
-
20
- mkdir -p /etc/service
21
-
22
- if [ ! -L $DST ] ; then
23
- echo " ---> enable ${NAME}"
24
- rm -rf ${DST}
25
- ln -s ${SRC} ${DST}
26
- fi
data/docker/sv-gen DELETED
@@ -1,50 +0,0 @@
1
- #!/bin/bash
2
-
3
- set -e
4
-
5
- NAME=${1}
6
- CMD=${2}
7
- USER=${3:-root}
8
- DIR=${4:-/}
9
- RUN_FILE="/etc/sv/${NAME}/run"
10
- LOG_FILE="/etc/sv/${NAME}/log/run"
11
-
12
- USAGE="Usage: sv-gen <name> <command> [user] [directory]"
13
-
14
- if [ "x${1}" = "x" ] ; then
15
- echo $USAGE
16
- exit 1
17
- fi
18
-
19
- if [ "x${2}" = "x" ] ; then
20
- echo $USAGE
21
- exit 1
22
- fi
23
-
24
- echo " ---> create /etc/sv/${NAME}"
25
- mkdir -p /etc/sv/${NAME}
26
-
27
- echo " ---> create ${RUN_FILE}"
28
- cat > $RUN_FILE << EOF
29
- #!/bin/sh
30
- set -e
31
- exec 2>&1
32
- cd ${DIR}
33
- CMD="${CMD}"
34
- exec sudo -u ${USER} \$CMD 2>&1
35
- EOF
36
- chmod +x ${RUN_FILE}
37
-
38
- echo " ---> create /etc/sv/${NAME}/log"
39
- mkdir -p /etc/sv/${NAME}/log
40
-
41
- echo " ---> create ${LOG_FILE}"
42
- cat > $LOG_FILE << EOF
43
- #!/bin/sh
44
- set -e
45
- LOG=/var/log/${NAME}
46
-
47
- test -d "\$LOG" || mkdir -p m2750 "\$LOG"
48
- exec svlogd "\$LOG"
49
- EOF
50
- chmod +x ${LOG_FILE}