How to install Spacewalk Server on Centos 6


Spacewalk is an open source Linux systems management solution. Spacewalk is the upstream community project from which the Red Hat Satellite product is derived.

Spacewalk manages software content updates for Red Hat derived distributions such as Fedora, CentOS, and Scientific Linux, within your firewall. You can stage software content through different environments, managing the deployment of updates to systems and allowing you to view at which update level any given system is at across your deployment. A central web interface allows viewing of systems, their associated software update status, and initiating update actions.

Additional Management Capabilities

Spacewalk provides provisioning and monitoring capabilities, allowing you to manage your systems throughout their lifecycle. Via Provisioning, Spacewalk enables you to kickstart provision systems and manage and deploy configuration files. The monitoring feature allows you to view the status off your systems alongside their software update status. Spacewalk also has virtualization capabilities to enable you to provision, control, manage, and monitor virtual KVM and Xen guests.

The supported database options are Postgres and Oracl, so in this case we are using Postgres. Follow the steps shown below to install Spacewalk Server on Centos 6

Download the spacewalk repo

[root@server]# wget http://spacewalk.redhat.com/yum/latest/RHEL/6/x86_64/spacewalk-repo-1.9-1.el6.noarch.rpm

Install the spacewalk repo

[root@server]# rpm –ivh spacewalk-repo-1.9-1.el6.noarch.rpm

Install the yum priorities plugin

[root@server ]# yum install yum-plugin-priorities

Install the rest of the required repo’s

[root@server]# rpm -Uvh http://mirrors.dotsrc.org/jpackage/5.0/generic/free/RPMS/jpackage-release-5-4.jpp5.noarch.rpm

[root@server]# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

[root@server]# rpm -Uvh http://epel.mirror.net.in/epel/6/x86_64/epel-release-6-8.noarch.rpm

[root@server~]# rpm –ivh http://spacewalk.redhat.com/yum/1.7-client/RHEL/6/x86_64/spacewalk-client-repo-1.7-5.el6.noarch.rpm

Next you need to make a change to the jpackage repo

[root@server]# vim /etc/yum.repos.d/jpackage.repo

Look for the following section at the bottom

[jpackage-distro]

name=JPackage (free) for distro $releasever

mirrorlist=http://www.jpackage.org/mirrorlist.php?dist=redhat-el-$releasever&type=free&release=5.0

failovermethod=priority

gpgcheck=0

enabled=1

priority=10

You need to change the mirrorlist line so it looks like the following. The difference is the $releasever has been changed to 5.0

[jpackage-distro]

name=JPackage (free) for distro $releasever

mirrorlist=http://www.jpackage.org/mirrorlist.php?dist=redhat-el-5.0&type=free&release=5.0

failovermethod=priority

gpgcheck=0

enabled=1

priority=10

Next Step is to Cleanup  YUM

[root@server]# yum clean all

Next install Postgres, set it to run on boot and run the initial configuration

[root@server~]# yum install postgresql postgresql-contrib postgresql-devel postgresql-server

[root@server~]# chkconfig postgresql on

[root@server~]# service postgresql initdb

[root@server~]# service postgresql start

 Create the database and user for Spacewalk

[root@server~]# su – postgres -c ‘PGPASSWORD=spacepw; createdb spacedb ; createlang plpgsql spacedb ; yes $PGPASSWORD | createuser -P -sDR spaceuser’

Now you need to configure the user to use an md5 password

[root@server~]# vim /var/lib/pgsql/data/pg_hba.conf

At the bottom of the config file you will see to following lines

# “local” is for Unix domain socket connections only

local                 all         all                                            ident

# IPv4 local connections:

host                 all         all         127.0.0.1/32               ident

# IPv6 local connections:

host                 all         all         ::1/128                        ident

Before those lines add the following:

local     spacedb           spaceuser         md5

host     spacedb           spaceuser         127.0.0.1/8      md5

host     spacedb           spaceuser         ::1/128             md5

local     spacedb           postgres           ident

Reload Postgres for the changes to take effect

[root@server~]# service postgresql reload

Now install Spacewalk. It will take some time on a minimal install it had to install over 400 dependencies.

[root@server~]# yum install spacewalk-postgresql

[root@server~]#  yum install spacewalk-setup-embedded-postgresql

Once it is installed run the Spacewalk setup

[root@server~]# spacewalk-setup –disconnected

You will first be prompted for the database information. Leave the location blank, the database is spacedb, the username is spaceuser and the password is spacepw

** Database: Setting up database connection for PostgreSQL backend.

Hostname (leave empty for local)?

Database? spacedb

Username? spaceuser

Password? spacepw

The rest you can use the defaults. The final step will be generating a SSL certificate, just enter your details as required

Access the web interface by going to https://IPADDRESS you will be prompted to create a user. Once done you are ready to start connecting client machines.

How to walk with spacewalk

Populate Spacewalk

The goal is to deploy a new machine with an os, this means the obvious next step is to populate spacewalk with a Red Hat derived Linux distribution of your choice.

First step is to mount the CentOS 6.1 iso’s somewhere on your spacewalk server. Make sure to get a full distro iso, this means that required directories like, for example, images/pxeboot do exist. The packages which belong to a distribution are administered in Spacewalk as software channels, so we first have to create a software channel before we can add/upload packages to it.

Create a new software channel by opening the spacewalk console and navigate to:

“Channels” -> “Manage Software Channels” -> “Create New Channel”

Enter a reasonable channel name (this is for display only, e.g: “CentOS 6.1 – 64 Bit”), a channel label (remember this name for later use,e.g: “centos6.1-x86_64″) and select the correct architecture (x86_64).

Next step is to populate spacewalk with the CentOS packages, this proces is started by issuing the following command:

rhnpush -v –channel=centos6.1-x86_64 –server=http://localhost –dir=/path/to/Packages

where “/path/to/Packages” is the absolute path of the Packages directory of the mounted iso.

CentOS 6.1 consists of two dvd’s, execute above step for both dvd’s.

The rhnpush process uploads all packages and registers them in spacewalk. On average, rhnpush processes packages at a rate of around 2000 packages per 30 minutes (ofcourse depending on the configuration of your host and vm). CentOS 6.1 contains almost 6200 packages so, it will take around one and a half hour to upload all packages from dvd1 and dvd2 to spacewalk.

The deployed linux system should to be able to connect to the spacewalk server and use it’s package and configuration management facilities it is recommended to include the spacewalk client packages in a spacewalk channel as well. Now we will upload the packages directly from the online repository into a child channel of the just created CentOS channel.

In the spacewalk console navigate to:

“Channels” -> “Manage Software Channels” -> “Create New Channel”

Enter a reasonable channel name ( e.g. : “Spacewalk Client 1.5 – el6 – 64 Bit”), a channel label (e.g.  “swclnt1.5-el6-x86_64″), the correct architecture (x86_64) and the correct parent channel (e.g. : “CentOS 6.1 – 64 Bit”).

Populating spacewalk with the spacewalk client packages directly from the online repository is started by issuing the following command:

spacewalk-repo-sync -c swclnt1.5-el6-x86_64 –url http://spacewalk.redhat.com/yum/1.5-client/RHEL/6/x86_64

The spacewalk client has a dependency on the python-hwdata-1.2-1.el6.noarch.rpm package from the epel repository. Download the python-hwdata-1.2-1.el6.noarch.rpm package from the epel repositor http://download.fedora.redhat.com/pub/epel/6/x86_64/

and upload it to the spacewalk client child channel using the command (assuming you downloaded the rpm to a folder named epel):

rhnpush -v –channel=swclnt1.5-el6-x86_64 –server=http://localhost -dir=epel

Create a distribution

For automating the installation of a Linux system a method called kickstart can be used. First, we have to setup a directory structure on the spacewalk server based on content of the CentOS dvd1 iso. From your CentOS 6.1 dvd1, copy the following directories:

  • images
  • isolinux
  • repodata

to:
/var/distro-trees/centos6.1-x86_64

Next, open the spacewalk console and navigate to the following location:

systems -> kickstart -> distributions -> new distribution

Enter the following parameters for the new distribution:

  • Distribution label: centos6.1-x86_64
  • tree path: /var/distro-trees/centos6.1-x86_64
  • Base Channel: CentOS 6.1 – 64 Bit
  • Installer Generation: Red Hat Enterprise Linux 6

Next step is to create a kickstart profile for the channel and distribution. Open the spacewalk console and navigate to the following location:

systems -> kickstart -> create new kickstart profile

Enter the following parameters for the new kickstart profile:

  • Label: centos61-minimal
  • Base channel: CentOS 6.1 – 64 Bit
  • Kickstartable tree: centos6.1-x86_64
  • Virtualization type: none

To make sure the spacewalk client repository is used during kickstart, navigate to the following location:

systems -> kickstart -> profiles -> centos61-minimal -> operating system

Make sure the child channel swclnt1.5-el6-x86_64 is checked.

Also, have a look at the other tabs to have an idea of the configuration options which are available. Possible interesting area’s are:

  • Software: Adding extra packages or package groups in addition to the base installation. Add the package just by adding it on a new line, package groups can be added by an @-sign followed by the group name. A package can be excluded by an hyphen (-) followed by the package name
  • Kickstart details -> Details -> Kernel options: Adding and removing kernel options. You can add a kernel option, just by adding it’s key/value pair to the input field. Removal is done by just mentioning the kernel option preceded by an ! and giving it ~ as a value. For example, the value “!text=~ resolution=800×600″ in the kernel option box forces the use of the graphical installer (remove the text kernel option) and sets screen resolution to 800×600.
  • Kickstart details -> Advanced options: Allows detailed configuration of the kickstarted system. For example, to add an user,during installation, named weblogic with password weblogic01, tick the “user” checkbox and add the value “–name=weblogic –password=weblogic01 –plaintext” to the input field.
  • Kickstart details -> Variables: the usage of variables can be done by adding a key/value pair and refer to it in another tab. For example , to define the hostname during kickstart, add a key/value pair (hostname=appsrvr1) in the variables tab and refer to it in the Advanced options by adding “–hostname $hostname” to the network text box.

Let’s cobbler

Next step is to create an iso image to boot a new vm from.

Important note: In the next couple of steps we are going to deploy a new linux virtual machine. If the virtualization network setup supports a dns where the spacewalk server can be found by its hostname skip the next step.

In other words, your newly created vm must be able to find the spacewalk server using it’s hostname during boot/initial setup. If this is not the case or if you are unsure, please perform the following step to change the spacewalk hostname to its ip-address, if you are sure dns is in place you can skip this step:

In /etc/rhn/rhn.conf change the value of the parameter cobbler.host to the ip address of the spacewalk server.
In /etc/cobbler/settings change the value of the parameters server and redhat_management_server  to the ip-address of the spacewalk server.

On the spacewalk server, run the command (this only needs to be done once):

cobbler get-loaders

Next, start building the iso using the command:

cobbler buildiso

The result of the buildiso command is a file named generated.iso in the directory from where you issued the command.

Let’s kickstart

On your host, create a new virtual machine and provide it with the generated.iso file to boot from. Upon boot you will see a menu as shown below allowing you to specify the centos61-minimal setup to be installed.

spacewalk

Installation will take some time. After installation is finished we will configure this client to talk with spacewalk server.

Configuring spacewalk client

The following instructions are for configuring a Centos 6 box to talk to a Spacewalk server

Install the Spacewalk Client repo

[root@client~]# rpm -Uvh http://spacewalk.redhat.com/yum/1.7/RHEL/6/i386/spacewalk-client-repo-1.7-5.el6.noarch.rpm

Clean all the yum repos

[root@client~]# yum clean all

Install the required packages

[root@client~]# yum install rhn-client-tools rhn-check rhn-setup rhnsd m2crypto yum-rhn-plugin

Now you need to generate a activation key. The steps to do this are:

  1. Log into the Spacewalk web interface
  2. From the top navigation select Systems
  3. In the left navigation select Activation Keys
  4. In the top right hand corner click New Key
  5. Enter a name for this activation key and click Create Activation Key
  6. The activation key will then populate

On the client run the configuration tool. Replace the IP and activation key with those from your setup. Once done your computer will be visible in the list of systems in spacewalk.

[root@client~]# rhnreg_ks –serverUrl=http://x.x.x.x/XMLRPC –activationkey=1-414ace93e6c3e94c85aec54a653e761d

Note: x.x.x.x is your spacewalk server IP address

About Alex Hunt

Hi All I am Manish Kumar Jha aka Alex Hunt. I am currently working in VMware Software India Pvt Ltd as Operations System Engineer (vCloud Air Operations). I have around 5 Years of IT experience and have exposure on VMware vSphere, vCloud Director, RHEL and modern data center technologies like Cisco UCS and Cisco Nexus 1000v and NSX. If you find any post informational to you please press like and share it across social media and leave your comments if you want to discuss further on any post. Disclaimer: All the information on this website is published in good faith and for general information purpose only. I don’t make any warranties about the completeness, reliability and accuracy of this information. Any action you take upon the information you find on this blog is strictly at your own risk. The Views and opinions published on this blog are my own and not the opinions of my employer or any of the vendors of the product discussed.
This entry was posted in Linux/CentOS. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s