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.
- 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}
|