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.
- checksums.yaml +4 -4
- data/docker/.gitignore +1 -0
- data/docker/Dockerfile +30 -10
- data/docker/build.sh +47 -0
- data/docker/playbooks/group_vars/all.yml +24 -0
- data/docker/playbooks/roles/bootstrap/main.yml +11 -0
- data/docker/playbooks/roles/build-essential/main.yml +19 -0
- data/docker/playbooks/roles/cleanup/main.yml +17 -0
- data/docker/playbooks/roles/elasticsearch/main.yml +38 -0
- data/docker/playbooks/roles/erlang/main.yml +15 -0
- data/docker/playbooks/roles/java/main.yml +59 -0
- data/docker/playbooks/roles/mysql/main.yml +15 -0
- data/docker/playbooks/roles/nodejs/main.yml +16 -0
- data/docker/playbooks/roles/phantomjs/main.yml +34 -0
- data/docker/playbooks/roles/postgresql/files/pg_hba.conf +2 -0
- data/docker/playbooks/roles/postgresql/main.yml +29 -0
- data/docker/playbooks/roles/rabbitmq/main.yml +20 -0
- data/docker/playbooks/roles/rbenv/files/gemrc +5 -0
- data/docker/playbooks/roles/rbenv/files/rbenv.patch +4 -0
- data/docker/playbooks/roles/rbenv/main.yml +52 -0
- data/docker/playbooks/roles/rbenv/templates/version +1 -0
- data/docker/playbooks/roles/redis/main.yml +21 -0
- data/docker/playbooks/roles/services/main.yml +8 -0
- data/docker/playbooks/roles/services/templates/docker-boot.upstart.conf +11 -0
- data/docker/playbooks/site.yml +21 -0
- data/lib/vx/worker/configuration.rb +6 -6
- data/lib/vx/worker/version.rb +1 -1
- data/spec/lib/worker/configuration_spec.rb +9 -9
- metadata +32 -12
- data/docker/bootstrap.sh +0 -106
- data/docker/sv-enable +0 -26
- data/docker/sv-gen +0 -50
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f156dc45c556ad160b6d8feaa4f9aa5f3df5732b
|
4
|
+
data.tar.gz: d2740321400b14f56f47367105833b301fd57fb4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
1
|
+
# ssh
|
2
2
|
|
3
|
-
|
4
|
-
ENV DEBIAN_FRONTEND noninteractive
|
3
|
+
FROM ubuntu:12.04
|
5
4
|
|
6
|
-
# disable service autostarting
|
7
5
|
ENV RUNLEVEL 1
|
8
6
|
|
9
|
-
|
10
|
-
|
11
|
-
|
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
|
-
|
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,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,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,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,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:
|
26
|
-
password:
|
27
|
-
init:
|
28
|
-
image:
|
29
|
-
remote_dir:
|
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:
|
33
|
+
remote_dir: nil
|
34
34
|
}
|
35
35
|
|
36
36
|
def timeout
|
data/lib/vx/worker/version.rb
CHANGED
@@ -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
|
18
|
-
its(:password) { should
|
19
|
-
its(:init) { should
|
20
|
-
its(:image) { should
|
21
|
-
its(:remote_dir) { should
|
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
|
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.
|
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-
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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/
|
155
|
-
- docker/
|
156
|
-
- docker/
|
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.
|
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}
|