Frank refactoring part 1

This commit is contained in:
2026-08-30 04:41:27 +00:00
parent 85a063c1a7
commit ae69c2fafe
37 changed files with 301 additions and 210 deletions
-179
View File
@@ -1,179 +0,0 @@
#################################################
# DO Community Playbooks: Docker
#################################################
---
- hosts: all
become: true
vars_files:
- vars/pies.yml
tasks:
# - name: Check if LCD Rotated
# shell: grep -c "lcd_rotate=2" /boot/config.txt || true
# register: lcd_rotate_test
# - name: rotate the lcd
# lineinfile:
# dest: /boot/config.txt
# line: lcd_rotate=2
# when: lcd_rotate_test.stdout == "0"
- name: Update the hostname file
replace:
path: /etc/hostname
regexp: '(\s*)raspberrypi(\s+.*)?$'
replace: "\\1{{ hostname }}\\2"
backup: yes
- name: Update the hosts file
replace:
path: /etc/hosts
regexp: '(\s+)raspberrypi(\s+.*)?$'
replace: "\\1{{ hostname }}\\2"
backup: yes
- name: Ensure SSH Directory exists
file:
path: "/home/{{ user }}/.ssh"
state: directory
group: "{{ user }}"
owner: "{{ user }}"
mode: 0700
- name: Ensure authorized_keys file exists
copy:
content: ""
dest: "/home/{{ user }}/.ssh/authorized_keys"
force: no
group: "{{ user }}"
owner: "{{ user }}"
mode: 0644
- name: Check Terminus public key
shell: "grep -c \"{{ terminus_key }}\" /home/{{ user }}/.ssh/authorized_keys || true"
register: terminuskey_test
- name: Add Terminus public key
lineinfile:
dest: "/home/{{ user }}/.ssh/authorized_keys"
line: "{{ terminus_key }}"
when: terminuskey_test.stdout == "0"
- name: Check clair public key
shell: "grep -c \"{{ clair_key }}\" /home/{{ user }}/.ssh/authorized_keys || true"
register: clairkey_test
- name: Add clair public key
lineinfile:
dest: "/home/{{ user }}/.ssh/authorized_keys"
line: "{{ clair_key }}"
when: clairkey_test.stdout == "0"
- name: Check Anjin public key
shell: "grep -c \"{{ anjin_key }}\" /home/{{ user }}/.ssh/authorized_keys || true"
register: anjin_key_test
- name: Add Anjin public key
lineinfile:
dest: "/home/{{ user }}/.ssh/authorized_keys"
line: "{{ anjin_key }}"
when: anjin_key_test.stdout == "0"
- name: Update the sshd config file to disable password logins
replace:
path: /etc/ssh/sshd_config
regexp: '(\s+)#PasswordAuthentication yes(\s+.*)?$'
replace: "\\1PasswordAuthentication no\\2"
backup: yes
- name: Check if .ssh config file exists
stat:
path: "/home/{{ user }}/.ssh/config"
register: config_status
- name: No need to upload the .ssh config
when: config_status.stat.exists == true
debug:
msg: No need to upload the .ssh config as it already exists.
- name: Upload the .ssh config file
when: config_status.stat.exists == false
template:
src: "files/config"
dest: "/home/{{ user }}/.ssh/config"
group: "{{ user }}"
owner: "{{ user }}"
mode: 0644
- name: Check if ed25519 key exists
stat:
path: "/home/{{ user }}/.ssh/id_ed25519"
register: key_status
- name: No need to generate new ed25519 key
when: key_status.stat.exists == true
debug:
msg: No need to generate new ed25519 key as it already exists.
- name: Generate new id_ed25519 key
when: key_status.stat.exists == false
become: yes
become_user: "{{ user }}"
shell: ssh-keygen -t ed25519 -q -f "/home/{{ user }}/.ssh/id_ed25519" -C "{{ user }}@{{ hostname }} $(date '+%Y.%m.%d')" -N ""
- name: Install Docker
shell: curl -sSL https://get.docker.com | sh
- name: Install matchbox-keyboard
package:
name: matchbox-keyboard
state: latest
- name: Install python3-docker
package:
name: python3-docker
state: latest
- name: adding user to group docker
user:
name: "{{ user }}"
groups: docker
append: yes
- name: adding user to group lp (line printers)
user:
name: "{{ user }}"
groups: lp
append: yes
- name: install nats-tunnel systemd unit file
template:
src: "files/nats-tunnel.service"
dest: "/etc/systemd/system/nats-tunnel.service"
- name: enable service nats-tunnel and ensure it is not masked
systemd:
name: nats-tunnel
enabled: yes
masked: no
- name: Make sure nats-tunnel service is running
systemd:
state: started
name: nats-tunnel
- name: install leardal systemd unit file
template:
src: "files/leardal.service"
dest: "/etc/systemd/system/leardal.service"
- name: enable service leardal and ensure it is not masked
systemd:
name: leardal
enabled: yes
masked: no
- name: Make sure leardal service is running
systemd:
state: started
name: leardal
-1
View File
@@ -1 +0,0 @@
docker build --file /home/{{ user }}/dockerfile/app/frank.Dockerfile --tag frank:latest /home/{{ user }}/dockerfile/app
-4
View File
@@ -1,4 +0,0 @@
Host {{ server }} {{ server }}.tanshu.com
HostName {{ server }}.tanshu.com
IdentityFile ~/.ssh/id_ed25519
User tanshu
-5
View File
@@ -1,5 +0,0 @@
NATS_URL=nats://localhost:4222
DURABLE={{ queue_name }}
SUBJECT="barker.print"
STREAM="barker_print_stream"
ADDRESS={{ printer_port }}
-15
View File
@@ -1,15 +0,0 @@
[Unit]
Description=Frank container service
After=docker.service {{ server }}-redis-tunnel.service
Wants=network-online.target docker.socket {{ server }}-redis-tunnel.service
Requires=docker.socket {{ server }}-redis-tunnel.service
PartOf={{ server }}-redis-tunnel.service
[Service]
Restart=always
RestartSec=3
ExecStart=/usr/bin/docker start -a frank
ExecStop=/usr/bin/docker stop -t 10 frank
[Install]
WantedBy=multi-user.target
-1
View File
@@ -1 +0,0 @@
docker run --detach --name frank --env-file=/home/{{ user }}/frank.env --network=host --restart=no --device /dev/usb/lp0:/printer frank:latest
-16
View File
@@ -1,16 +0,0 @@
[Unit]
Description=Reverse SSH connection
After=network.target
[Service]
Type=simple
User={{ user }}
ExecStart=/usr/bin/ssh -NTg -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -o ServerAliveCountMax=3 -o StrictHostKeyChecking=no -i /home/{{ user }}/.ssh/id_ed25519 -R {{ ssh_port }}:localhost:22 tanshu@{{ server }}.tanshu.com
# Restart every >2 seconds to avoid StartLimitInterval failure
Restart=always
RestartSec=5s
[Install]
WantedBy=default.target
-15
View File
@@ -1,15 +0,0 @@
[Unit]
Description=Keep ssh tunnel to specified remote host open
After=network.target
[Service]
User={{ user }}
ExecStart=/usr/bin/ssh -NT -o ServerAliveInterval=30 -o ExitOnForwardFailure=yes -o ServerAliveCountMax=2 -o StrictHostKeyChecking=no -i /home/{{ user }}/.ssh/id_ed25519 -L 4222:localhost:4222 tanshu@{{ server }}.tanshu.com
# Restart every >2 seconds to avoid StartLimitInterval failure
RestartSec=5
Restart=always
[Install]
WantedBy=multi-user.target
-82
View File
@@ -1,82 +0,0 @@
#################################################
# DO Community Playbooks: Docker
#################################################
---
- hosts: all
become: true
vars_files:
- vars/frank.yml
tasks:
- name: Copy dockerfile
synchronize: src=app dest="/home/{{ user }}/dockerfile"
- name: Build frank image
docker_image:
name: frank:latest
build:
path: "/home/{{ user }}/dockerfile/app"
dockerfile: "/home/{{ user }}/dockerfile/app/frank.Dockerfile"
pull: yes
state: present
source: build
- name: Check if frank .env file exists
stat: path="/home/{{ user }}/frank.env"
register: status
- name: No need to upload the frank .env file
debug:
msg: "No need to upload the frank .env file as it already exists."
- name: Upload the frank .env file
when: status.stat.exists == false
template:
src: files/frank.env
dest: "/home/{{ user }}/frank.env"
group: "{{ user }}"
owner: "{{ user }}"
mode: 0644
- name: Create frank worker container
docker_container:
name: "frank"
image: frank:latest
state: started
restart_policy: "no"
env_file: "/home/{{ user }}/frank.env"
network_mode: "host"
devices:
- "{{ printer_port }}:/printer"
- name: Copy docker build script
template:
src: files/build-frank.sh
dest: "/home/{{ user }}/dockerfile/build-frank.sh"
group: "{{ user }}"
owner: "{{ user }}"
mode: 0644
- name: Copy docker run script
template:
src: files/frank.sh
dest: "/home/{{ user }}/dockerfile/frank.sh"
group: "{{ user }}"
owner: "{{ user }}"
mode: 0644
- name: install frank systemd unit file
template:
src: "files/frank.service"
dest: "/etc/systemd/system/frank.service"
- name: enable service frank and ensure it is not masked
systemd:
name: frank
enabled: yes
masked: no
- name: Make sure frank service is running
systemd:
state: started
name: frank
-4
View File
@@ -1,4 +0,0 @@
---
printer_port: "/dev/usb/lp0"
user: vari
queue_name: moz-elante
-8
View File
@@ -1,8 +0,0 @@
---
hostname: "moz2"
ssh_port: "22542"
user: "vari"
terminus_key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK8WQHla0uCcNwmN0DUE49lbjNWa6+7A6OxrX3WEPQH0 tanshu@terminus 2023.01.08"
clair_key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBeTz3weHvjJRTlBg+ovP3KfQNDvyn9mVsekAGwX1HMn tanshu@clair 2025-06-30"
anjin_key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMlvalE0JqKyjpEsGTgtf/N1d9QK2MgNFJib+e8O2h9M tanshu@anjin 2024.09.28"
server: "clair"