commit 9417f24a25d98f1b12d3b11ab270075245a25fab Author: Yorick Barbanneau Date: Sun Nov 20 00:45:12 2022 +0100 First commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..beb964d --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +SSH-Agentd Ansible role +----------------------- + +This role create service and environment for managing ssh-agent service with +systemd. + +Note that for exporting SSH_AUTH_SOCK in your session, you need to parse +fnvironment file in `XDG_CONFIG_DIR`. Here is an example for zsh, i put this +little snippet in my `.zprofile`: + +```zsh +for file in ~/.config/environment.d/*.conf +do + while read -r line + do + varname=${line%=*} + value=${${(e)line#*=}//\"} + export $varname="${value}" + done < $file +done +``` diff --git a/files/ssh-agentd.conf b/files/ssh-agentd.conf new file mode 100644 index 0000000..59092e8 --- /dev/null +++ b/files/ssh-agentd.conf @@ -0,0 +1 @@ +SSH_AUTH_SOCK="${XDG_RUNTIME_DIR}/ssh-agent.socket" diff --git a/files/ssh-agentd.service b/files/ssh-agentd.service new file mode 100644 index 0000000..17f346c --- /dev/null +++ b/files/ssh-agentd.service @@ -0,0 +1,10 @@ +[Unit] +Description=SSH key agent + +[Service] +Type=simple +EnvironmentFile=%h/.config/environment.d/ssh-agentd.conf +ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK + +[Install] +WantedBy=default.target diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..60dfaa3 --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,29 @@ +--- +- name: Create config dirs + ansible.builtin.file: + path: '{{ ansible_user_dir }}/.config/systemd/user' + state: directory + mode: 0750 + +- name: Copy systemd service file + ansible.builtin.copy: + src: 'ssh-agentd.service' + dest: '{{ ansible_user_dir }}/.config/systemd/user/' + mode: 0640 + +- name: Copy ssh-agent env file + ansible.builtin.copy: + src: 'ssh-agentd.conf' + dest: '{{ ansible_user_dir }}/.config/environment.d/' + mode: 0640 + +- name: Activate service + ansible.builtin.systemd: + name: 'ssh-agentd' + scope: user + daemon-reload: true + state: stopped + enabled: true + environment: + XDG_RUNTIME_DIR: "/run/user/{{ ansible_user_uid }}" +