diff --git a/roles/cobald/files/cobald-entrypoint.sh b/roles/cobald/files/cobald-entrypoint.sh new file mode 100644 index 0000000..4bbae50 --- /dev/null +++ b/roles/cobald/files/cobald-entrypoint.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +[ -f /usr/local/lib/cobaldmodules/setup.py -a \ + -d /usr/local/lib/cobaldmodules/cobaldmodules ] && \ + pip3 install --no-deps --editable /usr/local/lib/cobaldmodules + +exec "${@:-/bin/bash}" diff --git a/roles/cobald/files/cobald.Dockerfile b/roles/cobald/files/cobald.Dockerfile index cc3b406..8175e70 100644 --- a/roles/cobald/files/cobald.Dockerfile +++ b/roles/cobald/files/cobald.Dockerfile @@ -10,28 +10,42 @@ ARG REPOTARDIS=https://github.com/MatterMiners/tardis RUN git clone $REPOCOBALD /usr/local/src/cobald && \ git clone $REPOTARDIS /usr/local/src/tardis +RUN mkdir /etc/cobald /var/log/cobald && \ + useradd -m -d /var/lib/cobald --no-log-init --system cobald + #RUN mkdir /cobald && python3 -m venv /cobald && source /cobald/bin/activate &&\ # pip3 install --upgrade pip && pip3 install cobald -# FIXME: run this as user! +RUN mkdir /usr/local/src/cobaldmodules /usr/local/lib/cobaldmodules && \ + ln -s /usr/local/src/cobaldmodules/setup.py \ + /usr/local/lib/cobaldmodules/setup.py && \ + ln -s /usr/local/src/cobaldmodules/cobaldmodules \ + /usr/local/lib/cobaldmodules/cobaldmodules && \ + chown cobald:cobald /usr/local/lib/cobaldmodules RUN pip3 install --editable /usr/local/src/cobald && \ pip3 install --editable /usr/local/src/cobald[contrib] -RUN pip3 install --editable /tardis&& \ - pip3 install --editable /tardis[contrib] +RUN pip3 install --editable /usr/local/src/tardis&& \ + pip3 install --editable /usr/local/src/tardis[contrib] -RUN mkdir /etc/cobald /var/log/cobald && \ - useradd -m -d /var/lib/cobald --no-log-init --system cobald - -VOLUME /etc/cobald - -USER cobald - -ENV PYTHONPATH=/etc/cobald/modules +ENV PYTHONPATH=/usr/local/src/cobaldmodules # pip3 install --editable . # pip3 install --editable .[contrib] # pip3 install --upgrade --editable /etc/cobald/modules/ # su cobald -c "python3 -m cobald.daemon /etc/cobald/config.yaml" -CMD python3 -m cobald.daemon /etc/cobald/config.yaml + +VOLUME /usr/local/src/cobaldmodules + +VOLUME /etc/cobald + +COPY cobald-entrypoint.sh /usr/local/sbin/docker-entrypoint.sh + +RUN chmod 755 /usr/local/sbin/docker-entrypoint.sh + +ENTRYPOINT /usr/local/sbin/docker-entrypoint.sh + +USER cobald + +CMD "python3 -m cobald.daemon /etc/cobald/config.yaml" diff --git a/roles/cobald/tasks/dev.yml b/roles/cobald/tasks/dev.yml index b174a99..9fef723 100644 --- a/roles/cobald/tasks/dev.yml +++ b/roles/cobald/tasks/dev.yml @@ -6,19 +6,46 @@ repo: https://github.com/thoto/cobald dest: "~{{unpriv_user}}/cobald-src" version: bugfix/mixed_construction_methods + become: yes + become_user: "{{unpriv_user}}" + register: cobald_git_pull - git: repo: https://github.com/MatterMiners/tardis dest: "~{{unpriv_user}}/tardis-src" version: master + become: yes + become_user: "{{unpriv_user}}" + register: tardis_git_pull + +- name: run pip install + docker_container: + image: cobald + name: "cobald-src-{{item.name}}-install" + volumes: + - "~{{unpriv_user}}/{{item.name}}-src:/usr/local/src/{{item.name}}:rw" + state: started + detach: False + cleanup: True + user: 1000:1000 # FIXME + entrypoint: "" + command: | + bash -c 'HOME=/tmp pip3 install --editable /usr/local/src/{{item.name}}' + with_items: + - name: cobald + run: "{{cobald_git_pull.changed}}" + - name: tardis + run: "{{tardis_git_pull.changed}}" + when: item.run - docker_container: name: cobald-dev image: cobald volumes: - - "~{{unpriv_user}}/cobald:/etc/cobald" - - "~{{unpriv_user}}/cobald-src:/cobald:ro" - - "~{{unpriv_user}}/tardis-src:/tardis:ro" + - "~{{unpriv_user}}/cobald:/etc/cobald" + - "~{{unpriv_user}}/cobald/modules:/usr/local/src/cobaldmodules" + - "~{{unpriv_user}}/cobald-src:/usr/local/src/cobald:ro" + - "~{{unpriv_user}}/tardis-src:/usr/local/src/tardis:ro" state: started detach: True cleanup: True diff --git a/roles/cobald/tasks/main.yml b/roles/cobald/tasks/main.yml index cfff52d..7a9f90c 100644 --- a/roles/cobald/tasks/main.yml +++ b/roles/cobald/tasks/main.yml @@ -14,6 +14,14 @@ group: docker register: cobald_cp_dockerfile +- copy: + src: cobald-entrypoint.sh + dest: /container/docker-images/cobald/cobald-entrypoint.sh + owner: "{{unpriv_user}}" + group: docker + mode: 0755 + register: cobald_cp_files + - docker_image: name: "cobald" # pull: False @@ -21,7 +29,7 @@ pull: False path: "/container/docker-images/cobald/" source: build - force_source: "{{cobald_cp_dockerfile.changed }}" + force_source: "{{cobald_cp_dockerfile.changed or cobald_cp_files.changed}}" - copy: src: cobald-config/