SUSE Manager/bootstrapping-salt-scripted

From MicroFocusInternationalWiki
Revision as of 18:45, 19 December 2017 by Dvosburg (Talk | contribs) (Minion Registration using a bootstrap script)

Jump to: navigation, search

SUSE Manager Main Page

Bootstrap salt minions with bootstrap scripts

Since SUMA 3.0.2, you can create salt-specific bootstrap scripts that can be incorporated into your onboarding or build processes. While there are other ways to onboard a salt minion, this method provides consistency and scalability.


Apply the latest updates to SUSE Manager 3, minimum update required is version 3.0.2.

Required channels

Make sure you have the corresponding product enabled and the channels synced. This must be completed before creating the bootstrap repositories. For example:

  • SLES11 SP4 x86_64
- Product: SUSE Linux Enterprise Server 11 SP4 (x86_64)
- Mandatory channels: sles11-sp4-pool-x86_64, sles11-sp4-suse-manager-tools-x86_64, sles11-sp4-updates-x86_64

In order to check if the channels have finished syncing:

  • Go to "Admin -> Setup Wizard" and look under tab "SUSE Products" You will see a Green indicator and the last sync time for completed products.
  • Go to Channels, and select the channel in question. Under "Basic Information", the "Last Modified" and "Last Repo Build" date/time stamps should agree, and the "Repo Cache Status" must be "Completed"
  • Optionally check the sync log file under /var/log/rhn/reposync/<channel-label>.log

Bootstrap repositories

On the server, create a bootstrap repository for each distribution/architecture with
Ensure that this script finishes properly, and if not, re-check the channel sync. You can optionally include all the channels under the parent with this command option -
mgr-create-bootstrap-repo --with-custom-channels
You can safely re-run this command at any time, and you SHOULD whenever a new version of salt-minion is released, and your tools channel gets updated. The repositories are created under
, and are meant to be used in the registration/bootstrap process only.

Minion Registration using a bootstrap script

1. If needed, regenerate the bootstrap script on the server with the Salt option enabled

 For SUSE Manager 3.0.X:
mgr-bootstrap --salt --ssl-cert='/srv/www/htdocs/pub/RHN-ORG-TRUSTED-SSL-CERT' For SUSE Manager 3.1.X:
mgr-bootstrap --ssl-cert='/srv/www/htdocs/pub/RHN-ORG-TRUSTED-SSL-CERT'

This places the script in /srv/www/htdocs/pub/bootstrap by default.

2. Copy this for your specific use case, editing the script to reflect the correct activation key, and any other relevant content. Here are some examples of changes:

a. Add an activation key reference like this:


b. Comment out the removal of the certificate to prevent repository issues. Search for this section and ensure it looks like this:

  #echo  "* removing TLS certificate used for bootstrap"
  #echo "  (will be re-added via salt state)"

This prevents interference in some cases with proper channel certification.

3. Download and run the appropriately edited bootstrap script after completing the edits. The bootstrap script validates installation of the necessary Salt packages, sets the proper activation key, and starts the salt-minion service.

curl -Sks http://<server FQDN>/pub/bootstrap/ | /bin/bash

The script also creates a file on the minion: /etc/salt/minion.d/susemanager.conf with content that looks like this:

 master: <server FQDN>
       activation_key: "1-11sp4-x86_64"

4. Go to the Server web UI to Salt -> Onboarding and accept the minion's key. After a few minutes, the new minion will appear in your list of systems with the channels assigned in the activation key you specified in the bootstrap process.

Automatic Minion Registration using a bootstrap script in AutoYast

1. Do all of the above to set up the bootstrap repository and scripts.

2. Create a registration script like:


echo "Installing Salt and Salt-Minion"
curl -Sks | /bin/bash

echo "Configuring Salt Minion (/etc/salt/minion)"
/usr/bin/sed --in-place 's/#master: salt/master:\n\n# ---------------------------------------------------------\n#\nmgr_mine:config:\n  file.managed:\n    - name: \/etc\/salt\/minion.d\/susemanager-mine.conf\n    - contents:\n      - mine_return_job: True\nrestart_salt_minion:\n\n      - name: service salt-minion restart\n      - shell: \/bin\/bash\n      - runas: root \n#\n# ---------------------------------------------------------\n/' /etc/salt/minion

echo "Removing Salt Registration from after.local"
grep -v salt-minion-registration /etc/rc.d/after.local > /etc/rc.d/after.local2
mv /etc/rc.d/after.local2 /etc/rc.d/after.local

(Substitute your SUSE Manager server host name for "") here, of course.

3. Base64 encode your script:

 base64 < > salt-minion-registration.b64

4. Add a <post-script> to your AutoYast profile to call this registration script 5 minutes after system boot:

        <debug config:type="boolean">true</debug>
        <feedback config:type="boolean">false</feedback>
        <network_needed config:type="boolean">true</network_needed>
        <notification>Salt Minion Configuration</notification>
        <param-list config:type="list"/>
echo "(sleep 300 ; /root/ > /var/adm/autoinstall/logs/salt-minion-registration.log) &" >> /etc/rc.d/after.local
/bin/cat <<EOS > /root/salt-minion-registration.b64
cd /root
base64 -d /root/salt-minion-registration.b64 > /root/
chmod 700 /root/

This gives everything time to settle down after initial boot, then calls the script to register with the SUSE Manager server.