Init commit

This commit is contained in:
2025-11-02 13:11:42 -08:00
commit 650b481463
16 changed files with 983 additions and 0 deletions

49
tasks/autologin.yaml Normal file
View File

@ -0,0 +1,49 @@
---
- name: autologin - edit logind to reduce vterms to one
lineinfile:
dest: /etc/systemd/logind.conf
regexp: '^#NAutoVTs=6'
line: 'NAutoVTs=1'
backrefs: yes
- name: autologin - create getty tty1 service folder
file:
path: /etc/systemd/system/getty@tty1.service.d/
state: directory
mode: '0700'
- name: autologin - "create {{ autologin_user }} .bashrc"
copy:
#dest: "/home/{{ autologin_user }}/.bash_aliases"
dest: "/home/{{ autologin_user }}/.bash_aliases"
owner: "{{ autologin_user }}"
group: "{{ autologin_user }}"
mode: '0600'
content: |
clear
cat {{ service_folder }}/hello-there.txt
sleep 4
{{ service_folder }}/drive_check.sh
- name: autologin - add autologin override to getty tty1 service
copy:
dest: /etc/systemd/system/getty@tty1.service.d/override.conf
content: |
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin {{ autologin_user }} --noclear %I 38400 linux
# create hello_there ASCII art
- name: autologin - generate hello_there.txt for the lulz
include_tasks: hello_there.yaml
- name: autologin - Restart getty@tty1 service
systemd:
name: getty@tty1.service
state: restarted
enabled: true
masked: false
daemon_reload: true
...

50
tasks/dashboard.yaml Normal file
View File

@ -0,0 +1,50 @@
---
###############################################
# This part sets up drive history dashboard
###############################################
- name: drive history dashboard web files
block:
- name: drive history dashboard - set docker folder variable
set_fact:
service_control_web_folder: "{{ service_folder }}/web"
# Create docker Folder
- name: drive history dashboard - create service_control_web_folder folder
file:
path: "{{ service_control_web_folder }}"
state: directory
mode: '0755'
owner: root
group: root
- name: drive history dashboard - copy files for docker container
copy:
src: "dashboard/"
dest: "{{ service_control_web_folder }}/html"
mode: 0755
owner: root
group: root
###############################################
# Start service_control_website
###############################################
- name: start drive history dashboard
block:
- name: service_control_website - template config
template:
src: docker-compose-php.yaml
dest: "{{ service_control_web_folder }}/docker-compose.yaml"
mode: 0644
- name: "service_control_website - Start container at 0.0.0.0:{{ container_http_port }}"
shell: "docker-compose -f {{ service_control_web_folder }}/docker-compose.yaml up -d"
register: docker_output
- debug: |
msg="{{ docker_output.stdout_lines }}"
msg="{{ docker_output.stderr_lines }}"
...

95
tasks/drive_index.yaml Normal file
View File

@ -0,0 +1,95 @@
---
- name: Drive Index - Install Packages
apt:
name:
- "{{ ssd_health_packages_item }}"
state: present
loop: "{{ ssd_health_packages }}"
loop_control:
loop_var: ssd_health_packages_item
# Create Service Folder
- name: Drive Index - create ssd_check service folder
file:
path: "{{ service_folder }}"
state: directory
owner: "{{ autologin_user }}"
group: "{{ autologin_user }}"
mode: '0755'
- name: Drive Index - copy script files
copy:
src: scripts/
dest: "{{ service_folder }}/"
owner: "{{ autologin_user }}"
group: "{{ autologin_user }}"
mode: 0755
# Create python service venv
- name: Drive Index - create python venv requirement file
copy:
dest: "{{ service_folder }}/requirements.txt"
content: |
flask
pytz
requests
opencv-python
owner: "{{ autologin_user }}"
group: "{{ autologin_user }}"
mode: 0644
# build venv
- name: Drive Index - build python venv
pip:
virtualenv: "{{ service_folder }}/venv"
requirements: "{{ service_folder }}/requirements.txt"
virtualenv_command: python3 -m venv
state: present
# stop service
- name: "Drive Index - {{ service_name }} api - stop api service if running"
ignore_errors: yes
systemd:
name: "{{ service_name }}.service"
state: stopped
# Create service_control api service
- name: "Drive Index - template {{ service_name }}.service"
template:
src: drive_index.service
dest: /etc/systemd/system/drive_index.service
mode: 0644
# Create drive_check.sh
- name: "Drive Index - template drive_check.sh"
template:
src: drive_check.sh
dest: "{{ service_folder }}/drive_check.sh"
mode: 0755
owner: "{{ autologin_user }}"
group: "{{ autologin_user }}"
# daemon reload
- name: "Drive Index - {{ service_name }} api - daemon reload"
systemd:
daemon_reload: yes
# Enable and start
- name: "Drive Index - {{ service_name }} api - enable and start service api"
systemd:
name: "{{ service_name }}.service"
state: started
enabled: yes
- name: "Drive Index - {{ service_name }} api - enable and start service timeoue api"
systemd:
name: "{{ service_name }}.service"
state: started
enabled: yes
- name: Drive Index - initialize db
shell: "{{ service_folder }}/store_drive.sh -i -d {{ db_path }}"
...

31
tasks/hello_there.yaml Normal file
View File

@ -0,0 +1,31 @@
---
- name: Hello there - copy img2txt.py
copy:
src: img2txt.py
dest: "{{ service_folder }}/img2txt.py"
owner: "{{ autologin_user }}"
group: "{{ autologin_user }}"
mode: 0755
- name: Hello there - Download hello there
get_url:
url: "{{ hello_there_url }}"
dest: "{{ service_folder }}/hello-there.png"
mode: 0755
owner: "{{ autologin_user }}"
group: "{{ autologin_user }}"
- name: Hello there - get tty1 width
shell: stty size -F /dev/tty1 | cut -d ' ' -f 2
register: tty1_width
- name: Hello there - generate hello-there.txt
shell: |
{{ service_folder }}/venv/bin/python3 \
{{ service_folder }}/img2txt.py \
--input {{ service_folder }}/hello-there.png \
--output {{ service_folder }}/hello-there.txt \
--num_cols {{ tty1_width.stdout_lines[0] }} --mode simple
...

21
tasks/main.yaml Normal file
View File

@ -0,0 +1,21 @@
---
# create and configure user account
- name: Drive health - set up user account
include_tasks: user_setup.yaml
# create drive index service
- name: Drive health - drive_index service
include_tasks: drive_index.yaml
# create drive history dashboard
- name: Drive health - drive history dashboard
include_tasks: dashboard.yaml
# set up autologin
- name: Drive health - configure autologin
when: not install_kiosk | bool
include_tasks: autologin.yaml
...

37
tasks/user_setup.yaml Normal file
View File

@ -0,0 +1,37 @@
---
- name: "User setup - create {{ autologin_user }} user"
user:
name: "{{ autologin_user }}"
groups: disk
password: "{{ autologin_password | password_hash('sha512') }}"
shell: /bin/bash
- name: "User setup - ensure {{ autologin_user }} home folder exists"
file:
path: "/home/{{ autologin_user }}"
state: directory
owner: "{{ autologin_user }}"
group: "{{ autologin_user }}"
mode: '0700'
- name: User setup - update permissions on smartctl & fdisk
shell: |
chmod 755 /usr/sbin/smartctl
chmod u+s /usr/sbin/smartctl
chmod u+s /usr/sbin/fdisk
- name: User setup - create symlink for smartctl & fdisk
ignore_errors: yes
shell: |
ln /usr/sbin/smartctl /usr/bin/smartctl
ln /usr/sbin/fdisk /usr/bin/fdisk
- name: "User setup - allow {{ autologin_user }} to smartctl"
copy:
dest: /etc/sudoers.d/smartctl
content: |
{{ autologin_user }} ALL=(ALL) NOPASSWD: /usr/sbin/smartctl
{{ autologin_user }} ALL=(ALL) NOPASSWD: /usr/sbin/fdisk
...