This post refers to SUSE Cloud Deployment Guide Version 2, 3, 4 and 5.
Currently, we have a cloud 5 test environment with three nodes.
Setting up the cloud using SUSE Manager to provide update repositories can lead to frustrating errors, a little mistake in the docs is responsible for the premature abortion of the install script.
Background
When you set up the Admin Node and you reach the point where you have to run the script install-suse-cloud
, you have to consider how you are providing the update repositories, SMT-Server on the Admin Node, remote SMT-Server or SUSE Manager (SUMA).
Our first attempts to install the cloud were based on a mixture of remote SMT-Server and SUSE Manager. After the installation we registered the cloud nodes in SUMA so that every node had direct access to updates. The registration in SUMA deactivated the SMT-repositories automatically.
Now since we are using SUMA already, we decided to replace SMT completely with SUMA in our cloud environment.
Possible Problem
After you configure your admin node and set up all repositories with yast crowbar or directly in the provisioner.json, you have to run
screen install-suse-cloud
But in case you are using SUMA, the command according to the documentation should be
screen env REPOS_SKIP_CHECKS+=" SLES11-SP3-Pool SLES12-Pool" install-suse-cloud
That’s what I did, but I still got an error and the installation was cancelled. The error message was
Error: SLES11-SP3-Pool (11.3) does not contain the right repository (/srv/tftpboot/suse-11.3/repos/SLES11-SP3-Pool/repodata/repomd.xml is missing repo tag 'updates://zypp-patches.suse.de/autobuild/SLE_SERVER/11-SP3/pool/x86_64')
Obviously, the SLES11 channel was checked anyway. So somehow the exclusion did not work.
Solution
First, I commented out the respective lines in the file /opt/dell/bin/install-chef-suse.sh:
#check_repo_tag repo 11.3 SLES11-SP3-Pool 'updates://zypp-patches.suse.de/autobuild/SLE_SERVER/11-SP3/pool/x86_64' #check_repo_tag repo 12.0 SLES12-Pool 'obsproduct://build.suse.de/SUSE:SLE-12:GA/SLES/12/POOL/x86_64'
This worked just fine, the repos were skipped and the installation succeeded. But of course, this is just a workaround, not very pretty. Instead, I tried to figure out why the channels weren’t excluded.
Actually, it’s quite simple: the command env
does not add the values “SLES11-SP3-Pool” and “SLES12-Pool” to the variable “REPOS_SKIP_CHECKS” but it sets the values of the variable “REPOS_SKIP_CHECKS+”. It’s the plus sign that makes the difference because env doesn’t know the “+=” operator.
So if you are using SUSE Manager and want to run the install script you should run
screen env REPOS_SKIP_CHECKS=" SLES11-SP3-Pool SLES12-Pool" install-suse-cloud
This way the start values for “REPOS_SKIP_CHECKS” are set with env and the install script uses “+=” to add other repos to skip.
You see the result in /var/log/crowbar/install.log:
Ignoring failed repo check for SLES11-SP3-Pool (11.3) due to $REPOS_SKIP_CHECKS (/srv/tftpboot/suse-11.3/repos/SLES11-SP3-Pool/repodata/repomd.xml is missing repo tag 'updates://zypp-patches.suse.de/autobuild/SLE_SERVER/11-SP3/pool/x86_64')
The repository has been skipped and the installation can continue.