|
|
- # We can not use include_role here since it not share thje connection with the current role
- - include: roles/service/tasks/main.yaml
- vars:
- service_name: ssh
- service_packages:
- - openssh-server
- - openssh-sftp-server
-
- - name: Check if host certificate exists
- stat:
- path: "/etc/ssh/ssh_host_ed25519_key-cert.pub"
- register: vm_ssh_certificate_exists
-
- - debug:
- var: vm_ssh_certificate_exists
- verbosity: 2
-
- - block:
- - name: Read host public key
- slurp:
- src: "/etc/ssh/ssh_host_ed25519_key.pub"
- register: vm_public_key
-
- - debug:
- var: vm_public_key['content']
- verbosity: 2
-
- - name: generate host request
- set_fact:
- ca_request:
- type: 'sign_request'
- request:
- keyType: 'ssh_host'
- hostName: '{{ ansible_docker_extra_args | default(inventory_hostname) }}.lilik.it'
- keyData: "{{ vm_public_key['content'] | b64decode | replace('\n', '')}}"
-
- - debug:
- var: ca_request | to_json
- verbosity: 2
-
- - name: start sign request
- include: ca-dialog.yaml
- vars:
- ansible_connection: ssh
-
- - debug:
- var: request_result
- verbosity: 2
-
- - set_fact:
- request_output: "{{ request_result.stdout | from_json }}"
-
- - debug:
- var: request_output
- verbosity: 2
-
- - name: generate get request
- set_fact:
- ca_request:
- type: 'get_certificate'
- requestID: '{{ request_output.requestID }}'
-
- - debug:
- var: ca_request
- verbosity: 2
-
- - debug:
- msg: "Please manualy confirm sign request with id {{ request_output.requestID }}"
-
- - name: wait for cert
- include: ca-dialog.yaml
- vars:
- ansible_connection: ssh
-
- - debug:
- var: request_result
- verbosity: 2
-
- - set_fact:
- cert_key: "{{ request_result.stdout | string | from_json }}"
-
- - name: Write certificate to container
- copy:
- content: "{{ cert_key.result }}"
- dest: "/etc/ssh/ssh_host_ed25519_key-cert.pub"
- register: set_pub_key
- notify: restart ssh
- when: "not vm_ssh_certificate_exists.stat.exists"
-
-
- - name: lookup user ca key
- set_fact:
- user_ca_key: "{{ lookup('file', 'test_ssh_ca.pub') }}"
-
- - name: Update container user CA key
- copy:
- content: "ssh-rsa {{ user_ca_key }}"
- dest: "/etc/ssh/user_ca.pub"
- notify: restart ssh
-
- - name: add certificate to sshd config
- lineinfile:
- line: 'HostCertificate /etc/ssh/ssh_host_ed25519_key-cert.pub'
- dest: '/etc/ssh/sshd_config'
- regexp: '^HostCertificate *'
- notify: restart ssh
-
- - name: trust user ca key
- lineinfile:
- line: 'TrustedUserCAKeys /etc/ssh/user_ca.pub'
- dest: '/etc/ssh/sshd_config'
- regexp: '^TrustedUserCAKeys *'
- notify: restart ssh
-
- - name: permit root login only with certificate
- lineinfile:
- line: 'PermitRootLogin without-password'
- dest: '/etc/ssh/sshd_config'
- regexp: '^PermitRootLogin *'
- notify: restart ssh
-
- - meta: flush_handlers
-
- - name: "waiting for ssh on {{ ansible_docker_extra_args | default(inventory_hostname) }} to start"
- wait_for:
- host: "{{ hostvars | ip_from_inventory(inventory_hostname) }}"
- port: 22
- timeout: 30
- delegate_to: "{{ inventory_hostname }}"
- delegate_facts: True
|