1
0
Fork 0
mirror of https://github.com/roles-ansible/ansible_role_etebase.git synced 2024-08-16 10:19:52 +02:00

update etesync deployment

+ create config file
+ set variables
+ improve env
+ download latest git tag
This commit is contained in:
L3D 2022-11-10 22:47:17 +01:00
parent 7291902cbf
commit 51b7b3aa68
Signed by: l3d
GPG key ID: CD08445BFF4313D1
8 changed files with 183 additions and 9 deletions

View file

@ -1,13 +1,38 @@
---
# Unix vars
etebase_group: 'etebase'
etebase_user: 'etebase'
etebase_user_home: '/var/lib/etebase'
etebase_shell: '/bin/false'
etebase_venv: '/tmp/venv'
etebase__group: 'etebase'
etebase__user: 'etebase'
etebase__user_home: '/var/lib/etebase'
etebase__shell: '/bin/false'
etebase__venv: '/tmp/venv'
# package state
etebase_package_state: 'present'
etebase__package_state: 'present'
# etebase version
etebase__version: 'latest'
# etebase config options
# -> global
etebase__global_secret_file: 'secret.txt'
etebase__global_debug: false
etebase__global_static_root: "{{ etebase__user_home }}/static_root"
etebase__global_media_root: "{{ etebase__user_home }}/media_root"
etebase__global_extra: ''
# -> allowed_hosts
etebase__allowed_hosts_allowed_host1: '*'
etebase__allowed_hosts_extra: ''
# -> Database
etebase__database_engine: 'django.db.backends.sqlite3'
etebase__database_name: 'etebase.db.sqlite3'
etebase__database_extra: ''
etebase__database_options_extra: ''
# -> Other
etebase__ldap_extra: ''
etebase__config_extra: ''
# should we do a version check? (recomended)
submodules_versioncheck: false

23
tasks/configure.yml Normal file
View file

@ -0,0 +1,23 @@
---
- name: Configure Etebase
become: true
ansible.builtin.template:
src: "templates/etebase-server.ini.j2"
dest: "{{ etebase__user_home }}/etebase_{{ etebase_version_target }}/etebase-server.ini"
mode: '0640'
group: "{{ etebase__group }}"
owner: "{{ etebase__user }}"
- name: "Create istatic data directory"
become: true
ansible.builtin.file:
path: "{{ item }}"
state: directory
group: "{{ etebase__group }}"
owner: "{{ etebase__user }}"
recurse: true
mode: 'u=rwX,g=rX,o='
with_items:
- "{{ etebase__global_static_root }}"
- "{{ etebase__global_media_root }}"

23
tasks/download.yml Normal file
View file

@ -0,0 +1,23 @@
---
- name: Download etebase git Repository
become: true
ansible.builtin.git:
repo: "{{ etebase__repo }}"
dest: "{{ etebase__user_home }}/etebase_{{ etebase_version_target }}"
single_branch: true
depth: 4
force: false
track_submodules: true
umask: "0027"
update: false
version: "{{ etebase_version_target }}"
- name: Fix venv File owner/group
become: true
ansible.builtin.file:
path: "{{ etebase__user_home }}/etebase_{{ etebase_version_target }}"
state: directory
mode: 'u=rwX,g=rX,o='
recurse: true
group: "{{ etebase__group }}"
owner: "{{ etebase__user }}"

View file

@ -6,5 +6,14 @@
- name: Create Etebase User/Group
ansible.builtin.include_tasks: create_user.yml
- name: Define Etebase Version
ansible.builtin.include_tasks: set_version.yml
- name: Download Etebase Repo
ansible.builtin.include_tasks: download.yml
- name: Setup Virtualenv and install Requirements
ansible.builtin.include_tasks: python_venv.yml
- name: Create Etebase Config
ansible.builtin.include_tasks: configure.yml

View file

@ -8,8 +8,15 @@
- name: Install etebase python requirements in virtualenv
become: true
ansible.builtin.pip:
name: bottle
# requirements: /my_app/requirements.txt
requirements: "{{ etebase__user_home }}/etebase_{{ etebase_version_target }}/requirements.txt"
virtualenv: "{{ etebase__venv }}"
state: "{{ etebase__package_state }}"
umask: "0027"
- name: Install etebase ASGI Server
become: true
ansible.builtin.pip:
name: 'uvicorn[standard]'
virtualenv: "{{ etebase__venv }}"
state: "{{ etebase__package_state }}"
umask: "0027"
@ -20,5 +27,6 @@
path: "{{ etebase__venv }}"
state: directory
mode: 'u=rwX,g=rX,o='
recurse: true
group: "{{ etebase__group }}"
owner: "{{ etebase__user }}"

38
tasks/set_version.yml Normal file
View file

@ -0,0 +1,38 @@
---
- name: "Determine 'latest' version release"
when: etebase__version == "latest"
block:
- name: "Get latest etebase release metadata"
ansible.builtin.uri:
url: "{{ etebase__repo_api }}"
return_content: true
register: etebase_remote_metadata
when: not ansible_check_mode
- name: "Fail if running in check mode without versions set."
ansible.builtin.fail:
msg: |
"You are running this playbook in check mode:
Please set the Etebase version with the variable 'etebase__version', because the
URI module cannot detect the latest version in this mode."
when: ansible_check_mode and (etebase__version == 'latest' or etebase__version == 'present')
- name: "Set fact latest etebase release"
ansible.builtin.set_fact:
etebase_remote_version: "{{ etebase_remote_metadata.json.0.name }}"
when: not ansible_check_mode
- name: "Set etebase version target (latest)"
ansible.builtin.set_fact:
etebase_version_target: "{{ etebase_remote_version }}"
when: not ansible_check_mode
- name: "Set etebase version target {{ etebase__version }}"
ansible.builtin.set_fact:
etebase_version_target: "{{ etebase__version }}"
when: etebase__version != "latest"
- name: Print Etebase Version
ansible.builtin.debug:
verbosity: 1
msg: "Set Etebase Version to {{ etebase_version_target }}"

View file

@ -0,0 +1,45 @@
; {{ ansible_managed }}
; See https://github.com/roles-ansible/ansible_role_etebase.git
[global]
secret_file = {{ etebase__global_secret_file }}
debug = {{ etebase__global_debug | ternary('true', 'false') }}
;Set the paths where data will be stored at
static_root = {{ etebase__global_static_root }}
media_root = {{ etebase__global_media_root }}
;Advanced options, only uncomment if you know what you're doing:
;static_url = /static/
;media_url = /user-media/
;language_code = en-us
;time_zone = UTC
;redis_uri = redis://localhost:6379
{{ etebase__global_extra }}
[allowed_hosts]
allowed_host1 = {{ etebase__allowed_hosts_allowed_host1 }}
{{ etebase__allowed_hosts_extra }}
[database]
engine = {{ etebase__database_engine }}
name = db.sqlite3
{{ etebase__database_extra }}
[database-options]
; Add engine-specific options here, such as postgresql parameter key words
{{ etebase__database_options_extra }}
;[ldap]
;server = <The URL to your LDAP server>
;search_base = <Your search base>
;filter = <Your LDAP filter query. '%%s' will be substituted for the username>
; In case a cache TTL of 1 hour is too short for you, set `cache_ttl` to the preferred
; amount of hours a cache entry should be viewed as valid:
;cache_ttl = 5
;bind_dn = <Your LDAP "user" to bind as. Must be a bind user>
; Either specify the password directly, or provide a password file
;bind_pw = <The password to authenticate as your bind user>
;bind_pw_file = /path/to/the/file.txt
{{ etebase__ldap_extra }}
{{ etebase__config_extra }}

View file

@ -1,4 +1,7 @@
---
etebase__repo: 'https://github.com/etesync/server.git'
etebase__repo_api: 'https://api.github.com/repos/etesync/server/tags'
# versionscheck
playbook_version_number: 03 # should be a integer
playbook_version_number: 04 # should be a integer
playbook_version_path: 'role-etebase'