heat_template_version: pike

description: >
  This is a template which will fetch the ssh host public key.

parameters:
  server:
    description: ID of the node to apply this config to
    type: string

resources:
  SshHostPubKeyConfig:
    type: OS::Heat::SoftwareConfig
    properties:
      group: script
      outputs:
      - name: rsa
      - name: ecdsa
      - name: ed25519
      config: |
        #!/bin/sh -x
        test -e '/etc/ssh/ssh_host_rsa_key.pub' && cat /etc/ssh/ssh_host_rsa_key.pub > $heat_outputs_path.rsa
        test -e '/etc/ssh/ssh_host_ecdsa_key.pub' && cat /etc/ssh/ssh_host_ecdsa_key.pub > $heat_outputs_path.ecdsa
        test -e '/etc/ssh/ssh_host_ed25519_key.pub' && cat /etc/ssh/ssh_host_ed25519_key.pub > $heat_outputs_path.ed25519

  SshHostPubKeyDeployment:
    type: OS::Heat::SoftwareDeployment
    properties:
      config: {get_resource: SshHostPubKeyConfig}
      server: {get_param: server}


outputs:
  ecdsa:
    description: Host ssh public key (ecdsa)
    value:  {get_attr: [SshHostPubKeyDeployment, ecdsa]}
  rsa:
    description: Host ssh public key (rsa)
    value:  {get_attr: [SshHostPubKeyDeployment, rsa]}
  ed25519:
    description: Host ssh public key (ed25519)
    value:  {get_attr: [SshHostPubKeyDeployment, ed25519]}