You can test repositories on any clients with smt-staging before moving them to the production environment. You can select new update repositories manually to be installed on clients.
For staging, you can either use the smt-staging command, or use the YaST SMT Management module. For more details, see Staging Repositories.
Repositories with staging enabled are mirrored to the /MirrorTo/repo/full subdirectory. This subdirectory is usually not used by your clients. Incoming new updates are not automatically visible to the clients before you get a chance to test them. Later you can generate a testing environment of this repository, which goes to /MirrorTo/repo directory.
If you have a SLE11 based Update repository with patches, SMT tools can help you with the management. With these tools you can select patches and create a snapshot and put it into repo/testing/. After tests are finished you can put the content of repo/testing into the production area /repo. repo/testing/ and /repo is called the default
staging group. You can create additional staging groups as needed with the smt-staging creategroup command.
NOTE: SLE 10 Based Update Repositories
SLE 10 based Update repositories are not supported by SMT tools. Not all of these repositories support selective staging. In this case you need to mirror the complete package.
To enable or disable the staging use the smt-repos command with --enable-staging or -s:
smt-repos --enable-staging
You can enable the required repositories by entering the ID number or by entering the name and target. If you want to enable all repositories enter a.
To create the testing repository in the default
staging group enter:
smt-staging createrepo Repository_ID -–testing
Now, you can test the installation and functionality of the patches in testing clients. If no problems are discovered during testing, create the production repository by entering:
smt-staging createrepo Repository_ID --production
To create testing and production repositories in a named staging group first create the group and then the repositories in this group:
smt-staging creategroup Groupname Testingdir Productiondir smt-staging createrepo --group Groupname Repository_ID -–testing smt-staging createrepo --group Groupname Repository_ID -–production
This can help you, if you for example, want to combine OES2018-Updates and OES2018-SP1-Updates of the sle-12-x86_64 architecture into one repository of a group:
smt-staging creategroup OES2018-SP0-SP1 test-sp0-sp1 prod-sp0-sp1 smt-staging createrepo --group OES2018-SP0-SP1 \ OES2018-Updates sle-12-x86_64 --testing smt-staging createrepo --group OES2018-SP0-SP1 \ OES2018-SP1-Updates sle-12-x86_64 --testing smt-staging createrepo --group OES2018-SP0-SP1 \ OES2018-Updates sle-12-x86_64 --production smt-staging createrepo --group OES2018-SP0-SP1 \ OES2018-SP1-Updates sle-12-x86_64 --production
For group names, these characters are allowed: -_, a-zA-Z, and 0-9.
You can allow or forbid all or selected patches with the allow or forbid commands by their ID or Category:
smt-staging forbid --patch ID smt-staging forbid --category Categoryname
If you filter one or more patches from a repository,the original signature becomes invalid. The repository needs to be signed again. The smt-staging createrepo command takes care of that automatically if you configure the SMT server.
In order to enable signing of changed metadata, the admin needs to generate a new signing key. This can be done with GPG like this:
mkdir some_dir gpg --gen-key --homedir some_dir sudo mv some_dir /var/lib/smt/.gnupg sudo chown smt:users -R /var/lib/smt/.gnupg sudo chmod go-rwx -R /var/lib/smt/.gnupg
Then, the ID of the newly generated key as seen in the gpg --gen-key command output, must be written into /etc/smt.conf, option signingKeyID.
At this point the clients do not know about this new key. In order to import the new key to clients during their registration, the following can be done:
sudo -u smt gpg --homedir /var/lib/smt/.gnupg \ --export -a signingKeyID \ > /MirrorTo/repo/keys/smt-signing-key.key
In this example, MirrorTo stands for the base directory where repositories will be mirrored. Once done, clients can import this key during the registration process.
To register a client in the testing environment, modify the /etc/suseRegister.conf on the client machine by setting:
register = command=register&namespace=testing