<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<p><font face="Hack">Soon nova will be switched off by default on
the undercloud and all overcloud deployments will effectively be
deployed-server based (either provisioned manually or via the
baremetal provision command)</font></p>
<p><font face="Hack">This means that the docs for running firstboot
scripts[1] will no longer work, and neither will our collection
of firstboot scripts[2]. In this email I'm going to propose what
we could do about this situation and if there are still
unresolved issues by the PTG it might be worth having a short
session on it.</font></p>
<p><font face="Hack">The baremetal provisioning implementation
already uses cloud-init cloud-config internally for user
creation and key injection[3] so I'm going to propose an
enhancement the the baremetal provisioning yaml format so that
custom cloud-config instructions can be included either inline
or as a file path.<br>
</font></p>
<p><font face="Hack">I think it is worth going through each
firstboot script[2] and deciding what its fate should be (other
than being deprecated in Ussuri):</font></p>
<p><font face="Hack"><a class="moz-txt-link-freetext" href="https://opendev.org/openstack/tripleo-heat-templates/src/branch/master/firstboot/conntectx3_streering.yaml">https://opendev.org/openstack/tripleo-heat-templates/src/branch/master/firstboot/conntectx3_streering.yaml</a></font></p>
<p><font face="Hack">This has no parameters, so it could be
converted to a standalone cloud-config file, but should it? Can
this be achieved with kernel args? Does it require a reboot
anyway, and so can be done with extraconfig?<br>
</font></p>
<p><font face="Hack"><br>
</font></p>
<p><font face="Hack"><a class="moz-txt-link-freetext" href="https://opendev.org/openstack/tripleo-heat-templates/src/branch/master/firstboot/os-net-config-mappings.yaml">https://opendev.org/openstack/tripleo-heat-templates/src/branch/master/firstboot/os-net-config-mappings.yaml</a></font></p>
<p><font face="Hack">I'm not sure why this is implemented as first
boot, it seems to consume the parameter </font><code
class="yaml hljs"><span class="hljs-attr">NetConfigDataLookup
and transforms it to the format os-net-config needs for the
file </span></code><code class="yaml hljs"><span
class="hljs-string">/etc/os-net-config/mapping.yaml. It looks
like this functionality should be moved to where os-net-config
is actually invoked, and the </span></code><code class="yaml
hljs"><span class="hljs-string"><code class="yaml hljs"><span
class="hljs-attr">NetConfigDataLookup parameter should be
officially supported.<br>
</span></code></span></code></p>
<p><code class="yaml hljs"><span class="hljs-string"><br>
</span></code></p>
<p><code class="yaml hljs"><span class="hljs-string"><a class="moz-txt-link-freetext" href="https://opendev.org/openstack/tripleo-heat-templates/src/branch/master/firstboot/userdata_dev_rsync.yaml">https://opendev.org/openstack/tripleo-heat-templates/src/branch/master/firstboot/userdata_dev_rsync.yaml</a></span></code></p>
<p><code class="yaml hljs"><span class="hljs-string">I suggest
deleting this and including a cloud-config version in the
baremetal provisioning docs.</span></code></p>
<p><br>
<code class="yaml hljs"><span class="hljs-string"></span></code><code
class="yaml hljs"><span class="hljs-string"></span></code></p>
<p><code class="yaml hljs"><span class="hljs-string"><font
face="Hack"><a class="moz-txt-link-freetext" href="https://opendev.org/openstack/tripleo-heat-templates/src/branch/master/firstboot/userdata_heat_admin.yaml">https://opendev.org/openstack/tripleo-heat-templates/src/branch/master/firstboot/userdata_heat_admin.yaml</a></font></span></code></p>
<p><code class="yaml hljs"><span class="hljs-string"><font
face="Hack">Delete this, there is already an abstraction for
this built into the baremetal provisioning format[4]</font></span></code></p>
<p><code class="yaml hljs"><span class="hljs-string"><font
face="Hack"><br>
</font></span></code></p>
<p><code class="yaml hljs"><span class="hljs-string"><font
face="Hack"><a class="moz-txt-link-freetext" href="https://opendev.org/openstack/tripleo-heat-templates/src/branch/master/firstboot/userdata_root_password.yaml">https://opendev.org/openstack/tripleo-heat-templates/src/branch/master/firstboot/userdata_root_password.yaml</a></font></span></code></p>
<p><code class="yaml hljs"><span class="hljs-string"><font
face="Hack">Delete this and include it as an example in the
baremetal provisioning docs.</font></span></code></p>
<p><code class="yaml hljs"><span class="hljs-string"><font
face="Hack"><br>
</font></span></code></p>
<p><code class="yaml hljs"><span class="hljs-string"><font
face="Hack"><a class="moz-txt-link-freetext" href="https://opendev.org/openstack/tripleo-heat-templates/src/branch/master/firstboot/userdata_timesync.yaml">https://opendev.org/openstack/tripleo-heat-templates/src/branch/master/firstboot/userdata_timesync.yaml</a></font></span></code></p>
<p><code class="yaml hljs"><span class="hljs-string"><font
face="Hack">Maybe this could be converted to an
extraconfig/all_nodes script[5], but it would be better if
this sort of thing could be implemented as an ansible role
or playbook, are there any plans for an extraconfig
mechanism which uses plain ansible semantics?</font></span></code></p>
<p><code class="yaml hljs"><span class="hljs-string"><font
face="Hack"><br>
</font></span></code></p>
<p><code class="yaml hljs"><span class="hljs-string"><font
face="Hack">cheers<br>
</font></span></code></p>
<p><font face="Hack">[1]
<a class="moz-txt-link-freetext" href="https://docs.openstack.org/project-deploy-guide/tripleo-docs/latest/features/extra_config.html#firstboot-extra-configuration">https://docs.openstack.org/project-deploy-guide/tripleo-docs/latest/features/extra_config.html#firstboot-extra-configuration</a><br>
</font></p>
<p><font face="Hack">[2]
<a class="moz-txt-link-freetext" href="https://opendev.org/openstack/tripleo-heat-templates/src/branch/master/firstboot">https://opendev.org/openstack/tripleo-heat-templates/src/branch/master/firstboot</a><br>
</font></p>
<p><font face="Hack">[3]
<a class="moz-txt-link-freetext" href="https://opendev.org/openstack/tripleo-ansible/src/branch/master/tripleo_ansible/ansible_plugins/modules/metalsmith_instances.py#L286">https://opendev.org/openstack/tripleo-ansible/src/branch/master/tripleo_ansible/ansible_plugins/modules/metalsmith_instances.py#L286</a></font></p>
<p><font face="Hack">[4]
<a class="moz-txt-link-freetext" href="https://opendev.org/openstack/tripleo-ansible/src/branch/master/tripleo_ansible/ansible_plugins/modules/metalsmith_instances.py#L132">https://opendev.org/openstack/tripleo-ansible/src/branch/master/tripleo_ansible/ansible_plugins/modules/metalsmith_instances.py#L132</a></font></p>
<p><font face="Hack">
<a class="moz-txt-link-freetext" href="https://opendev.org/openstack/tripleo-ansible/src/branch/master/tripleo_ansible/ansible_plugins/modules/metalsmith_instances.py#L145">https://opendev.org/openstack/tripleo-ansible/src/branch/master/tripleo_ansible/ansible_plugins/modules/metalsmith_instances.py#L145</a></font></p>
<p><font face="Hack">[5]
<a class="moz-txt-link-freetext" href="https://opendev.org/openstack/tripleo-heat-templates/src/branch/master/extraconfig/all_nodes">https://opendev.org/openstack/tripleo-heat-templates/src/branch/master/extraconfig/all_nodes</a><br>
</font></p>
</body>
</html>