vx-worker 0.2.0.pre33 → 0.2.0.pre34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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}