152 lines
4.7 KiB
YAML
152 lines
4.7 KiB
YAML
---
|
|
|
|
- name: Create group
|
|
group:
|
|
name: "{{ octoprint_group }}"
|
|
|
|
- name: Create user
|
|
user:
|
|
name: "{{ octoprint_user }}"
|
|
home: "/home/{{ octoprint_user }}"
|
|
group: "{{ octoprint_group }}"
|
|
append: yes
|
|
groups:
|
|
- video
|
|
|
|
- name: Install requirements
|
|
apt:
|
|
name:
|
|
- python3-pip
|
|
- python3-virtualenv
|
|
|
|
- name: Create virtual env and install python dependencies
|
|
pip:
|
|
name: octoprint
|
|
virtualenv: "{{ octoprint_dir }}"
|
|
|
|
- name: Create configuration directories
|
|
file:
|
|
path: "/home/{{ octoprint_user }}/{{ item }}"
|
|
owner: "{{ octoprint_user }}"
|
|
group: "{{ octoprint_group }}"
|
|
state: directory
|
|
mode: u+rw,g+rw,o+r
|
|
with_items:
|
|
- .octoprint
|
|
- .octoprint/printerProfiles
|
|
|
|
- name: Install systemd unit
|
|
template: src=octoprint.service.j2 dest=/lib/systemd/system/octoprint.service
|
|
notify:
|
|
- Reload systemd
|
|
- Restart octoprint
|
|
|
|
################################################################################
|
|
# Octoprint configuration
|
|
################################################################################
|
|
|
|
- name: Register if config already exists on target host
|
|
stat:
|
|
path: "/home/{{ octoprint_user }}/.octoprint/config.yaml"
|
|
register: octoprint_register_config_stat
|
|
|
|
- name: Default octoprint config
|
|
set_fact:
|
|
octoprint_config: "{{ lookup('template', 'config.yaml.j2') | from_yaml }}"
|
|
|
|
- name: Initial configuration of octoprint
|
|
copy:
|
|
content: "{{ octoprint_config | to_nice_yaml }}"
|
|
dest: "/home/{{ octoprint_user }}/.octoprint/config.yaml"
|
|
when: not octoprint_register_config_stat.stat.exists
|
|
|
|
- name: Update existing Octoprint configuration
|
|
block:
|
|
- name: Read Octoprint config file
|
|
slurp:
|
|
src: "/home/{{ octoprint_user }}/.octoprint/config.yaml"
|
|
register: octoprint_register_config
|
|
|
|
- name: Parse Octoprint config file
|
|
set_fact:
|
|
current_octoprint_config: "{{ octoprint_register_config['content'] | b64decode | from_yaml}}"
|
|
|
|
- name: Write updated octoprint configuration
|
|
copy:
|
|
content: "{{ octoprint_config | combine(current_octoprint_config, recursive=True) | to_nice_yaml}}"
|
|
dest: "/home/{{octoprint_user}}/.octoprint/config.yaml"
|
|
notify: Restart octoprint
|
|
|
|
################################################################################
|
|
# Octoprint Users
|
|
################################################################################
|
|
|
|
when: octoprint_register_config_stat.stat.exists
|
|
|
|
- name: Register if user databse already exists on target host
|
|
stat:
|
|
path: "/home/{{ octoprint_user }}/.octoprint.users.yaml"
|
|
register: octoprint_register_users
|
|
|
|
- name: Read default octoprint users
|
|
set_fact:
|
|
octoprint_defaut_users: "{{ lookup('file', 'users.yaml') | from_yaml }}"
|
|
|
|
- name: Copy default users
|
|
copy:
|
|
src: users.yaml
|
|
dest: "/home/{{ octoprint_user }}/.octoprint/users.yaml"
|
|
when: not octoprint_register_users.stat.exists
|
|
|
|
- name: Merge users database with default users
|
|
block:
|
|
- name: Read Octoprint users file
|
|
slurp:
|
|
src: "/home/{{ octoprint_user }}/.octoprint/users.yaml"
|
|
register: octoprint_register_users_file
|
|
|
|
- name: Parse Octoprint users file
|
|
set_fact:
|
|
current_octoprint_users: "{{ octoprint_register_users_file['content'] | b64decode | from_yaml }}"
|
|
|
|
- name: Merge current users with default users
|
|
set_fact:
|
|
octoprint_users_db: "{{ current_octoprint_users | combine(octoprint_default_users)}}"
|
|
|
|
- name: Copy new users file
|
|
copy:
|
|
content: "{{ octoprint_users_db | to_nice_yaml }}"
|
|
dest: "/home/{{ octoprint_user }}/.octoprint.users.yaml"
|
|
when: octoprint_register_users.stat.exists
|
|
|
|
################################################################################
|
|
# Reverse proxy
|
|
################################################################################
|
|
|
|
- name: Configure reverse proxy
|
|
block:
|
|
- name: Ensure certificates are available
|
|
command: openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/apache2/ssl/{{ octoprint_domain }}.key -out /etc/apache2/ssl/{{ octoprint_domain }}.crt -days 730 -subj "/CN={{ octoprint_domain }}" creates=/etc/apache2/ssl/{{ octoprint_domain }}.crt
|
|
notify: Restart apache2
|
|
when: octoprint_ssl
|
|
|
|
- name: Configure certificate manager for octoprint
|
|
template: src=certs.j2 dest=/etc/acertmgr/{{ octoprint_domain }}.conf
|
|
notify: Run acertmgr
|
|
when: octoprint_ssl
|
|
|
|
- name: Configure vhost
|
|
template: src=nginx_vhost.j2 dest=/etc/nginx/sites-available/octoprint
|
|
notify: Restart nginx
|
|
|
|
- name: Enable vhost
|
|
file: src=/etc/nginx/sites-available/octoprint dest=/etc/nginx/sites-enabled/octoprint state=link
|
|
notify: Restart nginx
|
|
|
|
- name: Enable octoprint
|
|
service:
|
|
name: octoprint
|
|
enabled: yes
|
|
|
|
|