r/frigate: Add role to deploy Frigate
Frigate is an NVR that uses machine learning to detect objects on camera in real time. It integrates with Home Assistant to expose sensors which can be used for automation, etc. The only official way to deploy Frigate is with a container, so we use Podman and systemd to manage it.
This commit is contained in:
115
roles/frigate/tasks/main.yml
Normal file
115
roles/frigate/tasks/main.yml
Normal file
@@ -0,0 +1,115 @@
|
||||
- name: load architecture-specific values
|
||||
include_vars: '{{ item }}'
|
||||
with_first_found:
|
||||
- '{{ ansible_architecture }}.yml'
|
||||
- defaults.yml
|
||||
tags:
|
||||
- always
|
||||
|
||||
- name: ensure podman is installed
|
||||
package:
|
||||
name: '{{ frigate_podman_packages }}'
|
||||
state: present
|
||||
tags:
|
||||
- install
|
||||
|
||||
- name: ensure frigate user exists
|
||||
user:
|
||||
name: frigate
|
||||
system: true
|
||||
home: /var/lib/frigate
|
||||
createhome: false
|
||||
register: frigate_user
|
||||
tags:
|
||||
- user
|
||||
|
||||
- name: ensure frigate home directory exists
|
||||
file:
|
||||
path: /var/lib/frigate
|
||||
owner: frigate
|
||||
group: frigate
|
||||
mode: '0755'
|
||||
state: directory
|
||||
tags:
|
||||
- datadir
|
||||
- name: ensure frigate tmp directory exists
|
||||
file:
|
||||
path: /var/lib/frigate/tmp
|
||||
owner: frigate
|
||||
group: frigate
|
||||
mode: '0700'
|
||||
state: directory
|
||||
tags:
|
||||
- datadir
|
||||
|
||||
- name: ensure frigate container image is available
|
||||
podman_image:
|
||||
name: docker.io/blakeblackshear/frigate:{{ frigate_image_tag }}
|
||||
tag: stable
|
||||
state: present
|
||||
force: '{{ frigate_update|d|bool }}'
|
||||
notify:
|
||||
- restart frigate
|
||||
tags:
|
||||
- container-image
|
||||
- container
|
||||
|
||||
- name: ensure frigate systemd unit is installed
|
||||
template:
|
||||
src: frigate.service.j2
|
||||
dest: /etc/systemd/system/frigate.service
|
||||
mode: '0644'
|
||||
notify:
|
||||
- reload systemd
|
||||
- restart frigate
|
||||
tags:
|
||||
- systemd
|
||||
- name: ensure frigate starts at boot
|
||||
service:
|
||||
name: frigate
|
||||
enabled: true
|
||||
tags:
|
||||
- service
|
||||
|
||||
- name: ensure frigate configuration directory exists
|
||||
file:
|
||||
path: /etc/frigate
|
||||
mode: '0750'
|
||||
owner: root
|
||||
group: frigate
|
||||
state: directory
|
||||
tags:
|
||||
- config
|
||||
- name: ensure frigate is configured
|
||||
copy:
|
||||
dest: /etc/frigate/frigate.yml
|
||||
content: >-
|
||||
{{ frigate_config|to_nice_yaml(indent=2) }}
|
||||
mode: '0640'
|
||||
owner: root
|
||||
group: frigate
|
||||
notify:
|
||||
- restart frigate
|
||||
tags:
|
||||
- config
|
||||
|
||||
- meta: flush_handlers
|
||||
- name: ensure frigate is running
|
||||
service:
|
||||
name: frigate
|
||||
state: started
|
||||
tags:
|
||||
- service
|
||||
|
||||
- name: ensure firewall is configured for frigate
|
||||
firewalld:
|
||||
port: '{{ item }}/tcp'
|
||||
immediate: true
|
||||
permanent: false
|
||||
state: enabled
|
||||
loop:
|
||||
- 5000 # Frigate web UI/API
|
||||
- 1935 # RTMP
|
||||
notify: save firewalld configuration
|
||||
tags:
|
||||
- firewall
|
||||
Reference in New Issue
Block a user