/usr/share/tripleo-heat-templates/firstboot/userdata_example.yaml is in python-tripleo-heat-templates 5.2.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | heat_template_version: 2014-10-16
# NOTE: You don't need to pass the parameter explicitly from the
# parent template, it can be specified via the parameter_defaults
# in the resource_registry instead, if you want to override the default
# and/or share values with other templates in the tree.
parameters:
extra_username:
type: string
default: extrauser
description: >
This is an example showing how you can do firstboot configuration
of the nodes via cloud-init. To enable this, replace the default
mapping of OS::TripleO::NodeUserData in ../overcloud_resource_registry*
resources:
userdata:
type: OS::Heat::MultipartMime
properties:
parts:
- config: {get_resource: user_config}
- config: {get_resource: ssh_config}
# Get cloud-init to create an extra user, in addition to the default for the
# distro. Note there are various options, including configuring ssh keys,
# but atm I can only see how to specify the keys explicitly, not via metadata
user_config:
type: OS::Heat::CloudConfig
properties:
cloud_config:
users:
- default
- name: {get_param: extra_username}
# Setup ssh key for the extra user to match the key installed for the default
# user, e.g that provided via the nova keypair on instance boot
ssh_config:
type: OS::Heat::SoftwareConfig
properties:
config:
str_replace:
template: |
#!/bin/bash
curl http://169.254.169.254/openstack/2012-08-10/meta_data.json -o /root/meta_data.json
mkdir -p /home/$user/.ssh
chmod 700 /home/$user/.ssh
cat /root/meta_data.json | jq -r ".keys[0].data" > /home/$user/.ssh/authorized_keys
chmod 600 /home/$user/.ssh/authorized_keys
chown -R $user:$user /home/$user/.ssh
params:
$user: {get_param: extra_username}
outputs:
# This means get_resource from the parent template will get the userdata, see:
# http://docs.openstack.org/developer/heat/template_guide/composition.html#making-your-template-resource-more-transparent
# Note this is new-for-kilo, an alternative is returning a value then using
# get_attr in the parent template instead.
OS::stack_id:
value: {get_resource: userdata}
|