====== Spacewalk op CentOS 7 ====== Spacewalk is de comunity variant van RedHat Satellite. Een gecentraliseerde patch management en software deployement systeem. ===== installatie ===== Begin met een [[werkinstructies:clone_de_minimale_centos7_template|Clone van de CentOS7 minimal]] ==== storage ruimte ==== Twee dingen spelen hier; Als eerste moet de root partitie minstens 12G vrije ruimte hebben voor de database en ten tweede moet er voldoende ruimte zijn om de repositories te "clonen". Per default slaat Spacewalk de rpms gesync-ed uit repositories op in ''/var/satellite''. Daar moet een eigen filesysteem voor komen. [[werkinstructies:iscsi_in_freenas|maak in de iscsi pool een volume aan]]. Aangezien de spacewalk server een VM is laten we KVM de storage doorgeven. voeg het iscsi target toe als storage in KVM en ken die storage toe aan de spacewalk VM. Druk op ''**Add Hardware**'' kies ''Storage'' selecteer ''Select or create custom storage'' druk op ''**Manage...**'' en kies in de popup de iscsi storage die je eerder aan KVM hebt toegevoegd. Bij ''Device type:'' selecteer ''**LUN Passthrough**'' bij ''Bus type:'' selecteer ''**SCSI**'' Boot de server. bekijk welke disks al in gebruik zijn (''df'' en ''pvdisplay'') en identificeer de iscsi disk door de output van '' lsblk'' hier mee te vergelijken: [root@servernaam~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 100G 0 disk vda 252:0 0 8G 0 disk ├─vda1 252:1 0 500M 0 part /boot └─vda2 252:2 0 7.5G 0 part ├─centos-root 253:0 0 6.7G 0 lvm / └─centos-swap 253:1 0 820M 0 lvm [SWAP] vdb 252:16 0 15G 0 disk └─vdb1 252:17 0 15G 0 part └─centos-root 253:0 0 21.7G 0 lvm / In dit geval dus /dev/sda. Maak vervolgens een partitie aan door: ''parted -a optimal /dev/sda'' mklabel gpt mkpart primary 0% 100% quit Maak een filesysteem: ''mkfs.ext4 -m 0 /dev/sda1'' Maak het mountpoint: ''mkdir /var/satellite''\\ Zoek het UUID op door: ''blkid /dev/sda1'' en maak een regel in ''/etc/fstab'' UUID=94aef3a7-c1c4-4f81-ad31-6c3ae805aa81 /var/satellite ext4 defaults,_netdev 0 2 mount vervolgens met ''mount -a'' ==== repositories ==== De Spacewalk software bevindt zich in de een eigen repository. Installeer die door: ''rpm -Uvh %%http://yum.spacewalkproject.org/2.6/RHEL/7/x86_64/spacewalk-repo-2.6-0.el7.noarch.rpm%%'' Een aantal noodzakelijke onderdelen bevinden zich in de EPEL repository. Installeer die door: ''yum install epel-release'' Een aantal java en andere libraries bevinden zich in Installeer die door een repo definitie aan te maken: ''vi /etc/yum.repos.d/jpackage-generic.repo'' en zet hier in: [jpackage-generic] name=JPackage generic #baseurl=http://mirrors.dotsrc.org/pub/jpackage/5.0/generic/free/ mirrorlist=http://www.jpackage.org/mirrorlist.php?dist=generic&type=free&release=5.0 enabled=1 gpgcheck=1 gpgkey=http://www.jpackage.org/jpackage.asc ==== firewall ==== Zet de nodige poorten in de firewall open zodat er van buitenaf verbinding kan worden gemaakt: ''firewall-cmd %%--permanent --%%add-service=http\\ firewall-cmd %%--permanent --%%add-service=https\\ firewall-cmd %%--%%reload'' ==== installatie en setup ==== In deze installatie ga ik er vanuit dat we spacewalk met een postgresql backend op dezelfde server installeren. ''yum -y install spacewalk-setup-postgresql'' ''yum -y install spacewalk-postgresql'' Dit gaat even duren, het zijn een flink aantak paketten dat nodig is. Start de setup door: ''spacewalk-setup''\\ * Setting up SELinux.. ( ( # ) ) ** Database: Setting up database connection for PostgreSQL backend. ** Database: Installing the database: ** Database: This is a long process that is logged in: ** Database: /var/log/rhn/install_db.log *** Progress: #### ** Database: Installation complete. ** Database: Populating database. *** Progress: ########################### * Configuring tomcat. * Setting up users and groups. Er wordt een aantal vragen gesteld in verband met het aanmaken van een certificaat: * Setting up users and groups. ** GPG: Initializing GPG and importing key. ** GPG: Creating /root/.gnupg directory You must enter an email address. Admin Email Address? admin@domain.nl * Performing initial configuration. * Configuring apache SSL virtual host. Should setup configure apache's default ssl server for you (saves original ssl.conf) [Y]? y ** /etc/httpd/conf.d/ssl.conf has been backed up to ssl.conf-swsave * Configuring jabberd. * Creating SSL certificates. CA certificate password? Pa55w0rD Re-enter CA certificate password? Pa55w0rD Organization? Boerema CI&ND Organization Unit [spacewalk.domain.nl]? Email Address [admin@domain.nl]? City? Amsterdam State? Noord Holland Country code (Examples: "US", "JP", "IN", or type "?" to see a list)? NL ** SSL: Generating CA certificate. ** SSL: Deploying CA certificate. ** SSL: Generating server certificate. ** SSL: Storing SSL certificates. * Deploying configuration files. * Update configuration in database. * Setting up Cobbler.. Cobbler requires tftp and xinetd services be turned on for PXE provisioning functionality. Enable these services [Y]? y * Restarting services. (( # )) Installation complete. Visit https://spacewalk.domain.nl to create the Spacewalk administrator account. ==== SELinux context ==== Omdat we de rpm's op een nieuw filesysteem laten landen moeten we de SELinux context nog aanpassen:\\ ''%%semanage fcontext -a -t spacewalk_data_t "/var/satellite(/.*)?"%%\\ restorecon -R -v /var/satellite'' ==== version lock in verband met updates ==== ''yum install yum-versionlock\\ yum versionlock cglib'' ==== updates ==== ''/usr/sbin/spacewalk-service stop\\ yum update\\ systemct start postgresql\\ /usr/bin/spacewalk-schema-upgrade\\ /usr/sbin/spacewalk-service start'' ===== configuratie ===== ==== organisation & admin user ==== Ga met een een browser naar https://spacewalk.domain.nl . Als je de eerste keer op de website komt wordt je direct gevraagd om een organisatie en een admin gebruiker aan te maken.\\ Doe dat en druk op **Create Organization**. {{ :installatie_handleidingen:spacewalk-1.png?700 |}} ==== channels & repositories ==== volg [[werkinstructies:spacewalk_channels|deze instructies]] om je base- en child channels aan te maken. ==== erata en security advisories ==== De meeste repositories leveren ook Erata en security advisories, default RedHat(r) repositories ook. CentOS repositories helaas niet. Er is echter wel een manier om ook daarvoor Erata en security advisories binnen te halen. log in op de spacewalk server. Maak een directory aan:\\ ''mkdir /opt/tools\\ chmod 700 /opt/tools'' download het perlscript gemaakt door [[https://cefs.steve-meier.de/|Steve Meier]]:\\ ''cd /opt/tools\\ wget %%https://github.com/stevemeier/cefs/raw/master/errata-import.pl%%\\ chmod 700 ./errata-import.pl'' installeer packages die nodig zijn voor dit script:\\ ''yum install perl-Text-Unidecode perl-XML-Simple perl-Frontier-RPC'' Vervolgens maken we een script dat de repositories van spacewalk synct en de erata ophaalt. Dat script laten we door cron dagelijks draaien. ''vi /opt/tools/spacewalk_centos_erata_sync.sh'' en zet hierin: #!/bin/sh # try to create the lock and check the outcome LOCKFILE=/var/run/spacewalk_centos_erata_sync.lock if [ -e "$LOCKFILE" ]; then echo "Lock file exists, another sync running?. Aborting." exit 1 else touch "$LOCKFILE" fi trap "rm ${LOCKFILE}" EXIT #sync channels and publish updates /usr/bin/spacewalk-repo-sync -c centos_6-x86_64 1>/dev/null 2>&1 /usr/bin/spacewalk-repo-sync -c centos_6-x86_64-updates 1>/dev/null 2>&1 /usr/bin/spacewalk-repo-sync -c centos_6-x86_64-extras 1>/dev/null 2>&1 /usr/bin/spacewalk-repo-sync -c centos_7-x86_64 1>/dev/null 2>&1 /usr/bin/spacewalk-repo-sync -c centos_7-x86_64-updates 1>/dev/null 2>&1 /usr/bin/spacewalk-repo-sync -c centos_7-x86_64-extras 1>/dev/null 2>&1 #get errata file and checksums cd /tmp wget -N https://cefs.steve-meier.de/errata.latest.xml 1>/dev/null 2>&1 wget -N https://cefs.steve-meier.de/errata.latest.md5 1>/dev/null 2>&1 wget -N https://www.redhat.com/security/data/oval/com.redhat.rhsa-all.xml.bz2 1>/dev/null 2>&1 bunzip2 -f /tmp/com.redhat.rhsa-all.xml.bz2 #verify integrity grep "errata.latest.xml$" errata.latest.md5 > myerrata.md5 md5sum -c myerrata.md5 1>/dev/null 2>&1 if [ "$?" == 0 ]; then #ok - import errata SPACEWALK_PASS='Pas5W0rd' SPACEWALK_USER='adminUser' /opt/tools/errata-import.pl --server localhost --errata errata.latest.xml --include-channels=centos_6-x86_64-updates,centos_7-x86_64-updates --rhsa-oval=/tmp/com.redhat.rhsa-all.xml --publish 1>/dev/null if [ "$?" != 0 ]; then echo "It seems like there was a problem while publishing the most recent errata..." exit 1 fi rm /tmp/myerrata.md5 else #errata information possibly invalid echo "ERROR: md5 checksum mismatch, check download!" exit 1 fi Vervolgens configureren we een cronjob om elke nacht om 3 uur deze job te draaien: ''vi /etc/cron.d/0SpaceWalk-erata'' en zet hier in: # sync the update repositories, download erata and publish to spacewalk as needed 01 3 * * * root /opt/tools/spacewalk_centos_erata_sync.sh >> /var/log/Spacewalk-Erata.log Omdat het script de CentOS repositories synct moeten we de sync voor al de CentOS repositories in de webinterface uitzetten. ==== clients verbinden ==== Verbind clients volgens [[werkinstructies:spacewalk_connecting_clients|deze instructies]]. ===== Bronnen ===== [[https://fedorahosted.org/spacewalk/wiki/HowToInstall]] [[https://www.redhat.com/archives/spacewalk-list/2012-January/msg00105.html]] [[http://www.unixmen.com/how-to-manage-spacewalk-channels-and-repositories/]] [[https://easyitstuff.wordpress.com/2015/08/17/how-to-create-spacewalk-channel/]] [[http://www.stankowic-development.net/?p=5653]] [[https://cefs.steve-meier.de/]]