|
|
- ---
- # This is an example of how to use Ansible with the ca-server shell.
- # In this playbook we assume that you are requesting a ssh-host certificate
- # to be used by the host `machine.example.com` and that the server hosting
- # the ca-server shell is in your inventory under the name `ca_server`.
- #
- # We are using ed25519 as our preferred algorithm but any other one may be
- # just right, be sure to change both the key and certificate destination.
- #
- - 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: 'machine.example.com'
- keyData: "{{ vm_public_key['content'] | b64decode | replace('\n', '')}}"
-
- - debug:
- var: ca_request | to_json
- verbosity: 2
-
- - raw: "{{ ca_request | to_json }}"
- delegate_to: ca_server
- delegate_facts: True
- register: request_result
- failed_when: "( request_result.stdout | string | from_json ).failed"
-
- - set_fact:
- request_output: "{{ request_result.stdout | string | from_json }}"
-
- - debug:
- var: request_output
- verbosity: 2
-
- - debug:
- msg: "Please manualy confirm sign request with id {{ request_output.requestID }}"
-
- - name: generate get request
- set_fact:
- ca_request:
- type: 'get_certificate'
- requestID: '{{ request_output.requestID }}'
-
- - raw: "{{ ca_request | to_json }}"
- delegate_to: ca_server
- delegate_facts: True
- register: request_result
- failed_when: "( request_result.stdout | string | from_json ).failed"
-
- - set_fact:
- cert_key: "{{ request_result.stdout | string | from_json }}"
-
- - name: write certificate to host
- copy:
- content: "{{ cert_key.result }}"
- dest: "/etc/ssh/ssh_host_ed25519_key-cert.pub"
- register: set_pub_key
|