====== Foreman-Katello "Content" inrichten ======
===== Defaults =====
Zet in de defaults zodat je niet bij elk ''hammer'' command de organisation en location moet meegeven:\\
\\
''%%hammer defaults add --param-name organization --param-value "ORG_NAME"%%''\\
''%%hammer defaults add --param-name location --param-value "DATACENTER_NAME"%%''\\
===== products =====
Maak eerst ''products'' dit zijn logische units waarin je repositories die bij elkaar horen of handig samen gaan kan bundelen, in dit voorbeeld heb ik de basis CentOS repo's gescheiden van de EPEL repository, maar de indeling kan je volledig zelf bedenken, als al je CentOS servers de EPEL repository krijgen zou je de EPEL repo bijvoorbeeld bij het CentOS product kunnen invoegen:\\
\\
''%%hammer product create --name "CentOS7_repos" --description "CentOS7 repository collection"%%''\\
''%%hammer product create --name "EPEL7_repos" --description "EPEL repository for CentOS7"%%''\\
===== repositories toevoegen aan product =====
==== CentOS7 repositories ====
=== GPG keys ===
Als eerste moet de GPG key van de repositories bekend zijn:\\
''mkdir /etc/pki/rpm-gpg/import''\\
''%%wget http://mirror.centos.org/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7 -P /etc/pki/rpm-gpg/import%%''\\
\\
maak deze bekend in katello:\\
''%%hammer gpg create --key "RPM-GPG-KEY-CentOS-7" --name "RPM-GPG-KEY-CentOS-7"%%''\\
=== Repo URL ===
Voeg vervolgens de CentOS7 repositories alle 3 toe aan de ''product'':\\
''%% hammer repository create --product "CentOS7_repos" --name "CentOS-7 - Base" --label "CentOS-7_Base_x86_64" --content-type "yum" --download-policy "on_demand" --gpg-key "RPM-GPG-KEY-CentOS-7" --url "http://mirror.centos.org/centos/7/os/x86_64/" --mirror-on-sync "no"%%''\\
\\
''%%hammer repository create --product "CentOS7_repos" --name "CentOS-7 - Extras" --label "CentOS-7_Extras_x86_64" --content-type "yum" --download-policy "on_demand" --gpg-key "RPM-GPG-KEY-CentOS-7" --url "http://mirror.centos.org/centos/7/extras/x86_64/" --mirror-on-sync "no"%%''\\
\\
''%%hammer repository create --product "CentOS7_repos" --name "CentOS-7 - Updates" --label "CentOS-7_Updates_x86_64" --content-type "yum" --download-policy "on_demand" --gpg-key "RPM-GPG-KEY-CentOS-7" --url "http://mirror.centos.org/centos/7/updates/x86_64/" --mirror-on-sync "no"%%''\\
==== Errata voor CentOS ====
Errata komt later
Voor RedHat en EPEL repo's worden de errata automatisch opgehaald. Voor CentOS is dat, net als onder spacewalk, niet het geval en is de volgende workarround nodig.
https://github.com/nicolas-r/katello-centos-errata-import/blob/master/centos-errata-katello-importer.py
==== EPEL repository ====
=== GPG keys ===
Ook hier moet de GPG key van de repositories bekend zijn:\\
''mkdir /etc/pki/rpm-gpg/import''\\
''%%wget https://epel.mirror.liteserver.nl/RPM-GPG-KEY-EPEL-7 -P /etc/pki/rpm-gpg/import/%%''\\
\\
Maak ook deze bekend in katello:\\
''%%hammer gpg create --key "RPM-GPG-KEY-EPEL-7" --name "RPM-GPG-KEY-EPEL-7"%%''\\
=== repo URL ===
En koppel de EPEL repository:\\
''%%hammer repository create --product "EPEL7_repos" --name "EPEL-7 - x86_64" --label "EPEL7_x86_64" --content-type "yum" --download-policy "on_demand" --gpg-key "RPM-GPG-KEY-EPEL-7" --url "http://download.fedoraproject.org/pub/epel/7/x86_64/" --mirror-on-sync "no"%%''\\
===== Syncronisatie =====
Om de repositories op gezette tijden te updaten hebben we als eerste een sync-plan nodig:
''%%hammer sync-plan create --name "dagelijkse-sync" --interval daily --enabled true --sync-date "2021-01-13"%%''\\
vervolgens:\\
''hammer sync-plan list''
---|-----------------|---------------------|----------|---------|-----------------|-------------------
ID | NAME | START DATE | INTERVAL | ENABLED | CRON EXPRESSION | RECURRING LOGIC ID
---|-----------------|---------------------|----------|---------|-----------------|-------------------
1 | dagelijkse-sync | 2021/01/13 00:00:00 | daily | yes | | 1
---|-----------------|---------------------|----------|---------|-----------------|-------------------
en pas het sync-plan toe op de products:\\
''%%hammer product set-sync-plan --sync-plan-id 1 --name "CentOS7_repos"%%''\\
''%%hammer product set-sync-plan --sync-plan-id 1 --name "EPEL7_repos"%%''\\
\\
===== Lifecycle environments =====
Dit zijn in weze OTAP omgevingen. Je maakt ze als volgt aan: \\
\\
''%%hammer lifecycle-environment create --name "ont" --label "Ontwikkel" --prior "Library"%%''\\
''%%hammer lifecycle-environment create --name "tst" --label "Test" --prior "ont"%%''\\
''%%hammer lifecycle-environment create --name "acc" --label "Acceptatie" --prior "tst"%%''\\
''%%hammer lifecycle-environment create --name "prd" --label "Productie" --prior "acc"%%''\\
\\
Door het gebruik van de optie ''%%--prior%%'' heb je ze op-eenvolgend gemaakt, anders zouden ze niet als keten bestaan.
===== contentviews =====
//Contentviews// zijn verzamelingen //repositories// die met versies beheerd kunnen worden om zodanig een "view" van een bepaald moment te hebben. Die //contentview//s kunnen later dan weer "ge-//published//" worden naar een bepaalde //lifecycle environment//.
Maak de views aan:\\
''%%hammer content-view create --name "CentOS7-OS-view" --description "view with CentOS7 OS repos"%%''\\
''%%hammer content-view create --name "EPEL7-view" --description "view with EPEL repos voor CentOS7"%%''\\
Vervolgens zoek je de id's van de repositories die je aan deze views wilt toevoegen:\\
''hammer repository list''\\
---|--------------------|---------------|--------------|-----------------------------------------------------
ID | NAME | PRODUCT | CONTENT TYPE | URL
---|--------------------|---------------|--------------|-----------------------------------------------------
1 | CentOS-7 - Base | CentOS7_repos | yum | http://mirror.centos.org/centos/7/os/x86_64/
2 | CentOS-7 - Extras | CentOS7_repos | yum | http://mirror.centos.org/centos/7/extras/x86_64/
3 | CentOS-7 - Updates | CentOS7_repos | yum | http://mirror.centos.org/centos/7/updates/x86_64/
18 | EPEL-7 - x86_64 | EPEL7_repos | yum | http://download.fedoraproject.org/pub/epel/7/x86_64/
---|--------------------|---------------|--------------|-----------------------------------------------------
en voeg de juiste repository aan de views toe, coor de CentOS7 OS view:\\
''%%hammer content-view add-repository --name "CentOS7-OS-view" --product "CentOS7_repos" --repository-id "1"%%''\\
''%%hammer content-view add-repository --name "CentOS7-OS-view" --product "CentOS7_repos" --repository-id "2"%%''\\
''%%hammer content-view add-repository --name "CentOS7-OS-view" --product "CentOS7_repos" --repository-id "3"%%''\\
\\
en voor de EPEL view:\\
''%%hammer content-view add-repository --name "EPEL7-view" --product "EPEL7_repos" --repository-id "18"%%''\\
Omdat een host maar aan 1 //content view// mag //subscriben// moeten we een "//**Composit Content View**//" aanmaken, het proces lijkt op die van een gewone //Content View//. Zoek de id's van de //Content View//s die je wilt toevoegen:\\
'' hammer content-view list''\\
----------------|---------------------------|---------------------------|-----------|---------------------|---------------
CONTENT VIEW ID | NAME | LABEL | COMPOSITE | LAST PUBLISHED | REPOSITORY IDS
----------------|---------------------------|---------------------------|-----------|---------------------|---------------
5 | CentOS7-OS-view | CentOS7-OS-view | false | 2021/01/13 13:48:16 | 1, 2, 3
1 | Default Organization View | Default_Organization_View | false | 2021/01/10 15:15:03 |
6 | EPEL7-view | EPEL7-view | false | 2021/01/13 15:00:48 | 18
----------------|---------------------------|---------------------------|-----------|---------------------|---------------
En maak de //Composite Content View// aan:\\
''%%hammer content-view create --name CentOS7-all-Cview --description "CentOS7 and EPEL7 Composite" --composite --component-ids 5,6%%''\\
==== Publishing contentviews ====
Publishing is het moment waarop je een view vastlegt in tijd. Dit doe je in de webinterface.
ga in\\
//Content// → //Content Views// \\
en klik op bv //EPEL7-view// \\
en klik op de blauwe knop //Publish New Version//.
Vul eventueel een Description in en druk op //Save//.
==== promoting contentviews ====
De //Published// versions zie je als je weer klikt //Content// → //Content Views//
en //EPEL7-view// \\
vervolgens zie je rechts een knop //Promote//.
als je hier op klikt krijg je de keus hem te promoten, de ''Environments'' waar al naar gepromote is zijn grijs, en doordat we bij het aanmaken van de environments ''--prior'' hebben gebruikt volgen ze netjes op elkaar.
{{ :werkinstructies:promote.png?400 |}}
===== Activation keys =====
activation keys gebruik je om hosts aan een specifieke contentview in een specifieke lifecycle environment te koppelen, bijvoorbeeld; een CentOS mongodb server in test koppel je met 3 activation keys:
* key test CentOS7_OS-view
* key test EPEL7-view
* key test mongodb-view
Maak ze (bijvoorbeeld voor test) zo aan:\\
''%%hammer activation-key create --name "Test_CentOS7_OS" --unlimited-hosts --description "Key for CentOS7 repos on Test" --lifecycle-environment "test" --content-view "CentOS7-OS-view"%%''\\
\\
en ook die voor de EPEL repo view:\\
''%%hammer activation-key create --name "Test_EPEL7-key" --unlimited-hosts --description "Key for EPEL repo on Test" --lifecycle-environment "test" --content-view "EPEL7-view"%%''\\
===== Klaar voor de volgende stappen =====
Hierna kan je [[werkinstructies:CentOS7_server_koppelen_katello|bestaande CentOS7 servers koppelen aan foreman-katello]].\\
Of [[werkinstructies:foreman-katello_provisioning|Provisionen met Foreman]]
===== Bronnen =====
[[https://youtu.be/xc-1nWGK4pk|Youtube videos van Matthew Bingham]]
https://blog.fite.cat/tag/hammer/
https://redhatlinux.guru/2016/10/16/create-an-organization-sync-plan-product-and-repository-on-katello-using-foreman-hammer-cli/