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:
parent
7291902cbf
commit
51b7b3aa68
8 changed files with 183 additions and 9 deletions
|
@ -1,13 +1,38 @@
|
||||||
---
|
---
|
||||||
# Unix vars
|
# Unix vars
|
||||||
etebase_group: 'etebase'
|
etebase__group: 'etebase'
|
||||||
etebase_user: 'etebase'
|
etebase__user: 'etebase'
|
||||||
etebase_user_home: '/var/lib/etebase'
|
etebase__user_home: '/var/lib/etebase'
|
||||||
etebase_shell: '/bin/false'
|
etebase__shell: '/bin/false'
|
||||||
etebase_venv: '/tmp/venv'
|
etebase__venv: '/tmp/venv'
|
||||||
|
|
||||||
# package state
|
# 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)
|
# should we do a version check? (recomended)
|
||||||
submodules_versioncheck: false
|
submodules_versioncheck: false
|
||||||
|
|
23
tasks/configure.yml
Normal file
23
tasks/configure.yml
Normal 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
23
tasks/download.yml
Normal 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 }}"
|
|
@ -6,5 +6,14 @@
|
||||||
- name: Create Etebase User/Group
|
- name: Create Etebase User/Group
|
||||||
ansible.builtin.include_tasks: create_user.yml
|
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
|
- name: Setup Virtualenv and install Requirements
|
||||||
ansible.builtin.include_tasks: python_venv.yml
|
ansible.builtin.include_tasks: python_venv.yml
|
||||||
|
|
||||||
|
- name: Create Etebase Config
|
||||||
|
ansible.builtin.include_tasks: configure.yml
|
||||||
|
|
|
@ -8,8 +8,15 @@
|
||||||
- name: Install etebase python requirements in virtualenv
|
- name: Install etebase python requirements in virtualenv
|
||||||
become: true
|
become: true
|
||||||
ansible.builtin.pip:
|
ansible.builtin.pip:
|
||||||
name: bottle
|
requirements: "{{ etebase__user_home }}/etebase_{{ etebase_version_target }}/requirements.txt"
|
||||||
# requirements: /my_app/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 }}"
|
virtualenv: "{{ etebase__venv }}"
|
||||||
state: "{{ etebase__package_state }}"
|
state: "{{ etebase__package_state }}"
|
||||||
umask: "0027"
|
umask: "0027"
|
||||||
|
@ -20,5 +27,6 @@
|
||||||
path: "{{ etebase__venv }}"
|
path: "{{ etebase__venv }}"
|
||||||
state: directory
|
state: directory
|
||||||
mode: 'u=rwX,g=rX,o='
|
mode: 'u=rwX,g=rX,o='
|
||||||
|
recurse: true
|
||||||
group: "{{ etebase__group }}"
|
group: "{{ etebase__group }}"
|
||||||
owner: "{{ etebase__user }}"
|
owner: "{{ etebase__user }}"
|
||||||
|
|
38
tasks/set_version.yml
Normal file
38
tasks/set_version.yml
Normal 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 }}"
|
45
templates/etebase-server.ini.j2
Normal file
45
templates/etebase-server.ini.j2
Normal 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 }}
|
|
@ -1,4 +1,7 @@
|
||||||
---
|
---
|
||||||
|
etebase__repo: 'https://github.com/etesync/server.git'
|
||||||
|
etebase__repo_api: 'https://api.github.com/repos/etesync/server/tags'
|
||||||
|
|
||||||
# versionscheck
|
# versionscheck
|
||||||
playbook_version_number: 03 # should be a integer
|
playbook_version_number: 04 # should be a integer
|
||||||
playbook_version_path: 'role-etebase'
|
playbook_version_path: 'role-etebase'
|
||||||
|
|
Loading…
Reference in a new issue