Init commit
This commit is contained in:
49
tasks/autologin.yaml
Normal file
49
tasks/autologin.yaml
Normal 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
50
tasks/dashboard.yaml
Normal 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
95
tasks/drive_index.yaml
Normal 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
31
tasks/hello_there.yaml
Normal 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
21
tasks/main.yaml
Normal 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
37
tasks/user_setup.yaml
Normal 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
|
||||
|
||||
...
|
||||
Reference in New Issue
Block a user