mirror of
https://github.com/koodiklinikka/playbooks.git
synced 2026-01-26 03:03:59 +00:00
koodiklinikka.fi-api from container
This commit is contained in:
@@ -1,12 +1,7 @@
|
||||
---
|
||||
koodiklinikka_api_project_name: koodiklinikka.fi-api
|
||||
koodiklinikka_api_container_name: koodiklinikka.fi-api
|
||||
koodiklinikka_api_repository_url: git@github.com:koodiklinikka/koodiklinikka.fi-api.git
|
||||
koodiklinikka_api_nodejs_version: v0.10.25
|
||||
koodiklinikka_api_port: 9000
|
||||
|
||||
nvm_path: /opt/web/nvm
|
||||
nvm_user: web
|
||||
koodiklinikka_api_nvm_path: /opt/web/nvm
|
||||
koodiklinikka_api_nvm_script: /opt/web/nvm/nvm.sh
|
||||
koodiklinikka_api_app_path: /opt/web/koodiklinikka.fi-api
|
||||
koodiklinikka_api_user: web
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
- name: restart service
|
||||
sudo: true
|
||||
service: >
|
||||
name={{ koodiklinikka_api_project_name }}
|
||||
state=restarted
|
||||
@@ -1,39 +1,57 @@
|
||||
---
|
||||
- name: Deploy from git
|
||||
remote_user: "{{ koodiklinikka_user }}"
|
||||
|
||||
- name: Deploy client from git
|
||||
remote_user: "{{ koodiklinikka_api_user }}"
|
||||
action: >
|
||||
git
|
||||
repo="{{ koodiklinikka_api_repository_url }}"
|
||||
dest="{{ koodiklinikka_api_app_path }}"
|
||||
version=docker
|
||||
accept_hostkey=True
|
||||
notify: restart service
|
||||
sudo: no
|
||||
register: gitclone
|
||||
|
||||
- name: Make sure Node.js is installed and properly aliased
|
||||
remote_user: "{{ koodiklinikka_api_user }}"
|
||||
command: >
|
||||
bash -c "source {{ koodiklinikka_api_nvm_script }} && nvm install {{ koodiklinikka_api_nodejs_version }} && nvm alias {{ koodiklinikka_api_project_name }} {{ koodiklinikka_api_nodejs_version }}"
|
||||
register: nvm_result
|
||||
changed_when: >
|
||||
"already installed" not in nvm_result.stdout
|
||||
notify: restart service
|
||||
- name: get previous container
|
||||
shell: docker images|grep {{ koodiklinikka_api_container_name }}|grep latest| awk '{print $3}'
|
||||
register: current_image_sha
|
||||
|
||||
- name: Install NPM dependencies and build assets
|
||||
remote_user: "{{ koodiklinikka_api_user }}"
|
||||
command: >
|
||||
bash -c "source {{ koodiklinikka_api_nvm_script }} && nvm use {{ koodiklinikka_api_project_name }} && cd {{ koodiklinikka_api_app_path }} && npm install"
|
||||
notify: restart service
|
||||
- name: Build {{ koodiklinikka_api_container_name }}
|
||||
shell: ./build_docker /opt
|
||||
args:
|
||||
chdir: "{{ koodiklinikka_api_app_path}}"
|
||||
sudo: yes
|
||||
when: gitclone.changed
|
||||
register: container
|
||||
|
||||
- name: Setup config
|
||||
remote_user: "{{ koodiklinikka_api_user }}"
|
||||
template: >
|
||||
src=config.j2
|
||||
dest="{{ koodiklinikka_api_app_path }}/config.json"
|
||||
mode=664
|
||||
- name: tag previous version
|
||||
shell: docker tag -f {{ current_image_sha.stdout }} {{ koodiklinikka_api_container_name }}:old
|
||||
when: container is defined and container.changed and current_image_sha.stdout != ""
|
||||
|
||||
- name: Setup Upstart config
|
||||
template: >
|
||||
src=upstart.j2
|
||||
dest="/etc/init/{{ koodiklinikka_api_project_name }}.conf"
|
||||
mode=664
|
||||
sudo: true
|
||||
notify: restart service
|
||||
- name: get running container
|
||||
shell: docker ps -a|grep {{ koodiklinikka_api_container_name }}|grep latest| awk '{print $1}'
|
||||
register: current_container_id
|
||||
|
||||
- name: kill old version
|
||||
shell: docker stop {{ koodiklinikka_api_container_name }}
|
||||
when: container is defined and container.changed and current_container_id.stdout != ""
|
||||
|
||||
- name: get old containers
|
||||
shell: docker ps -a|grep Exited| awk '{print $1}'
|
||||
register: old_containers
|
||||
|
||||
- name: clean old containers
|
||||
shell: docker rm $(docker ps -a|grep Exited| awk '{print $1}')
|
||||
when: old_containers.stdout != ""
|
||||
|
||||
- name: Start the container
|
||||
shell: docker run --restart=always -p {{ koodiklinikka_api_port }}:{{ koodiklinikka_api_port }} -d --name {{ koodiklinikka_api_container_name }} {{ koodiklinikka_api_container_name }}:latest
|
||||
when: container is defined and container.changed
|
||||
|
||||
- name: get old images
|
||||
shell: docker images | grep "^<none>" | awk '{print $3}'
|
||||
register: old_images
|
||||
|
||||
- name: clean untagged (old) images
|
||||
shell: docker rmi $(docker images -a | grep "^<none>" | awk '{print $3}')
|
||||
when: old_images.stdout != ""
|
||||
ignore_errors: yes
|
||||
|
||||
21
roles/koodiklinikka.fi-api/tasks/rollback.yml
Normal file
21
roles/koodiklinikka.fi-api/tasks/rollback.yml
Normal file
@@ -0,0 +1,21 @@
|
||||
---
|
||||
|
||||
- name: get running container
|
||||
shell: docker ps -a|grep {{ koodiklinikka_api_container_name }}|grep latest| awk '{print $1}'
|
||||
register: current_container_id
|
||||
|
||||
- name: kill old version
|
||||
shell: docker stop {{ koodiklinikka_api_container_name }}
|
||||
when: current_container_id != ""
|
||||
|
||||
- name: get old containers
|
||||
shell: docker ps -a|grep Exited| awk '{print $1}'
|
||||
register: old_containers
|
||||
|
||||
- name: clean old containers
|
||||
shell: docker rm $(docker ps -a|grep Exited| awk '{print $1}')
|
||||
when: old_containers.stdout != ""
|
||||
|
||||
- name: Start the container
|
||||
shell: docker run -d --name {{ koodiklinikka_api_container_name }} {{ koodiklinikka_api_container_name }}:old
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
{
|
||||
"all": {
|
||||
"slack": {
|
||||
"token": "{{ koodiklinikka_api_slack_api_token }}",
|
||||
"private_channel": "{{ koodiklinikka_api_slack_private_channel }}",
|
||||
"public_channel": "{{ koodiklinikka_api_slack_public_channel }}"
|
||||
},
|
||||
"github": {
|
||||
"token": "{{ koodiklinikka_api_github_api_token }}"
|
||||
},
|
||||
"twitter": {
|
||||
"consumerKey": "{{ koodiklinikka_api_twitter_consumer_key }}",
|
||||
"consumerSecret": "{{ koodiklinikka_api_twitter_consumer_key_secret }}",
|
||||
"token": "{{ koodiklinikka_api_twitter_token }}",
|
||||
"tokenSecret": "{{ koodiklinikka_api_twitter_token_secret }}"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
description "koodiklinikka.fi API"
|
||||
author "Riku Rouvila <riku.rouvila@gmail.com>"
|
||||
|
||||
start on runlevel [2345]
|
||||
stop on runlevel [016]
|
||||
|
||||
respawn
|
||||
respawn limit 10 5
|
||||
env NODE_ENV=production
|
||||
env PORT={{ koodiklinikka_api_port }}
|
||||
exec su -s /bin/bash -c 'source {{ koodiklinikka_api_nvm_script }} && nvm use {{ koodiklinikka_api_project_name }} && cd {{ koodiklinikka_api_app_path }} && exec "$0" "$@"' {{ koodiklinikka_api_user }} -- \
|
||||
node index.js \
|
||||
>> /var/log/{{ koodiklinikka_api_project_name }}.log 2>&1
|
||||
@@ -6,3 +6,6 @@ koodiklinikka_nodejs_version: v0.10.25
|
||||
koodiklinikka_app_path: /opt/web/koodiklinikka.fi
|
||||
koodiklinikka_nvm_script: /opt/web/nvm/nvm.sh
|
||||
koodiklinikka_user: web
|
||||
|
||||
nvm_path: /opt/web/nvm
|
||||
nvm_user: web
|
||||
|
||||
@@ -5,6 +5,3 @@ koodiklinikka_tohtori_user: tohtori
|
||||
koodiklinikka_tohtori_app_path: /opt/tohtori/tohtori
|
||||
|
||||
koodiklinikka_tohtori_container_name: tohtori_bot
|
||||
|
||||
ejson_public: 94f3af35ad208d7bc7e3ddf1f9d181d090e3a1c74f9d56851c4f0f1efb04b571
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
- name: kill old version
|
||||
shell: docker stop {{ koodiklinikka_tohtori_container_name }}
|
||||
when: container is defined and container.changed and current_container_id != ""
|
||||
when: container is defined and container.changed and current_container_id.stdout != ""
|
||||
|
||||
- name: get old containers
|
||||
shell: docker ps -a|grep Exited| awk '{print $1}'
|
||||
|
||||
7
rollback_api.yml
Normal file
7
rollback_api.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
- name: Rollback api
|
||||
hosts: application
|
||||
vars_files:
|
||||
- roles/koodiklinikka.fi-api/defaults/main.yml
|
||||
tasks:
|
||||
- include: roles/koodiklinikka.fi-api/tasks/rollback.yml
|
||||
Reference in New Issue
Block a user