aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorEgor Tensin <Egor.Tensin@gmail.com>2023-08-04 11:52:07 +0200
committerEgor Tensin <Egor.Tensin@gmail.com>2023-08-04 12:05:50 +0200
commit5cf47ce64eff1da4086e41782bb6bfb67a001b7d (patch)
tree5cbdf0bdf9aabaf2c64c3a95d3f1eda4fd53ae74
parentimport some common roles (diff)
downloadinfra-ansible-5cf47ce64eff1da4086e41782bb6bfb67a001b7d.tar.gz
infra-ansible-5cf47ce64eff1da4086e41782bb6bfb67a001b7d.zip
import workspace role
-rw-r--r--roles/workspace/defaults/main.yml4
-rw-r--r--roles/workspace/tasks/main.yml33
-rw-r--r--roles/workspace/tasks/project.yml22
3 files changed, 59 insertions, 0 deletions
diff --git a/roles/workspace/defaults/main.yml b/roles/workspace/defaults/main.yml
new file mode 100644
index 0000000..b517f2c
--- /dev/null
+++ b/roles/workspace/defaults/main.yml
@@ -0,0 +1,4 @@
+git_name: Egor Tensin
+git_email: Egor.Tensin@gmail.com
+
+workspace_dir: /srv/workspace
diff --git a/roles/workspace/tasks/main.yml b/roles/workspace/tasks/main.yml
new file mode 100644
index 0000000..a554ac0
--- /dev/null
+++ b/roles/workspace/tasks/main.yml
@@ -0,0 +1,33 @@
+- name: Workspace directory
+ become: true
+ ansible.builtin.file:
+ path: '{{ workspace_dir }}'
+ state: directory
+ owner: '{{ ansible_user }}'
+ group: '{{ ansible_user }}'
+ mode: '0750'
+
+- name: Install dependencies
+ become: true
+ ansible.builtin.apt:
+ name:
+ - git
+ - vim
+
+- name: Configure git
+ block:
+ - name: Set user.name
+ community.general.git_config:
+ scope: global
+ name: user.name
+ value: '{{ git_name }}'
+
+ - name: Set user.email
+ community.general.git_config:
+ scope: global
+ name: user.email
+ value: '{{ git_email }}'
+
+- name: Update projects
+ ansible.builtin.include_tasks: project.yml
+ loop: '{{ workspace_projects }}'
diff --git a/roles/workspace/tasks/project.yml b/roles/workspace/tasks/project.yml
new file mode 100644
index 0000000..4a81f78
--- /dev/null
+++ b/roles/workspace/tasks/project.yml
@@ -0,0 +1,22 @@
+- name: Set project URL
+ ansible.builtin.set_fact:
+ project_url: '{{ item.url | default(item) }}'
+
+- name: Set project name
+ ansible.builtin.set_fact:
+ project_name: "{{ item.name | default(project_url | urlsplit('path') | basename | regex_replace('\\.git$', '')) }}"
+
+- name: 'Update repository: {{ project_name }}'
+ ansible.builtin.git:
+ accept_hostkey: true
+ dest: '{{ workspace_dir }}/{{ project_name }}'
+ repo: '{{ project_url }}'
+
+- name: 'Rebuild containers: {{ project_name }}'
+ become: true
+ ansible.builtin.shell:
+ docker-compose pull &&
+ docker-compose build --force-rm --pull -q &&
+ docker-compose up --remove-orphans -d
+ args:
+ chdir: '{{ workspace_dir }}/{{ project_name }}'