The one in question is the Kickstart user_data default provided in Foreman
1.15.1. It doesn't look like yaml at all to me.
<%#
kind: user_data
name: Kickstart default user data
oses:
- CentOS
- Fedora
-%>
<%
rhel_compatible = @host.operatingsystem.family == 'Redhat' &&
@host.operatingsystem.name != 'Fedora'
safemode renderer does not support unary negation
pm_set = @host.puppetmaster.empty? ? false : true
proxy_uri = @host.params['http-proxy'] ?
"http://#{@host.params['http-proxy']}:#{@host.params['http-proxy-port']}" :
nil
puppet_enabled = pm_set || @host.param_true?('force-puppet')
salt_enabled = @host.params['salt_master'] ? true : false
chef_enabled = @host.respond_to?(:chef_proxy) && @host.chef_proxy
-%>
#!/bin/bash
<%# Cloud instances frequently have incorrect hosts data %>
<%= snippet 'fix_hosts' %>
<% if @host.provision_method == 'image' && !root_pass.empty? -%>
Install the root password
echo 'root:<%= root_pass -%>' | /usr/sbin/chpasswd -e
<% end -%>
<% if proxy_uri -%>
Yum proxy
echo 'proxy = <%= proxy_uri %>' >> /etc/yum.conf
<% end -%>
#update local time
echo "updating system time"
yum -y install ntpdate
/usr/sbin/ntpdate -sub <%= @host.params['ntp-server'] ||
'0.fedora.pool.ntp.org' %>
/usr/sbin/hwclock --systohc
<% if rhel_compatible && !@host.param_false?('enable-epel') -%>
<%= snippet 'epel' -%>
<% end -%>
<% if @host.info['parameters']['realm'] && @host.realm &&
@host.realm.realm_type == 'FreeIPA' -%>
<%= snippet 'freeipa_register' %>
<% end -%>
<% unless @host.param_false?('package_upgrade') -%>
update all the base packages from the updates repository
if [ -f /usr/bin/dnf ]; then
dnf -y update
else
yum -t -y update
fi
<% end -%>
<%= snippet('remote_execution_ssh_keys') %>
<% if chef_enabled %>
<%= snippet 'chef_client' %>
<% end -%>
<% if puppet_enabled %>
<% if @host.param_true?('enable-puppetlabs-pc1-repo') ||
@host.param_true?('enable-puppetlabs-repo') -%>
<%= snippet 'puppetlabs_repo' %>
<% end -%>
<%= snippet 'puppet_setup' %>
<% end -%>
<% if salt_enabled %>
<%= snippet 'saltstack_setup' %>
<% end -%>
UserData still needs to mark the build as finished
/usr/bin/curl -o /dev/null -k '<%= foreman_url('built') %>'
The one that DOES have yaml look to it is the one that says "this is not a
user_data template". That is the one provided with Foreman 1.15.1 as
"UserData default"
<%#
kind: user_data
name: UserData default
oses:
- CentOS
- Fedora
- Debian
- Ubuntu
-%>
<%#
This template accepts the following parameters:
- ssh_pwauth: boolean (default=true unless ssh_authorized_keys)
- ssh_authorized_keys: string w newline seperated keys (default="")
- package_upgrade: boolean (default=false)
- reboot: boolean (default=false)
-%>
<%
ssh_pwauth = @host.params['ssh_pwauth'] ? @host.param_true?('ssh_pwauth')
: !@host.params['ssh_authorized_keys']
rhel_compatible = @host.operatingsystem.family == 'Redhat' &&
@host.operatingsystem.name != 'Fedora'
safemode renderer does not support unary negation
pm_set = @host.puppetmaster.empty? ? false : true
puppet_enabled = pm_set || @host.param_true?('force-puppet')
salt_enabled = @host.params['salt_master'] ? true : false
chef_enabled = @host.respond_to?(:chef_proxy) && @host.chef_proxy
-%>
#cloud-config
hostname: <%= @host.shortname %>
fqdn: <%= @host %>
manage_etc_hosts: true
<% if ssh_pwauth -%>
<%# Don't enable this in production. It is very insecure! Use
ssh_authorized_keys instead…
http://cloudinit.readthedocs.io/en/latest/topics/examples.html#including-users-and-groups
-%>
ssh_pwauth: true
groups:
- admin
users:
- default
- name: admin
primary-group: admin
groups: users
shell: /bin/bash
sudo: ['ALL=(ALL) ALL']
lock-passwd: false
passwd: <%= @host.root_pass %>
<% end -%>
<% if @host.params['ssh_authorized_keys'] -%>
ssh_authorized_keys:
<% @host.params['ssh_authorized_keys'].split("\n").each do |ssh_key| -%>
- <%= ssh_key %>
<% end -%>
<% end -%>
<% if @host.param_true?('package_upgrade') -%>
package_upgrade: true
<% end -%>
runcmd:
<% if rhel_compatible -%>
- |
<%= indent(2) { snippet('epel') } %>
<% end -%>
- |
<%= indent(2) { snippet('remote_execution_ssh_keys') } %>
<% if chef_enabled -%>
- |
<%= indent(2) { snippet('chef_client') } %>
<% end -%>
<% if puppet_enabled -%>
- |
<%= indent(2) { snippet('puppetlabs_repo') } %>
- |
<%= indent(2) { snippet('puppet_setup') } %>
<% end -%>
<% if salt_enabled -%>
- |
<%= indent(2) { snippet('saltstack_setup') } %>
<% end -%>
<%# Contact Foreman to confirm instance is built -%>
phone_home:
url: <%= foreman_url('built') %>
post: []
tries: 10
<% if @host.param_true?('reboot') -%>
power_state:
mode: reboot
timeout: 30
condition: true
<% end -%>
Does that help? I've only just started working with image builds so still
trying to pickup what goes where properly so it could be entirely me not
flipping the right switches.
···
On Monday, September 11, 2017 at 3:06:01 PM UTC-5, Ivan Necas wrote:
>
> Hi, it seems like you're user-data template is not rendering a proper
> YAML that `YAML.load()` would parse
> as a Hash. Could you share the rendered user-data template with us or
> even better, run `irb` and try:
>
>