1
0
Fork 0

Compare commits

...

5 commits

5 changed files with 92 additions and 1 deletions

View file

@ -0,0 +1,6 @@
---
octoprint_become: true
octoprint_become_user: root
octoprint_version: 1.6.1
octoprint_dir: /srv/octoprint

View file

@ -0,0 +1,13 @@
---
- name: systemctl daemon-reload
systemd:
daemon_reload: true
become: "{{ octoprint_become }}"
become_user: "{{ octoprint_become_user }}"
- name: systemctl restart octoprint
systemd:
name: octoprint.service
state: restarted
become: "{{ octoprint_become }}"
become_user: "{{ octoprint_become_user }}"

View file

@ -0,0 +1,56 @@
---
- block:
- name: install octoprint dependencies
apt:
name:
- python3
- python3-pip
- virtualenv
update_cache: true
cache_valid_time: 3600
- name: ensure octoprint group exits
group:
name: octoprint
system: true
- name: ensure octoprint user exists and has restrictive settings
user:
name: octoprint
groups: octoprint
password: "*"
home: "{{ octoprint_dir }}"
system: true
shell: /usr/sbin/nologin
- name: install wheel and octoprint inside a virtualenv
pip:
name:
- wheel
- OctoPrint=={{ octoprint_version }}
virtualenv: "{{ octoprint_dir }}"
- name: ensure octoprint owns "{{ octoprint_dir }}"
file:
path: "{{ octoprint_dir }}"
state: directory
recurse: true
owner: octoprint
group: octoprint
- name: install octoprint systemd unit file
template:
src: etc/systemd/system/octoprint.service.j2
dest: /etc/systemd/system/octoprint.service
notify:
- systemctl daemon-reload
- name: ensure octoprint is enabled and started
systemd:
name: octoprint
state: started
enabled: true
become: "{{ octoprint_become }}"
become_user: "{{ octoprint_become_user }}"

View file

@ -0,0 +1,15 @@
# Managed by Ansible
[Unit]
Description=OctoPrint
After=network-online.target
Wants=network-online.target
[Service]
# WorkingDirectory={{ octoprint_dir }}
ExecStart={{ octoprint_dir }}/bin/octoprint serve
User=octoprint
Group=octoprint
Restart=on-failure
[Install]
WantedBy=multi-user.target

View file

@ -88,7 +88,8 @@
# - {role: ../roles/generate_certificate, become: true}
# - {role: ../roles/gitea, become: true}
# - ../roles/dokku
- ../roles/znc
# - ../roles/znc
- ../roles/octoprint
# The easy ports sequece is just for test. Also don't disable strict IP
# filtering on production.
# - {role: ../roles/knockd, ports: [3333, 4444, 5555], network_interface: eth1, filter_ip: ""}