Skip to content

Commit c2bf92f

Browse files
authored
Merge pull request #59 from Syncano/INFRA-317
[INFRA-317] rewrite to use Ansible
2 parents d56ebcc + 7b51674 commit c2bf92f

17 files changed

+204
-69
lines changed

Dockerfile

Lines changed: 6 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,9 @@
11
FROM ubuntu:trusty
22
MAINTAINER "Syncano DevOps Team" <devops@syncano.com>
33

4-
ENV LAST_REFRESHED 2016-03-25
5-
ENV SYNCANO_APIROOT https://api.syncano.io/
6-
7-
RUN groupadd -r syncano && \
8-
useradd -u 1000 -r -g syncano syncano -d /tmp -s /bin/bash && \
9-
mkdir /home/syncano && \
10-
chown -R syncano /home/syncano
11-
12-
# enable everyone to use /tmp
13-
RUN chmod 1777 /tmp
14-
# -- CUT BEGIN --
15-
16-
COPY *requirements*.txt /tmp/
17-
COPY *.tar.gz /tmp/
18-
19-
RUN apt-get update && apt-get install -qqy \
20-
git \
21-
libffi-dev \
22-
libssl-dev \
23-
libjpeg-dev \
24-
python-dev \
25-
python3-dev \
26-
python-tk \
27-
python3-tk \
28-
python-numpy \
29-
python3-numpy \
30-
python-scipy \
31-
python3-scipy \
32-
wget && \
33-
wget https://bootstrap.pypa.io/get-pip.py && \
34-
python get-pip.py && \
35-
pip install -r /tmp/requirements_base.txt
36-
37-
WORKDIR /home/syncano/
38-
RUN virtualenv --system-site-packages v4.2 && \
39-
tar xzvf /tmp/42.tar.gz --skip-old-files && \
40-
. v4.2/bin/activate && \
41-
pip install -r /tmp/requirements_v42.txt && \
42-
pip install -r /tmp/external_requirements.txt && \
43-
deactivate
44-
45-
RUN virtualenv --system-site-packages v5.0 && \
46-
tar xzvf /tmp/50.tar.gz --skip-old-files && \
47-
. v5.0/bin/activate && \
48-
pip install -r /tmp/requirements.txt && \
49-
pip install -r /tmp/external_requirements.txt && \
50-
deactivate
51-
52-
RUN virtualenv --system-site-packages -p python3 p3v5.0 && \
53-
. p3v5.0/bin/activate && \
54-
pip install -r /tmp/requirements_python3.txt && \
55-
pip install -r /tmp/external_requirements.txt
56-
57-
RUN ln -sf /home/syncano/v5.0/bin/python /usr/bin/python && \
58-
ln -sf /home/syncano/v5.0/bin/python /usr/bin/python27-lib5.0 && \
59-
ln -sf /home/syncano/v4.2/bin/python /usr/bin/python27-lib4.2 && \
60-
ln -sf /home/syncano/p3v5.0/bin/python /usr/bin/python3 && \
61-
ln -sf /home/syncano/p3v5.0/bin/python /usr/bin/python3-lib5.0
62-
63-
# -- CUT END --
64-
USER syncano
65-
WORKDIR /tmp
66-
CMD "python"
4+
RUN apt-get update && apt-get install -y openssh-server
5+
RUN mkdir /var/run/sshd /root/.ssh
6+
COPY image/id_rsa.pub /root/.ssh/authorized_keys
7+
RUN wget https://github.com/Yelp/dumb-init/releases/download/v1.0.3/dumb-init_1.0.3_amd64.deb
8+
RUN dpkg -i dumb-init_*.deb
9+
EXPOSE 22

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
This repository contains Dockerfile for Python 2.7 image with built-in support for Syncano and selected Python libraries.
44

5-
You can build the image yourself:
5+
You can build the image yourself (Ansible 2.1.0 is required):
66

77
```
8-
$ docker build -t quay.io/syncano/python-codebox .
8+
$ ./create_python_image.sh
99
```
1010

1111
or pull it from Docker registry:

circle.yml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ machine:
44

55
dependencies:
66
override:
7-
- wget https://s3.amazonaws.com/codebox-bucket/python/42.tar.gz
8-
- wget https://s3.amazonaws.com/codebox-bucket/python/50.tar.gz
9-
- docker build -t quay.io/syncano/python-codebox .
7+
- sudo pip install ansible==2.1.0
8+
- chmod 600 image/id_rsa
9+
- ./create_python_image.sh $BUILD_LEVEL
10+
- docker images
11+
- docker history quay.io/syncano/python-codebox
1012

1113
test:
1214
override:

create_python_image.sh

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/bin/bash
2+
3+
if [ ${1:-full} != "--partial" ]
4+
then
5+
docker build -t quay.io/syncano/python-codebox .
6+
fi
7+
8+
docker run -d -p 2200:22 --env-file image/environment --name ansible quay.io/syncano/python-codebox dumb-init /usr/sbin/sshd -D
9+
ansible-playbook -i "`docker inspect --format '{{ .NetworkSettings.IPAddress }}' ansible`," -u root --private-key image/id_rsa provision-python-codebox.yml
10+
docker commit ansible quay.io/syncano/python-codebox
11+
12+
docker run -d --env-file image/environment -u syncano --name python quay.io/syncano/python-codebox dumb-init /usr/sbin/sshd -D
13+
docker commit python quay.io/syncano/python-codebox

image/environment

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
SYNCANO_APIROOT=https://api.syncano.io/

image/id_rsa

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
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
51+
-----END RSA PRIVATE KEY-----

image/id_rsa.pub

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCp1U/dH3t7HSaJ0+cIWTJr8BZkb600OMeUdqtPARaN6fFh8m54lOlQLEIVWiaFVBXB0dD16B3LLoqWzELt+E8o2QuSS/6sI2TwWfibc2OYi/l4Y39jGmiPGM2K9/ErQ9pMH0WudmYlA1b+8s+6r3aCXY540d/AjHoHj/ILFC03WFN8Dl/oMpaisPzvhnfanAmIkSc3KBBegd9dl2/j6mZs4sApiMozA2b56nL4IPSvCsKGb8pv2FxX2b1nmzSpblThyo8Gq3dBmCErCyPWDSthBzSkcWDnQ29Y5B48ncYLGy1V/Lm4CTschCPXnGdxvrzFaYVpkstg/Et6Dgsx0SxPB6PGmhvWnW+0IYsgtUVOKXFAI7F8kJFdo0M9AzDEdHJNK8nlfom9eW+zttawrclQaebNJriz0H83jj86s2MtbfsBXHuPsGjUZsGio18BhncZi8p8FMhxnl9JTAfkDuYNI8OAE8vJQ4lSDjKZmnIqKVkBIhVOn3B4ZTQEygecgUFqD8l3rpj3yMJaOke8IYpBQP14gVRztNHC2IjxVUPf4WLphz1LyUIHU7kSIsPiiz8OarX4X9iIfNNac8SlXG5nD6/LPNC/OCuh60creRYbCf2IMHYAEqKfUYGOtClZzSwflq7o1fR2kMvVF9pcdGT+b3qSvpktMF4D1nqDCytMgw== syncano

provision-python-codebox.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
- hosts: all
3+
connection: ssh
4+
roles:
5+
- python
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
11
-i https://pypi.fury.io/Nx-poGuiakLbsCzaLwNm/aexol
22
aexol==0.1.5
3-

python/files/pkglist

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
git
2+
libffi-dev
3+
libssl-dev
4+
libjpeg-dev
5+
python-dev
6+
python3-dev
7+
python-tk
8+
python3-tk
9+
python-numpy
10+
python3-numpy
11+
python-pip
12+
python3-pip
13+
python-scipy
14+
python3-scipy
15+
wget

0 commit comments

Comments
 (0)