-
That is the question. 😅 I am a fan of systemd. I know it gets a bunch of hate but with my Arch setups it has done a lot more good than bad. I wanted to know, is there a significant resource or performance benefit to justify the effort of changing Komodo and/or periphery from docker containers to native-run binaries? My original perspective was "well, they're FOR Docker, might as well run them there", but I would appreciate input from the 🐴 👄. |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
With Container, you have to deal with the file system seperation, which leads to several complications:
With systemd, Periphery runs on the host, with no seperation with the host filesystem, making all these confusing file system mapping issues go away. The fact is, Periphery is designed to communicate directly with the system, so the container separation gets in the way. I can see why this requires more trust in the application to operate outside container, but also note that you can leverage the So overall, I prefer It sounds like you like systemctl, in your case I'd say yeah, use systemctl, and do the deploy with Ansible. Like I mentioned before, its fully automatable as well, and you can do it as a Komodo Stack deployed on git push. - name: Deploy Periphery
hosts: periphery
tasks:
- name: Ensure config dir
file:
path: "{{ HOME }}/.config/komodo"
state: directory
mode: '0755'
- name: Download config
get_url:
url: https://your.git.provider/komodo/periphery/raw/branch/main/periphery.config.toml
dest: "{{ HOME }}/.config/komodo/periphery.config.toml"
mode: '0644'
- name: Ensure service dir
file:
path: "{{ HOME }}/.config/systemd/user"
state: directory
mode: '0755'
- name: Download service
get_url:
url: https://your.git.provider/komodo/periphery/raw/branch/main/periphery.service
dest: "{{ HOME }}/.config/systemd/user/periphery.service"
mode: '0644'
- name: Ensure bin dir
file:
path: "{{ HOME }}/.local/bin"
state: directory
mode: '0755'
- name: Download bin
get_url:
url: https://github.com/mbecker20/komodo/releases/download/v1.16.12/periphery-x86_64 # or -aarch64
dest: "{{ HOME }}/.local/bin/periphery"
mode: '0755'
- name: Restart periphery
shell: |
systemctl --user daemon-reload
systemctl --user restart periphery
args:
executable: /bin/bash services:
ansible:
image: alpine/ansible
user: 1000:1000
network_mode: host
working_dir: /project
command: ansible-playbook -i hosts.ini playbook.yaml --extra-vars "HOME=$HOME"
volumes:
- /etc/passwd:/etc/passwd
- $HOME/.ssh:$HOME/.ssh
- ./.ansible:$HOME/.ansible
- ./hosts.ini:/project/hosts.ini
- ./playbook.yaml:/project/playbook.yaml 🦎 |
Beta Was this translation helpful? Give feedback.
With Container, you have to deal with the file system seperation, which leads to several complications:
Say you make a Repo Resource in Komodo, and specify
/home/🐴/👄
as the clone path. You click button to clone it and check your host for the repo. But oh wait, its not there! Is Komodo broken? No, its because you cloned it inside the container, you didn't mount/home/🐴:/home/🐴
. This issue has come up several times in various forms, commonly forFiles on Server
mode Stacks.You like to use relative file paths in your compose file mounts. When Komodo deploys a Stack, it sends command to Periphery, and Periphery does some setup and runs a shell command
docker compose ....
. You can see the…