Recently I'm learning how to use autoyast to install SUSE unattendly via network with pxe. My target is --
Unattended install Suse12.4 with pxe -- I have made it successfully with autoyast.xml and pxe
The install not only install Suse only, but also need to install some external packages -- eg. rlwrap and puppet client... Follow the steps in https://documentation.suse.com/sles/12-SP4/html/SLES-all/configuration.html#CreateProfile-Software -- in Section 4.9.2 So I made a test with rlwrap package only, here are my steps--
Since my repository was http://192.168.95.77/12.4, so I copied rlwrap-0.43-lp152.3.8.x86_64.rpm to http://192.168.95.77/12.4/suse/x86_64 and make sure it's available from http.
Then I modified my autoyast.xml add this at the file end--
<add-on>
<add_on_products config:type="list">
<listentry>
<media_url>http://192.168.95.77/12.4/suse/x86_64/rlwrap-0.43-lp152.3.8.x86_64.rpm</media_url>
<product>rlwrap</product>
<alias>rlwrap</alias>
<product_dir></product_dir>
<priority config:type="integer">99</priority>
<ask_on_error config:type="boolean">false</ask_on_error>
<confirm_license config:type="boolean">false</confirm_license>
<name>eisen-repo-12.4</name>
</listentry>
</add_on_products>
</add-on>
Then I tested with a new VM, -- then I found this VM was successfully installed Suse12.4 again, But that rlwrap package was not installed and there's no error message found in installation.
Find the solution -- the init.sh part in the autoyast.xml can do it. I wrote it like this --
<scripts>
<init-scripts config:type="list">
<script>
<debug config:type="boolean">true</debug>
<feedback config:type="boolean">false</feedback>
<filename>init.sh</filename>
<interpreter>shell</interpreter>
<location><![CDATA[]]></location>
<notification>customer initialization</notification>
<source><![CDATA[
#!/bin/bash
touch /tmp/flag
rpm --import http://192.168.95.77/puppet7/repodata/repomd.xml.key 2>&1 >> /tmp/flag
zypper addrepo -f http://192.168.95.77/puppet7 eisen-repo-puppet7 2>&1 >> /tmp/flag
zypper install -y rlwrap 2>&1 >> /tmp/flag
zypper install -y puppet-agent 2>&1 >> /tmp/flag
]]></source>
</script>
</init-scripts>
</scripts>
Then the 3rd party packages are installed successfully.