[ansible] added deploy role
This commit is contained in:
19
ansible/roles/deploy/tasks/main.yml
Normal file
19
ansible/roles/deploy/tasks/main.yml
Normal file
@@ -0,0 +1,19 @@
|
||||
- import_tasks: repo.yml
|
||||
- import_tasks: npm.yml
|
||||
|
||||
- name: Copy config.json
|
||||
copy:
|
||||
src: "{{ release_dir }}/config.shmyga.ru.json"
|
||||
dest: "{{ release_dir }}/config.json"
|
||||
remote_src: true
|
||||
|
||||
- name: Gulp build
|
||||
command: "gulp default"
|
||||
args:
|
||||
chdir: "{{ release_dir }}"
|
||||
|
||||
- name: Create symlink to release
|
||||
file:
|
||||
src: "{{ release_dir }}"
|
||||
dest: "{{ project_dir }}/current"
|
||||
state: link
|
||||
21
ansible/roles/deploy/tasks/npm.yml
Normal file
21
ansible/roles/deploy/tasks/npm.yml
Normal file
@@ -0,0 +1,21 @@
|
||||
- name: Create directory for node_modules
|
||||
file:
|
||||
path: "{{ project_dir }}/npm"
|
||||
state: directory
|
||||
|
||||
- name: Copy package.json
|
||||
copy:
|
||||
src: "{{ release_dir }}/package.json"
|
||||
dest: "{{ project_dir }}/npm/"
|
||||
remote_src: true
|
||||
|
||||
- name: npm install
|
||||
command: npm install
|
||||
args:
|
||||
chdir: "{{ project_dir }}/npm/"
|
||||
|
||||
- name: Create symlink to node_modules
|
||||
file:
|
||||
src: "{{ project_dir }}/npm/node_modules"
|
||||
dest: "{{ release_dir }}/node_modules"
|
||||
state: link
|
||||
17
ansible/roles/deploy/tasks/repo.yml
Normal file
17
ansible/roles/deploy/tasks/repo.yml
Normal file
@@ -0,0 +1,17 @@
|
||||
- name: Update git repository
|
||||
git:
|
||||
repo: "{{ repo_url }}"
|
||||
dest: "{{ project_dir }}/repo"
|
||||
|
||||
- name: Creates directory for release
|
||||
file:
|
||||
path: "{{ release_dir }}"
|
||||
state: directory
|
||||
|
||||
- name: Copy project files
|
||||
synchronize:
|
||||
src: "{{ project_dir }}/repo/"
|
||||
dest: "{{ release_dir }}"
|
||||
rsync_opts:
|
||||
- "--exclude=.git"
|
||||
delegate_to: "{{ inventory_hostname }}"
|
||||
5
ansible/roles/deploy/vars/main.yml
Normal file
5
ansible/roles/deploy/vars/main.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
ansible_user: holop
|
||||
date_str: "{{ ansible_date_time.year }}{{ ansible_date_time.month }}{{ ansible_date_time.day }}{{ ansible_date_time.hour }}{{ ansible_date_time.minute }}{{ ansible_date_time.second }}"
|
||||
|
||||
repo_url: "git@bitbucket.org:infernalgames/{{ project_name }}.git"
|
||||
release_dir: "{{ project_dir }}/releases/{{ date_str }}"
|
||||
@@ -1,5 +0,0 @@
|
||||
- name: install tankz systemd unit file
|
||||
template: src=template/tankz.j2 dest=/etc/systemd/system/tankz.service
|
||||
|
||||
- name: start tankz
|
||||
systemd: state=started name=tankz daemon_reload=yes
|
||||
@@ -1,16 +0,0 @@
|
||||
[Unit]
|
||||
Description=Tank'z game server
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
PIDFile=/var/run/tankz.pid
|
||||
WorkingDirectory=/home/holop/repo/tankz/current/target
|
||||
User=www-data
|
||||
Group=www-data
|
||||
ExecStart=/usr/bin/neko /home/holop/repo/tankz/current/target/tankz.n
|
||||
TimeoutSec=300
|
||||
Restart=always
|
||||
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -1,3 +0,0 @@
|
||||
ansible_become: yes
|
||||
ansible_user: barin
|
||||
ansible_become_pass: 1234!QAZ
|
||||
10
ansible/roles/setup/tasks/apt.yml
Normal file
10
ansible/roles/setup/tasks/apt.yml
Normal file
@@ -0,0 +1,10 @@
|
||||
- name: Install the package "Neko"
|
||||
apt:
|
||||
name: 'neko'
|
||||
|
||||
- name: Install the package "Node"
|
||||
apt:
|
||||
name: '{{ item }}'
|
||||
with_items:
|
||||
- nodejs
|
||||
- npm
|
||||
6
ansible/roles/setup/tasks/main.yml
Normal file
6
ansible/roles/setup/tasks/main.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
- import_tasks: apt.yml
|
||||
when: ansible_distribution|lower == 'ubuntu'
|
||||
|
||||
- import_tasks: npm.yml
|
||||
|
||||
- import_tasks: service.yml
|
||||
4
ansible/roles/setup/tasks/npm.yml
Normal file
4
ansible/roles/setup/tasks/npm.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
- name: Install "gulp-cli" node.js package globally.
|
||||
npm:
|
||||
name: gulp-cli
|
||||
global: yes
|
||||
10
ansible/roles/setup/tasks/service.yml
Normal file
10
ansible/roles/setup/tasks/service.yml
Normal file
@@ -0,0 +1,10 @@
|
||||
- name: "install {{ service_name }} systemd unit file"
|
||||
template:
|
||||
src: "template/service.j2"
|
||||
dest: "/etc/systemd/system/{{ service_name }}.service"
|
||||
|
||||
- name: "start {{ service_name }} service"
|
||||
systemd:
|
||||
state: started
|
||||
name: "{{ service_name }}"
|
||||
daemon_reload: yes
|
||||
15
ansible/roles/setup/template/service.j2
Normal file
15
ansible/roles/setup/template/service.j2
Normal file
@@ -0,0 +1,15 @@
|
||||
[Unit]
|
||||
Description={{ service_description }}
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
PIDFile=/var/run/{{ service_name }}.pid
|
||||
WorkingDirectory={{ service_work_dir }}
|
||||
User={{ service_user }}
|
||||
Group={{ service_user }}
|
||||
ExecStart={{ service_command }}
|
||||
TimeoutSec=300
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
9
ansible/roles/setup/vars/main.yml
Normal file
9
ansible/roles/setup/vars/main.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
ansible_become: yes
|
||||
ansible_user: barin
|
||||
ansible_become_pass: 1234!QAZ
|
||||
|
||||
service_name: "{{ project_name }}"
|
||||
service_description: "{{ project_smartname }} server"
|
||||
service_work_dir: "{{ project_dir }}/current/target"
|
||||
service_command: "/usr/bin/neko {{ project_dir }}/current/target/{{ project_name }}.n"
|
||||
service_user: www-data
|
||||
Reference in New Issue
Block a user