... | ... | @@ -55,7 +55,37 @@ curl -X GET "https://api.digitalocean.com/v2/account/keys" -H "Authorization: Be |
|
|
|
|
|
vars:
|
|
|
path_datapool: '/opt/datapool'
|
|
|
path_data: '/data'
|
|
|
|
|
|
## -----------
|
|
|
## the following variables will be used to set up the datapool in the docker-compose step
|
|
|
|
|
|
# postgres access configuration
|
|
|
env_postgres_password: postgresql_default_password
|
|
|
env_postgres_port: 5432
|
|
|
# database user passwords
|
|
|
env_datapool_password: datapool_default_password
|
|
|
env_datapool_reader_password: datapool_reader_default_password
|
|
|
|
|
|
# landing zone folder on host
|
|
|
env_landing_zone: /data/landing_zone
|
|
|
# backup landing zone folder on host
|
|
|
env_backup_landing_zone: /data/backup_landing_zone
|
|
|
# folder hosting development landing zones
|
|
|
env_development_landing_zones_root: /data/development
|
|
|
# extra files
|
|
|
env_extra_data: /data/extra
|
|
|
env_postgres_db_host: /data/postgresql/data
|
|
|
# config files host
|
|
|
env_config_files: /data/etc
|
|
|
# persist log files
|
|
|
env_log_files: /data/logs
|
|
|
|
|
|
# API port
|
|
|
env_http_port: 8000
|
|
|
# internal
|
|
|
env_cpu_architecture: amd64
|
|
|
## -----------
|
|
|
|
|
|
|
|
|
tasks:
|
|
|
- name: Update and upgrade packages
|
... | ... | @@ -72,6 +102,28 @@ curl -X GET "https://api.digitalocean.com/v2/account/keys" -H "Authorization: Be |
|
|
- docker.io
|
|
|
- docker-compose
|
|
|
|
|
|
## ---
|
|
|
## update docker-compose
|
|
|
- name: Find current install
|
|
|
ansible.builtin.command: which docker-compose
|
|
|
register: docker_path
|
|
|
|
|
|
- name: Remove docker-compose
|
|
|
ansible.builtin.file:
|
|
|
path: "{{ docker_path.stdout }}"
|
|
|
state: absent
|
|
|
|
|
|
- name: Determining system architecture
|
|
|
ansible.builtin.command: uname -m
|
|
|
register: architecture
|
|
|
|
|
|
- name: Download docker-compose 2.6.1
|
|
|
ansible.builtin.get_url:
|
|
|
url: "https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-{{ architecture.stdout }}"
|
|
|
dest: "{{ docker_path.stdout }}"
|
|
|
mode: 'u+x'
|
|
|
## ---
|
|
|
|
|
|
- name: Clone repository
|
|
|
ansible.builtin.git:
|
|
|
repo: https://sissource.ethz.ch/sispub/datapool2/datapool.git
|
... | ... | @@ -79,66 +131,58 @@ curl -X GET "https://api.digitalocean.com/v2/account/keys" -H "Authorization: Be |
|
|
clone: True
|
|
|
update: True
|
|
|
|
|
|
- name: Preparing .env
|
|
|
- name: Creating .env file
|
|
|
ansible.builtin.copy:
|
|
|
src: '{{ path_datapool }}/docker/.env.example'
|
|
|
dest: '{{ path_datapool }}/docker/.env'
|
|
|
content: |
|
|
|
POSTGRES_PASSWORD={{ env_postgres_password }}
|
|
|
POSTGRES_PORT={{ env_postgres_port }}
|
|
|
DATAPOOL_PASSWORD={{ env_datapool_password }}
|
|
|
DATAPOOL_READER_PASSWORD={{ env_datapool_reader_password }}
|
|
|
|
|
|
LANDING_ZONE={{ env_landing_zone }}
|
|
|
BACKUP_LANDING_ZONE={{ env_backup_landing_zone }}
|
|
|
DEVELOPMENT_LANDING_ZONES_ROOT={{ env_development_landing_zones_root }}
|
|
|
POSTGRES_DB_HOST={{ env_postgres_db_host }}
|
|
|
EXTRA_DATA={{ env_extra_data }}
|
|
|
LOG_FILES={{ env_log_files }}
|
|
|
CONFIG_FILES={{ env_config_files }}
|
|
|
|
|
|
HTTP_PORT={{ env_http_port }}
|
|
|
|
|
|
CPU_ARCHITECTURE={{ env_cpu_architecture }}
|
|
|
|
|
|
- name: "Read a file content"
|
|
|
shell: 'cat {{ path_datapool }}/docker/.env'
|
|
|
register: debug_env
|
|
|
|
|
|
- name: "Print the file content to a console"
|
|
|
debug:
|
|
|
msg: "{{ debug_env.stdout }}"
|
|
|
|
|
|
- name: Create docker directories
|
|
|
ansible.builtin.file:
|
|
|
path: '{{ path_data }}/{{ item }}'
|
|
|
path: '{{ item }}'
|
|
|
state: directory
|
|
|
group: docker
|
|
|
mode: g+ws
|
|
|
loop:
|
|
|
- landing_zone
|
|
|
- backup_landing_zone
|
|
|
- development
|
|
|
- extra
|
|
|
- "{{ env_landing_zone }}"
|
|
|
- "{{ env_backup_landing_zone }}"
|
|
|
- "{{ env_development_landing_zones_root }}"
|
|
|
- "{{ env_extra_data }}"
|
|
|
- "{{ env_config_files }}"
|
|
|
|
|
|
- name: Create docker directories
|
|
|
ansible.builtin.file:
|
|
|
path: '{{ path_data }}/{{ item }}'
|
|
|
path: '{{ item }}'
|
|
|
state: directory
|
|
|
loop:
|
|
|
- postgres
|
|
|
- logs
|
|
|
|
|
|
- name: Create swapfile
|
|
|
include_tasks: swap.yml
|
|
|
|
|
|
- name: Build datapool from containers
|
|
|
docker_compose:
|
|
|
project_src: '{{ path_datapool }}/docker'
|
|
|
build: True
|
|
|
|
|
|
- name: Creating datapool service
|
|
|
ansible.builtin.copy:
|
|
|
src: '{{ path_datapool }}/docker/datapool.service'
|
|
|
dest: '/etc/systemd/system/'
|
|
|
|
|
|
- name: Enable and start datapool service
|
|
|
ansible.builtin.systemd:
|
|
|
name: datapool
|
|
|
enabled: True
|
|
|
state: started
|
|
|
daemon_reload: True
|
|
|
|
|
|
- name: Install pool CLI
|
|
|
ansible.builtin.file:
|
|
|
src: '{{ path_datapool }}/docker/pool'
|
|
|
dest: '/usr/local/bin/pool'
|
|
|
state: link
|
|
|
group: docker
|
|
|
mode: o-x
|
|
|
- "{{ env_postgres_db_host }}"
|
|
|
- "{{ env_log_files }}"
|
|
|
|
|
|
- name: Reboot
|
|
|
reboot:
|
|
|
reboot_timeout: 120
|
|
|
```
|
|
|
|
|
|
*swap.yml*
|
|
|
```yml
|
|
|
## ---
|
|
|
## add SWAP for weak systems
|
|
|
- name: set swap_file variable
|
|
|
set_fact:
|
|
|
swap_file: /swapfile
|
... | ... | @@ -171,13 +215,41 @@ curl -X GET "https://api.digitalocean.com/v2/account/keys" -H "Authorization: Be |
|
|
regexp: /swapfile
|
|
|
line: "/swapfile none swap sw 0 0"
|
|
|
|
|
|
#- name: turn on swap
|
|
|
# command: swapon -a
|
|
|
|
|
|
- name: set swapiness
|
|
|
sysctl:
|
|
|
name: vm.swappiness
|
|
|
value: "1"
|
|
|
## ---
|
|
|
|
|
|
- name: Build datapool from containers
|
|
|
docker_compose:
|
|
|
project_src: '{{ path_datapool }}/docker'
|
|
|
build: True
|
|
|
|
|
|
- name: Creating datapool service
|
|
|
ansible.builtin.copy:
|
|
|
src: '{{ path_datapool }}/docker/datapool.service'
|
|
|
dest: '/etc/systemd/system/'
|
|
|
|
|
|
- name: Enable and start datapool service
|
|
|
ansible.builtin.systemd:
|
|
|
name: datapool
|
|
|
enabled: True
|
|
|
state: started
|
|
|
daemon_reload: True
|
|
|
|
|
|
- name: Install pool CLI
|
|
|
ansible.builtin.file:
|
|
|
src: '{{ path_datapool }}/docker/pool'
|
|
|
dest: '/usr/local/bin/pool'
|
|
|
state: link
|
|
|
group: docker
|
|
|
mode: o-x
|
|
|
|
|
|
- name: Reboot
|
|
|
reboot:
|
|
|
reboot_timeout: 120
|
|
|
|
|
|
```
|
|
|
|
|
|
## Deployment
|
... | ... | |