diff --git a/btop.yml b/btop.yml new file mode 100644 index 0000000..e725421 --- /dev/null +++ b/btop.yml @@ -0,0 +1,4 @@ +- hosts: btop + roles: + - role: btop + tags: btop diff --git a/hosts b/hosts index a3ff1b3..751a0c0 100644 --- a/hosts +++ b/hosts @@ -7,6 +7,9 @@ file0.pyrocufflink.blue [bitwarden_rs] bw0.pyrocufflink.blue +[btop] +chromie.pyrocufflink.blue + [burp-client] bw0.pyrocufflink.blue cloud0.pyrocufflink.blue diff --git a/roles/btop/files/btop.service b/roles/btop/files/btop.service new file mode 100644 index 0000000..0ee9d28 --- /dev/null +++ b/roles/btop/files/btop.service @@ -0,0 +1,33 @@ +# vim: set ft=systemd : +[Unit] +Description=Run btop on tty1 +After=systemd-user-sessions.service +Conflicts=getty@tty1.service + +[Service] +RuntimeDirectory=%N +LogsDirectory=%N +Environment=XDG_CONFIG_HOME=%t +Environment=LANG=en_US.UTF-8 +# btop *requires* write access to its configuration file, or it won't +# even read it. Thus, we copy the file from /etc to /run and tell +# btop to use the ephemeral, writable copy. +ExecStartPre=-/bin/cp %E/%N/btop.conf %t/%N/btop.conf +ExecStartPre=-/bin/ln -s %L/%N/btop.log %t/%N/btop.log +ExecStart=/usr/bin/btop +StandardInput=tty +StandardOutput=tty +StandardError=journal+console +TTYPath=/dev/tty1 +Restart=always +CapabilityBoundingSet= +ProtectSystem=strict +DeviceAllow=/dev/tty1 +DevicePolicy=closed +ProtectKernelTunables=yes +ProtectKernelModules=true +ProtectControlGroups=yes +NoNewPrivileges=yes + +[Install] +WantedBy=multi-user.target diff --git a/roles/btop/handlers/main.yml b/roles/btop/handlers/main.yml new file mode 100644 index 0000000..2bc8e2e --- /dev/null +++ b/roles/btop/handlers/main.yml @@ -0,0 +1,8 @@ +- name: reload systemd + systemd: + daemon_reload: true + +- name: restart btop + service: + name: btop + state: restarted diff --git a/roles/btop/tasks/main.yml b/roles/btop/tasks/main.yml new file mode 100644 index 0000000..af58808 --- /dev/null +++ b/roles/btop/tasks/main.yml @@ -0,0 +1,53 @@ +- name: ensure btop is installed + package: + name: btop + state: present + tags: + - install + +- name: ensure btop systemd unit is installed + copy: + src: btop.service + dest: /etc/systemd/system/btop.service + owner: root + group: root + mode: u=rw,go=r + notify: + - reload systemd + - restart btop + tags: + - systemd + +- name: ensure btop configuration directory exists + file: + path: /etc/btop + owner: root + group: root + mode: u=rwx,go=rx + state: directory + tags: + - config +- name: ensure btop is configured + template: + src: btop.conf.j2 + dest: /etc/btop/btop.conf + owner: root + group: root + mode: u=rw,go=r + notify: + - restart btop + tags: + - config + +- name: ensure btop service is enabled + service: + name: btop + enabled: true + tags: + - service + +- meta: flush_handlers +- name: ensure btop service is running + service: + name: btop + state: started diff --git a/roles/btop/templates/btop.conf.j2 b/roles/btop/templates/btop.conf.j2 new file mode 100644 index 0000000..2c3aaa4 --- /dev/null +++ b/roles/btop/templates/btop.conf.j2 @@ -0,0 +1,3 @@ +proc_sorting = "cpu direct" + +log_level = "INFO"