--- - name: "Install openssh" become: true ansible.builtin.command: cmd: > pct exec {{ pve_lxc_id }} -- sh -c 'which sshd > /dev/null 2>&1 && exit 0; . /etc/os-release; case $ID in alpine) apk add --no-cache openssh ;; debian|ubuntu) apt-get install -y openssh-server ;; *) echo "Unsupported distro: $ID" && exit 1 ;; esac; echo "installed"' register: pve_lxc_ssh_install changed_when: "'installed' in pve_lxc_ssh_install.stdout" tags: - "molecule-notest" - name: "Generate ssh host keys" become: true ansible.builtin.command: cmd: > pct exec {{ pve_lxc_id }} -- sh -c '[ -f /etc/ssh/ssh_host_ed25519_key ] && exit 0; ssh-keygen -q -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -C "" -N ""; echo "generated"' register: pve_lxc_ssh_keygen changed_when: "'generated' in pve_lxc_ssh_keygen.stdout" tags: - "molecule-notest" - name: "Render sshd_config" ansible.builtin.template: src: "sshd_config.j2" dest: "/tmp/sshd_config_{{ pve_lxc_id }}" mode: "0600" tags: - "molecule-notest" - name: "Push sshd_config into container" become: true ansible.builtin.command: cmd: pct push {{ pve_lxc_id }} /tmp/sshd_config_{{ pve_lxc_id }} /etc/ssh/sshd_config --perms 0640 changed_when: true tags: - "molecule-notest" - name: "Remove temp sshd_config" ansible.builtin.file: path: "/tmp/sshd_config_{{ pve_lxc_id }}" state: absent tags: - "molecule-notest" - name: "Enable and start sshd" become: true ansible.builtin.command: cmd: > pct exec {{ pve_lxc_id }} -- sh -c '. /etc/os-release; case $ID in alpine) rc-update add sshd default; rc-service sshd restart ;; debian|ubuntu) systemctl enable --now ssh; systemctl restart ssh ;; *) echo "Unsupported distro: $ID" && exit 1 ;; esac' changed_when: false tags: - "molecule-notest"