Skip to content

Instantly share code, notes, and snippets.

@hypersleep
Created April 14, 2016 07:02
Show Gist options
  • Save hypersleep/85f704b03f960b7ad21209dc8401b2d3 to your computer and use it in GitHub Desktop.
Save hypersleep/85f704b03f960b7ad21209dc8401b2d3 to your computer and use it in GitHub Desktop.
---
- name: Deploy blog app
hosts: blog
vars_files:
- vars.yml
tasks:
- name: Send slack alert
local_action:
module: slack
domain: qlean.slack.com
channel: "#development_robot"
icon_emoji: ":squirrel:"
username: "Qlean белка"
token: secret_token
msg: "Запущен деплой приложения \"{{ app_name }}\"."
- name: Ensure docker service running
service: name=docker state=started
- name: Ensure apps directory exists
file: path={{ apps_path }} state=directory
when: lock|failed
- name: Check for first deploy
stat: path="{{ project_path }}"
register: first_deploy
- name: Create release directory
file: path={{ project_path }} state=directory
- name: Checkout git repo into release directory
git:
repo={{ git_repository }}
dest={{ project_path }}
version={{ git_branch }}
accept_hostkey=yes
force=yes
- name: Send database.yml
template: src=database.yml dest="{{ project_path }}/config"
- name: Send secrets.yml
template: src=secrets.yml dest="{{ project_path }}/config"
- name: Create tmp directory
file: path={{ project_path }}/tmp state=directory
- name: Build image
command: docker build -t {{ app_name }} {{ project_path }}
- name: Generate docker runtime
command: echo "docker run -v {{ project_path }}/tmp:/app/tmp -v {{ project_path }}/log:/app/log --link redis-blog:redis"
register: docker_runtime
- name: Create database
raw: "{{ docker_runtime.stdout }} --rm {{ app_name }} rake db:create"
when: first_deploy.stat.isdir is not defined
- name: Load schema
raw: "{{ docker_runtime.stdout }} --rm {{ app_name }} rake db:schema:load"
when: first_deploy.stat.isdir is not defined
- name: Migrate database
raw: "{{ docker_runtime.stdout }} --rm {{ app_name }} rake db:migrate"
- name: Send puma service file
template: src="services/{{ app_name }}-puma.service" dest=/etc/systemd/system
- name: Send sidekiq service file
template: src="services/{{ app_name }}-sidekiq.service" dest=/etc/systemd/system
- name: Reload systemd
raw: systemctl daemon-reload
- name: Restart puma container
service: name="{{ app_name }}-puma.service" state=restarted
- name: Restart sidekiq container
service: name="{{ app_name }}-sidekiq.service" state=restarted
- name: Enable puma container run on boot
service: name="{{ app_name }}-puma.service" enabled=yes
- name: Enable sidekiq container run on boot
service: name="{{ app_name }}-sidekiq.service" enabled=yes
- name: Send slack alert
local_action:
module: slack
domain: qlean.slack.com
channel: "#development_robot"
icon_emoji: ":squirrel:"
username: "Qlean белка"
token: secret_token
msg: "Деплой приложения \"{{ app_name }}\" успешно завершен."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment