Example template that performs copying of SSH keys
This template shows how to leverage the new resources for software configuration/deployment, particularly the use of scripts for configuration, to enable copying of SSH keys in a similar fashion as 'ssh-copy-id'. The example makes use of configuration inputs, and outputs, and get_attr. The use of get_attr introduces an implicit dependencyOne example to show ssh-copy-id between servers Change-Id: Ic15c325d1c6f35108206d0e6e8dc7339c1383a30
This commit is contained in:
parent
cfdb7c620b
commit
2dc7ba3c1e
113
hot/software-config/example-ssh-copy-id.yaml
Normal file
113
hot/software-config/example-ssh-copy-id.yaml
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
heat_template_version: 2013-05-23
|
||||||
|
#
|
||||||
|
# The demo is about similar function with ssh-copy-id.
|
||||||
|
#
|
||||||
|
# Say we have two virtual machine, server A and server B. Server B
|
||||||
|
# wants to add its id_rsa.pub contents into authorized_keys of server
|
||||||
|
# A. So that server B can talk with server A via ssh without password.
|
||||||
|
#
|
||||||
|
parameters:
|
||||||
|
key_name:
|
||||||
|
type: string
|
||||||
|
default: heat_key
|
||||||
|
flavor:
|
||||||
|
type: string
|
||||||
|
default: m1.small
|
||||||
|
image:
|
||||||
|
type: string
|
||||||
|
default: fedora-amd64
|
||||||
|
resources:
|
||||||
|
key_add:
|
||||||
|
type: OS::Heat::SoftwareConfig
|
||||||
|
properties:
|
||||||
|
inputs:
|
||||||
|
- name: id_rsa_pub
|
||||||
|
- name: user_name
|
||||||
|
outputs:
|
||||||
|
- name: hostname
|
||||||
|
group: script
|
||||||
|
config: |
|
||||||
|
#!/bin/bash
|
||||||
|
echo "${id_rsa_pub}" | su - $user_name -c 'tee -a .ssh/authorized_keys'
|
||||||
|
hostname > ${heat_outputs_path}.hostname
|
||||||
|
key_gen:
|
||||||
|
type: OS::Heat::SoftwareConfig
|
||||||
|
properties:
|
||||||
|
inputs:
|
||||||
|
- name: user_name
|
||||||
|
outputs:
|
||||||
|
- name: id_rsa_pub
|
||||||
|
group: script
|
||||||
|
config: |
|
||||||
|
#!/bin/bash
|
||||||
|
su - ${user_name} << EOF > ${heat_outputs_path}.id_rsa_pub
|
||||||
|
test -f .ssh/id_rsa.pub || ssh-keygen -q -t rsa -N "" -f .ssh/id_rsa
|
||||||
|
cat .ssh/id_rsa.pub
|
||||||
|
EOF
|
||||||
|
key_test:
|
||||||
|
type: OS::Heat::SoftwareConfig
|
||||||
|
properties:
|
||||||
|
inputs:
|
||||||
|
- name: user_name
|
||||||
|
- name: target
|
||||||
|
group: script
|
||||||
|
config: |
|
||||||
|
#!/bin/bash
|
||||||
|
su - ${user_name} << EOF
|
||||||
|
ssh -o StrictHostKeyChecking=no ${target} hostname
|
||||||
|
EOF
|
||||||
|
do_key_gen:
|
||||||
|
type: OS::Heat::SoftwareDeployment
|
||||||
|
properties:
|
||||||
|
input_values:
|
||||||
|
user_name: ec2-user
|
||||||
|
config:
|
||||||
|
get_resource: key_gen
|
||||||
|
server:
|
||||||
|
get_resource: server_b
|
||||||
|
do_key_add:
|
||||||
|
type: OS::Heat::SoftwareDeployment
|
||||||
|
properties:
|
||||||
|
input_values:
|
||||||
|
user_name: ec2-user
|
||||||
|
id_rsa_pub:
|
||||||
|
get_attr: [do_key_gen, id_rsa_pub]
|
||||||
|
config:
|
||||||
|
get_resource: key_add
|
||||||
|
server:
|
||||||
|
get_resource: server_a
|
||||||
|
do_key_test:
|
||||||
|
type: OS::Heat::SoftwareDeployment
|
||||||
|
properties:
|
||||||
|
input_values:
|
||||||
|
user_name: ec2-user
|
||||||
|
target:
|
||||||
|
get_attr: [do_key_add, hostname]
|
||||||
|
config:
|
||||||
|
get_resource: key_test
|
||||||
|
server:
|
||||||
|
get_resource: server_b
|
||||||
|
server_a:
|
||||||
|
type: OS::Nova::Server
|
||||||
|
properties:
|
||||||
|
image:
|
||||||
|
get_param: image
|
||||||
|
flavor:
|
||||||
|
get_param: flavor
|
||||||
|
key_name:
|
||||||
|
get_param: key_name
|
||||||
|
user_data_format: SOFTWARE_CONFIG
|
||||||
|
server_b:
|
||||||
|
type: OS::Nova::Server
|
||||||
|
properties:
|
||||||
|
image:
|
||||||
|
get_param: image
|
||||||
|
flavor:
|
||||||
|
get_param: flavor
|
||||||
|
key_name:
|
||||||
|
get_param: key_name
|
||||||
|
user_data_format: SOFTWARE_CONFIG
|
||||||
|
outputs:
|
||||||
|
do_key_test_stdout:
|
||||||
|
value:
|
||||||
|
get_attr: [do_key_test, deploy_stdout]
|
Loading…
x
Reference in New Issue
Block a user