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_repository_url: git@github.com:koodiklinikka/koodiklinikka.fi-api.git
|
||||||
koodiklinikka_api_nodejs_version: v0.10.25
|
|
||||||
koodiklinikka_api_port: 9000
|
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_app_path: /opt/web/koodiklinikka.fi-api
|
||||||
koodiklinikka_api_user: web
|
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: >
|
action: >
|
||||||
git
|
git
|
||||||
repo="{{ koodiklinikka_api_repository_url }}"
|
repo="{{ koodiklinikka_api_repository_url }}"
|
||||||
dest="{{ koodiklinikka_api_app_path }}"
|
dest="{{ koodiklinikka_api_app_path }}"
|
||||||
|
version=docker
|
||||||
accept_hostkey=True
|
accept_hostkey=True
|
||||||
notify: restart service
|
sudo: no
|
||||||
|
register: gitclone
|
||||||
|
|
||||||
- name: Make sure Node.js is installed and properly aliased
|
- name: get previous container
|
||||||
remote_user: "{{ koodiklinikka_api_user }}"
|
shell: docker images|grep {{ koodiklinikka_api_container_name }}|grep latest| awk '{print $3}'
|
||||||
command: >
|
register: current_image_sha
|
||||||
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: Install NPM dependencies and build assets
|
- name: Build {{ koodiklinikka_api_container_name }}
|
||||||
remote_user: "{{ koodiklinikka_api_user }}"
|
shell: ./build_docker /opt
|
||||||
command: >
|
args:
|
||||||
bash -c "source {{ koodiklinikka_api_nvm_script }} && nvm use {{ koodiklinikka_api_project_name }} && cd {{ koodiklinikka_api_app_path }} && npm install"
|
chdir: "{{ koodiklinikka_api_app_path}}"
|
||||||
notify: restart service
|
sudo: yes
|
||||||
|
when: gitclone.changed
|
||||||
|
register: container
|
||||||
|
|
||||||
- name: Setup config
|
- name: tag previous version
|
||||||
remote_user: "{{ koodiklinikka_api_user }}"
|
shell: docker tag -f {{ current_image_sha.stdout }} {{ koodiklinikka_api_container_name }}:old
|
||||||
template: >
|
when: container is defined and container.changed and current_image_sha.stdout != ""
|
||||||
src=config.j2
|
|
||||||
dest="{{ koodiklinikka_api_app_path }}/config.json"
|
|
||||||
mode=664
|
|
||||||
|
|
||||||
- name: Setup Upstart config
|
- name: get running container
|
||||||
template: >
|
shell: docker ps -a|grep {{ koodiklinikka_api_container_name }}|grep latest| awk '{print $1}'
|
||||||
src=upstart.j2
|
register: current_container_id
|
||||||
dest="/etc/init/{{ koodiklinikka_api_project_name }}.conf"
|
|
||||||
mode=664
|
- name: kill old version
|
||||||
sudo: true
|
shell: docker stop {{ koodiklinikka_api_container_name }}
|
||||||
notify: restart service
|
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_app_path: /opt/web/koodiklinikka.fi
|
||||||
koodiklinikka_nvm_script: /opt/web/nvm/nvm.sh
|
koodiklinikka_nvm_script: /opt/web/nvm/nvm.sh
|
||||||
koodiklinikka_user: web
|
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_app_path: /opt/tohtori/tohtori
|
||||||
|
|
||||||
koodiklinikka_tohtori_container_name: tohtori_bot
|
koodiklinikka_tohtori_container_name: tohtori_bot
|
||||||
|
|
||||||
ejson_public: 94f3af35ad208d7bc7e3ddf1f9d181d090e3a1c74f9d56851c4f0f1efb04b571
|
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
- name: kill old version
|
- name: kill old version
|
||||||
shell: docker stop {{ koodiklinikka_tohtori_container_name }}
|
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
|
- name: get old containers
|
||||||
shell: docker ps -a|grep Exited| awk '{print $1}'
|
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