Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
## Goal
<!-- What does this PR accomplish? 1 sentence. -->

## Changes
-

## Testing
<!-- How did you verify it? -->

## Checklist
- [ ] Title is a clear sentence (≤ 70 chars)
- [ ] Commits are signed (`git log --show-signature`)
- [ ] `submissions/labN.md` updated
Binary file added ansible/files/quicknotes
Binary file not shown.
2 changes: 2 additions & 0 deletions ansible/inventory.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[quicknotes_vm]
lab5vm ansible_host=172.31.208.1 ansible_port=2224 ansible_user=vagrant ansible_ssh_private_key_file=~/.ssh/quicknotes_lab5_private_key ansible_python_interpreter=/usr/bin/python3 ansible_ssh_common_args='-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes'
71 changes: 71 additions & 0 deletions ansible/playbook.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
---
- name: Deploy QuickNotes with Ansible
hosts: quicknotes_vm
become: true
gather_facts: false

vars:
quicknotes_user: quicknotes
data_dir: /var/lib/quicknotes
binary_path: /usr/local/bin/quicknotes
listen_addr: ":8080"
data_path: /var/lib/quicknotes/notes.json
seed_path: /var/lib/quicknotes/seed.json
restart_backoff: 5s

tasks:
- name: Create QuickNotes system group
ansible.builtin.group:
name: "{{ quicknotes_user }}"
system: true

- name: Create QuickNotes system user
ansible.builtin.user:
name: "{{ quicknotes_user }}"
group: "{{ quicknotes_user }}"
system: true
create_home: false
home: "{{ data_dir }}"
shell: /usr/sbin/nologin

- name: Ensure QuickNotes data directory exists
ansible.builtin.file:
path: "{{ data_dir }}"
state: directory
owner: "{{ quicknotes_user }}"
group: "{{ quicknotes_user }}"
mode: "0750"

- name: Copy QuickNotes binary
ansible.builtin.copy:
src: files/quicknotes
dest: "{{ binary_path }}"
owner: root
group: root
mode: "0755"
notify: restart quicknotes

- name: Install QuickNotes systemd unit
ansible.builtin.template:
src: templates/quicknotes.service.j2
dest: /etc/systemd/system/quicknotes.service
owner: root
group: root
mode: "0644"
notify: restart quicknotes

- name: Enable and start QuickNotes service
ansible.builtin.systemd:
name: quicknotes
enabled: true
state: started
daemon_reload: true
when: not ansible_check_mode

handlers:
- name: restart quicknotes
ansible.builtin.systemd:
name: quicknotes
state: restarted
daemon_reload: true
when: not ansible_check_mode
19 changes: 19 additions & 0 deletions ansible/templates/quicknotes.service.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
[Unit]
Description=QuickNotes API
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User={{ quicknotes_user }}
Group={{ quicknotes_user }}
WorkingDirectory={{ data_dir }}
Environment=ADDR={{ listen_addr }}
Environment=DATA_PATH={{ data_path }}
Environment=SEED_PATH={{ seed_path }}
ExecStart={{ binary_path }}
Restart=on-failure
RestartSec={{ restart_backoff }}

[Install]
WantedBy=multi-user.target
Loading