Saturday 8 November 2014

Install Red Hat Satellite 6 in Disconnected Mode on RHEL 7

The server running katello-disconnected can itself be managed by a local Satellite server including Satellite 5. Pulp will still go to cdn.redhat.com and any other defined repositories for syncing the repositories.

Prerequisites:
  • RHEL 7
  • check networking to Red Hat Network
  • check host DNS entries, forward and reverse:
    • nslookup <hostname>
    • nslookup <ip address>
  • check NTP:
    • ntpq
Debug:
Example print statement for Ruby
STDERR.puts "Variable x is #{x.inspect}"
 
Register host with Red Hat Network:

subscription-manager register


Identify the "Pool Id" for your Satellite Entitlement:

subscription-manager list --available --all | sed -e '0,/^Subscription Name: Red Hat Satellite/ d' -e '/^$/,$ d'


Attach the Satellite Entitlement:

subscription-manager subscribe --pool=<pool_id>


Disable any existing repos:

subscription-manager repos --disable "*"


Enable the following repos:

subscription-manager repos --enable rhel-6-server-rpms --enable rhel-server-rhscl-6-rpms --enable rhel-6-server-satellite-6.0-rpms


Ensure the server's packages are up to date:

yum groupinstall \@base
yum update


Install katello-utils:

yum install python-qpid-qmf python-qpid qpid-cpp-server-store katello-utils


Configure the oauth_secret for the Pulp service:

pass=$(tr -dc "[:alnum:]" < /dev/urandom | head -c 32)
sed --in-place -e "/^\[oauth\]/ a \
enabled: true\noauth_key: katello\noauth_secret: $pass" /etc/pulp/server.conf


Disable authentication in qpid so the Satellite's default releam will be used:

sed --in-place -e '/^auth=/ s/yes/no/' /etc/qpid/qpidd.conf


Configure katello-disconnected to use Pulp's secret:

katello-disconnected setup --oauth-key=katello --oauth-secret=$pass


Configure the Pulp service to start now and on boot:

systemctl start qpidd
systemctl enable qpidd
systemctl start mongod
sleep 10
systemctl enable mongod
sudo -u apache pulp-manage-db
systemctl restart httpd
systemctl enable httpd
systemctl start pulp_workers
systemctl enable pulp_workers
systemctl start pulp_celerybeat
systemctl enable pulp_celerybeat
systemctl start pulp_resource_manager
systemctl enable pulp_resource_manager


Import the Satellite Manifest:

katello-disconnected import -m <manifest.zip>


Disable all repositories: (this is not disabling anything on mine as verified by katello-disconnected list)

katello-disconnected disable --all


View all disabled repositories:

katello-disconnected list --disabled > /root/available.repos
grep -v -e debug -e beta -e source -e -eus- available.repos | grep -- -x86_64$ | less


Enable the required repositories:

katello-disconnected enable --repos <repository_label>[,<repository_label>,...]

Eg.
katello-disconnected enable --repos rhel-6-server-kickstart-6Server-x86_64,rhel-6-server-extras-rpms--x86_64,rhel-6-server-optional-rpms-6Server-x86_64,rhel-6-server-rh-common-rpms-6Server-x86_64,rhel-6-server-rhev-agent-rpms-6Server-x86_64,rhel-6-server-rhn-tools-rpms-6Server-x86_64,rhel-6-server-rpms-6Server-x86_64,rhel-6-server-supplementary-rpms-6Server-x86_64,rhel-7-server-extras-rpms--x86_64,rhel-7-server-kickstart-7Server-x86_64,rhel-7-server-optional-rpms-7Server-x86_64,rhel-7-server-rh-common-rpms-7Server-x86_64,rhel-7-server-rhn-tools-rpms-7Server-x86_64,rhel-7-server-rpms-7Server-x86_64,rhel-7-server-supplementary-rpms-7Server-x86_64,puppet-forge


Create the repositories and push them to Pulp to allow synchronisation:

katello-disconnected configure


Sync a single repository as the "disable --all" repositories did not work earlier:

katello-disconnected sync -r rhel-7-server-rpms-7Server-x86_64


Tuesday 4 November 2014

Getting Started with RHEL 7

Fix the Host's Name

  • hostnamectl set-hostname pilot.spud.net.au
  • hostnamectl status
Well that was easy and dynamic. 
Reference:  http://www.itzgeek.com/how-tos/linux/centos-how-tos/change-hostname-in-centos-7-rhel-7.html#axzz3I3bWPTDI

Fix Networking

  • nmtui

Friday 4 April 2014

RHEL 6 Custom Installation DVD

The following procedure will create a custom RHEL 6 DVD ISO image file with the following attributes:
  • based on the original Red Hat installation DVD with all its features including rescue mode and the default Red Hat installation
  • changes the default boot menu  to "local boot" so you don't accidentally blow away a server!
  • adds a your own custom boot menu to the top of the list
  • adds your own custom kickstart script to the custom boot menu
I have added my "Core" kickstart file which:
  • installs on the first hard disk, virtual or physical
  • partition 1:  /boot ext4 512MB
  • partition 2: LVM VG "vg0" 2560MB
  • vg0/ROOT ext4 2048MB
  • vg0/SWAP swap 512MB
The idea is that the partitions, LVM volume group(s) and logical volumes as created/expanded by a later configuration script.  I purposely wanted to make this first installation generic but practical.  I am providing my configuration via a second DVD which will be mounted after the first reboot. 

There is no networking.  Packages are "core" plus a few more.  Please enjoy.

 Files

 Instructions

cd ISOs/

mkdir rhel6-dvd
mount -o loop,ro rhel-server-6.5-x86_64-dvd.iso rhel6-dvd/

mkdir rhel-server-6.5-x86_64-core-dvd
cp -av rhel6-dvd/. rhel-server-6.5-x86_64-core-dvd
umount rhel6-dvd  && rmdir rhel6-dvd

cp <.../ks-core-nonetwork.cfg> rhel-server-6.5-x86_64-core-dvd
sed -i -e '/menu default/d' \
   -e '/^label local/ a \
  menu default' rhel-server-6.5-x86_64-core-dvd/isolinux/isolinux.cfg
awk '/^label / && !found {print "label core\nmenu label ^Core installation of RHEL 6.5. First disk, no network.\nmenu default \nkernel vmlinuz \nappend initrd=initrd.img ks=cdrom:/ks-core-nonetwork.cfg"; found=1} 1' rhel-server-6.5-x86_64-core-dvd/isolinux/isolinux.cfg > /tmp/isolinux.cfg
mv -vf /tmp/isolinux.cfg rhel-server-6.5-x86_64-core-dvd/isolinux/isolinux.cfg

yum install genisoimage
mkisofs -r -T -J -V "RHEL Server 6.5-x86_64 Core" -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o rhel-server-6.5-x86_64-core-dvd.iso rhel-server-6.5-x86_64-core-dvd



Wednesday 1 January 2014

Building a Gentoo Mediatomb server

References:
  • http://www.gentoo.org/doc/en/handbook/handbook-amd64.xml?full=1
  • http://wiki.gentoo.org/wiki/MediaTomb
Used 2.9GB of disk to get to a fully functional Gentoo Mediatomb server with only 55 installed packages.

Below is a list of the commands I used to prepare a KVM virtual machine hosted on RHEL 6.  It starts with preparing the virtual disk which in this case a an LVM Logical Volume:

On host that is preparing Gentoo "/" file system (not chroot):

 1020  lvcreate -m 1 --mirrorlog mirrored -L10G -n vm_mediatomb-ROOT JD
 1021  fdisk /dev/JD/vm_mediatomb-ROOT
 1022  cfdisk /dev/JD/vm_mediatomb-ROOT
 1023  kpartx -l /dev/JD/vm_mediatomb-ROOT
 1024  kpartx -a /dev/JD/vm_mediatomb-ROOT
 1025  mkfs.ext4 -L mediatomb-ROOT /dev/mapper/JD-vm_mediatomb--ROOT1
 1027  cd /mnt
 1028  mkdir mediatomb
 1029  mount /dev/mapper/JD-vm_mediatomb--ROOT1 mediatomb
mkdir /root/tmp
cd /root/tmp
wget http://distfiles.gentoo.org/releases/amd64/autobuilds/current-stage3/stage3-amd64-20131226.tar.bz2
 1030  cd /mnt/mediatomb/
 1032  tar xvjpf /root/tmp/stage3-amd64-20131226.tar.bz2
 1034  cd etc
 1037  cp -L /etc/resolv.conf .
 1038  vim resolv.conf
vim portage/make.conf
• CFLAGS="-march=native -O2 -pipe"
• USE="mmx sse sse2 aac faac jpeg2k mmxext mp3 ssse3 threads twolame vorbis x264 xvid"
• MAKEOPTS="-j4"
• GENTOO_MIRRORS="rsync://rsync.au.gentoo.org"
• PORTAGE_RSYNC_INITIAL_TIMEOUT=45
• DONT_MOUNT_BOOT=1
ls ../usr/share/zoneinfo/Australia/Canberra
echo "Australia/Canberra" >timezone
cat timezone
vim locale.gen
blkid
vim fstab
vim conf.d/hostname
• hostname="mediatomb"
vim conf.d/net
• config_eth0="dhcp"
cd ..
mount -t proc none proc
mount --rbind /sys sys
mount --rbind /dev dev
chroot /mnt/mediatomb /bin/bash


On Gentoo chroot environment:
source /etc/profile
export PS1="(chroot) $PS1"
    4  ls -l /etc
    5  emerge-webrsync    # failed.  Played with mirrors and eventually "emerge --sync" worked instead.
    6  emerge --sync
    9  eselect news list
   14  eselect news read 1
   15  eselect news read 2
   16  eselect news read 3
   17  eselect news read 4
   18  eselect news read 5
   19  eselect news read 6
   20  eselect news purge
   21  eselect news list
   22  eselect profile list
   23  emerge --config sys-libs/timezone-data
   24  locale-gen
   25  locale -a
   26  eselect locale list
   27  eselect locale set 4
   28  env-update && source /etc/profile
   29  emerge gentoo-sources
   30  cd /etc/init.d
   34  ls
   35  ln -s net.lo net.eth0
   36  ls -l
   37  rc-update add net.eth0 default
   38  cd /usr/src
   41  ls -l
   42  cd linux
   43  make menuconfig
   44  make && make modules_install
   49  cp arch/x86_64/boot/bzImage /boot/kernel-3.10.17-gentoo
   52  ls -hl /boot/kernel-3.10.17-gentoo
passwd
 emerge -av vim syslog-ng logrotate vixie-cron dhcpcd sys-boot/grub
rc-update add sshd default
rc-update add syslog-ng default
vim /etc/conf.d/hwclock

emerge -av mediatomb


I could not get Grub2 to install from the above chroot-ed environment as the running virtual machine is just too different from this.  Therefore I used a Gentoo Installation ISO to start the VM and finish the Grub2 installation:

grub2-install /dev/vda
grub2-mkconfig -o /boot/grub/grub.cfg