You are on page 1of 54

RED HAT SATELLITE

Username

Paş5Word
Getting Started with Satellite 6

Table of Contents
1. Introduction
2. Installation
i. Base Install
ii. Registration
iii. Attach Entitlements
iv. Installation
v. Initial Setup
3. Initial Configuration, adding Red Hat Repos
i. Creating the Manifest
ii. Prepare for Manifest Import
iii. Importing the Manifest
iv. Adding Red Hat Repositories
v. Syncronising Repositories
4. Lifecycle Environments
5. Content Views
i. Defining Content Views
6. Capsules / Smart Proxies
7. Configure the Server for Provisioning
i. Architectures
ii. Domains
iii. Activation Keys
iv. Partition Tables
v. Subnets
vi. Provisioning Templates
vii. Operating systems
8. Host Groups
i. Defining Host Groups
9. Host Creation
10. Troubleshooting
i. Locations and Organisations
ii. Capsules / Proxies
iii. Tasks
11. Next Steps

2
Getting Started with Satellite 6

Getting Started with Satellite 6

Introduction
Red Hats latest version of their Lifecycle Management tool, Red Hat Satellite 6, is a big change from earlier versions

Version 5 was based on the upstream, open source project called Spacewalk, which also included the Cobbler project,
where as the latest version is a combination of a few other open source projects - Katello & Foreman.

Foreman itself is also a cobination of open source code written by themselves and and open source project called Puppet
(by Puppet Labs). While Katello is also a combination of Candlepin and Pulp

As such, while the latest version has the potential to do much more and scale far beyond earlier versions, with this comes
some more complexity.

About the book


This book aims to get you up and running with Satellite 6 in the quickest possible time, so that you can start experiencing
the benefits it brings as soon as possible. It does not aim at being an in depth reference guide.

We shall use defaults where-ever possible

About you

You are someone who is familiar with administering Linux. You will hopefully have some experience of
installing/provisioning and Knowledge of Puppet would also be beneficial but not essential

Satellite 6 3
Getting Started with Satellite 6

Installation

Pre-Requisites
Before we start, you need

vanilla install of RHEL. (we will be using RHEL6, but RHEL7 is also supported)
valid entitlement for RHEL and entitlement for Satellite
a login to access.redat.com (for creating and downloading the manifest)

Firewall configuration
Its worth getting the firewall configured at this stage, so that we dont forget later. I shall assume a default firewall config
exists. Configure the firewall any way you feel confortable, there is a quick option below.

RHEL 6 Firewall

iptables -F
iptables -I INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -m state --state NEW -p tcp --dport 5671 -j ACCEPT
iptables -I INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -m state --state NEW -p tcp --dport 8140 -j ACCEPT
iptables -I INPUT -m state --state NEW -p tcp --dport 9090 -j ACCEPT
iptables -I INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
# And for the Capsule services
iptables -I INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
iptables -I INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT
iptables -I INPUT -m state --state NEW -p udp --dport 67 -j ACCEPT
iptables -I INPUT -m state --state NEW -p udp --dport 68 -j ACCEPT
iptables -I INPUT -m state --state NEW -p udp --dport 69 -j ACCEPT
service iptables save

RHEL 7 Firewall
RHEL 7 uses firewalld, which is new to all of us. Below are some simple steps to get the firewall setup as we need it

Start off by verifying what the default zone is

firewall-cmd --get-active-zones

You should see something like this that indicates its active zone is public

public
interfaces: eth0

OK, now we have verified that, lets take a look at the default rules in place

firewall-cmd --zone=public --list-all


...
(output omited)

Installation 4
Getting Started with Satellite 6

Of course this is not what we require, so lets add in all the ports we require including the ones for the additional capsules
(DNS & DHCP)

firewall-cmd --permanent --zone=public --add-port=80/tcp \


--add-port=443/tcp --add-port=5671/tcp --add-port=8140/tcp \
--add-port=9090/tcp --add-port=53/tcp --add-port=53/udp \
--add-port=67/udp --add-port=68/udp --add-port=69/udp

Now run that command again.

firewall-cmd --zone=public --list-all


public (default, active)
interfaces: eth0
sources:
services: dhcpv6-client ssh
ports: 443/tcp 80/tcp 8140/tcp 9090/tcp 67/udp 68/udp 53/tcp 69/udp 53/udp 5671/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

More information on what each of these ports are for can be found in Installation Guide Prerequisites

Installation 5
Getting Started with Satellite 6

Base Install
Start with a fresh installation of RHEL 6.6, which was installed via ISO. I prefer this, over templates or machines deployed
by Satellite/Foreman as it keeps it as clean as possible and there is no existing puppet configuration, might have lead to
problems later on

NOTE: I am currently working back through this book and adding in any RHEL7 specific steps

When installing, be sure to just use "Base" as the installation type.

Once installed, we will register the machine to Red Hat, and fully update it. Then we will change its Satellite version, add
some subscriptions and download its manifest file and get the Satellite software installed

Base Install 6
Getting Started with Satellite 6

Registration

I like to follow a very precise way of registering the box, one that I have worked out over many installation methods. While
its not the way currently mentioned in the official documentation, it works for me 100% of the time.

From a command prompt type the following

subscription-manager register --type=satellite

You will then be prompted for your credentials, enter them and the system should be correctly registered, but not
attached/consuming entitlements

At this point its important to logon to the Red Hat Customer Portal and set the version of Satellite to 6.0

Registration 7
Getting Started with Satellite 6

Attach Entitlements
OK, lets get a list of whats availble to you, you are specifically looking for the Pool IDs here

subscription-manager list --available --all|less

Search for the Satellite Subscription, as a Red Hat employee, some of the output I see is as follows, yours will look a little
different

Subscription Name: Red Hat Satellite Subscription


Provides: Red Hat Software Collections (for RHEL Server)
Red Hat Satellite Capsule
Red Hat Satellite
....

SKU: aaaabbbbccccddddeeeeffffgggghhh
SER---US
Pool ID:
Available: 17
Suggested: 1
Service Level: Self-Support
Service Type: L1-L3
Multi-Entitlement: No
Ends: 01/01/22
System Type: Physical

You are interested in the Pool ID of the subscription

You can attach this to your server as follows

subscription-manager attach --pool=aaaabbbbccccddddeeeeffffgggghhh

NOTE: If you get an error that reads like this

Too many content sets for certificate Red Hat Satellite Employee Subscription.
A newer client may be available to address this problem.
See kbase https://access.redhat.com/knowledge/node/129003 for more information.

then make sure you log on to Red Hat and select the verison of Satellite, as mentioned in the previous section. Be
sure to click the update button

You will then be able to attach to that pool. However, depending on your entitlemenmts, the pool you have atached to may
not have Software Collections. If this is the case, use subscription manager to list all availble pools and attach one that
contains Software Collections

This may enable too many repositories. The Satellite documentation makes clear which repositories you will need, and
shows how to disable the ones you dont.

RHEL 6 Repos

subscription-manager repos --disable "*"

subscription-manager repos --enable rhel-6-server-rpms \


--enable rhel-server-rhscl-6-rpms \

Attach Entitlements 8
Getting Started with Satellite 6

--enable rhel-6-server-satellite-6.0-rpms

Once done, check that you have access to exactly three repos

# yum repolist
...

rhel-6-server-rpms Red Hat Enterprise Linux 6 Server (RPMs) 12,913


rhel-6-server-satellite-6.0-rpms Red Hat Satellite 6.0 (for RHEL 6 Server) (RPMs) 345
rhel-server-rhscl-6-rpms Red Hat Software Collections RPMs for Red Hat Enterprise Linux 6 Server 1,269

RHEL 7 Repos

subscription-manager repos --disable "*"

subscription-manager repos --enable rhel-7-server-rpms \


--enable rhel-server-rhscl-7-rpms \
--enable rhel-7-server-satellite-6.0-rpms

Once done, check that you have access to exactly three repos

# yum repolist
...

rhel-7-server-rpms/7Server/x86_64 Red Hat Enterprise Linux 7 Server (RPMs) 5,326


rhel-7-server-satellite-6.0-rpms/7Server/x86_64 Red Hat Satellite 6.0 (for RHEL 7 Server) (RPMs) 478
rhel-server-rhscl-7-rpms/7Server/x86_64 Red Hat Software Collections RPMs for Red Hat Enterprise Linux 7 Server 1,939

Once you have confirmed that you have access to exactly those three repositories, carry on to the next part.

Attach Entitlements 9
Getting Started with Satellite 6

Installation
Now we have the correct repos configured, update the server with the latest updates from Red Hat.

yum -y update

Next we perform the actual instalation.

yum install katello

Installation 10
Getting Started with Satellite 6

Initial Setup
The katello-installer is used to perform the initial setup and any future changes to the existing config. Its a puppet based
installation and so can be re-run without overiding the previous settings.

We will create an "all-in-one" deployment, meaning that the Satellite will have the additional roles of TFTP proxy, DHCP
server and DNS server added at install time.

katello-installer --capsule-dns true --capsule-dns-forwarders \


8.8.8.8 --capsule-dns-interface eth0 --capsule-dns-zone \
example.com --capsule-dns-reverse 30.16.172.in-addr.arpa \
--capsule-dhcp true --capsule-dhcp-interface eth0 \
--capsule-dhcp-gateway 172.16.30.1 --capsule-tftp true

Note: forwarders are stored in /etc/named/options.conf should you wish to change them later.

A full list of other katello-setup options are available via

katello installer --help

Once the installer has finished, you should be able to login by pointing your browser to https://<servername> (assuming
you have made the necessary firewall changes).

Initial Setup 11
Getting Started with Satellite 6

Initial Configuration, adding Red Hat Repos


The following sections will cover adding different repositories (or repos) to the Satellite server, starting with the official Red
Hat repos.

Each type of repo can either be synchronised on demand or alternatively can be scheduled to synchronise on a regular
basis.

Before we can add Red Hat repositories, we need to create an organisation and location then create and import a manifest
file however.

Initial Configuration, adding Red Hat Repos 12


Getting Started with Satellite 6

Creating the Manifest


Login to access.redhat.com to generate our manefest file.

Locate the system, within access.redhat.com.

Be sure to re-set the Version, if it has become unset (as in the screenshot below) and hit Update

Then locate the "Attach a subscription" (bottom right in the screenshot below).

Navigate to the subscription you wish to add, select the checkbox on the left and enter a quantity on the right before
selecting Attach Selected

It may take some time to attach the subscription, as it will say on the screen (see screenshot below).

Hit refresh from time to time until it completes and then click on the Download Manifest button and save the mainfest
somewhere safe

Creating the Manifest 13


Getting Started with Satellite 6

Prepare for Manifest Import


Once the manifest has been created, we simple need to import it into our Satellite server.

However, first we must create our Organization and Location

Login to the Satellite web interface and select the Manage Organisation menu item

Click on the New Organisation button

and fill in the entries on the first page and hit submit

Prepare for Manifest Import 14


Getting Started with Satellite 6

This takes you to the second page (seen below). Here it is asking where to assign the existing node (the Satellite server
itself)

Prepare for Manifest Import 15


Getting Started with Satellite 6

Click the green Assign All

Now you will see that your new organisation has been created

Follow a similar process to create a location. I created a location called Europe

Prepare for Manifest Import 16


Getting Started with Satellite 6

Prepare for Manifest Import 17


Getting Started with Satellite 6

Importing the Manifest


Now that we have out Organisation and Location created, we should switch to them in order to import our manifest to the
correct place

In the first drop down menu, select your Organisation and Location In my case these were "Example Org" and "Europe"

The left side of your menu bar should look like this

Select Red Hat Subscriptions from the Content menu

Use the Browse and Upload buttons to locate and upload the manifest you downloaded earlier

Importing the Manifest 18


Getting Started with Satellite 6

Once that has imported successfully, you can proceed to selecting the Red Hat Repositories you wish to syncronise

Importing the Manifest 19


Getting Started with Satellite 6

Adding Red Hat Repositories


Once the manifest file has been imported, the repositories required need to be selected and syncronised

You will need three repositories at the very least to be selected

NOTE: I shall focus on provisioning RHEL 6.5 hosts in my example but if you prefer to stick with the latest version, its
better to use the 6Server repository

Red Hat Enterprise Linux 6 Server Kickstart

Red Hat Enterprise Linux 6 Server RPMs

Adding Red Hat Repositories 20


Getting Started with Satellite 6

RH Common RPMs

Adding Red Hat Repositories 21


Getting Started with Satellite 6

Adding Red Hat Repositories 22


Getting Started with Satellite 6

Syncronising Repositories
As mentioned at the earlier, repositories syncronisation can either be manually syncronised or configured to syncronsie on
a schedule

At this stage lets get the Red Hat repositories, that we need for provisioning to work, downloaded.

Select Sync Status from the Content menu

Click on the Expand All and Select All links and click on the Syncronise Now button

We will leave other Repsoitory types until later but there is no need to wait for those repositories to sync, we can proceed to
Lifecycle Environoments next

Syncronising Repositories 23
Getting Started with Satellite 6

Lifecycle Environments
Satellite 6 has the concept of Lifecycle Environments. These should generally match the names of your tiers, such as
Crash, Development, QA, Production etc etc

The idea is that your hosts or clients will exist in one of these tiers. A Content View describing how the host should be
configured is defined and pushed or promoted to the first tier (Crash in our example) where it is tested and refined before it
is promoted to the next environment for the next team to test. We will discuss Content Views in another section

Creating Lifecycle Environments is easy, simple select Lifecycle Environments from the Content Menu and click on
New Environment Path

Here is an example I created for the book, by defualt all repositories download to the built-in Library Environment.

In this book we shall be using the Library environment for simplicity. In reality you should be promting content to other
environments.

Lifecycle Environments 24
Getting Started with Satellite 6

Content Views
At this point we will have to wait for our Red Hat Repositories to be syncronised before we define content views.

Content views contain RPM packages from repos as well as puppet modules from puppet repos. Everything needed in
order to correctly configure the hosts.

Once defined, your content views will be published to the appropriate Lifecycle Environment

Content Views 25
Getting Started with Satellite 6

Defining Content Views


Once the repositories that we need are syncronised, we can get our content view created. The content view will create a
frozen view of the repositories until further updates are added to it and published

Click on the Content > Content Views menu

Fill in the Name and Label fields and click Save

On the Content tab, selected the repositories that you want to add to this view and click Add Repositories

As a bare minimum, for provisioning you will need

Red Hat Enterprise Linux 6 Server Kickstart x86_646.5


Red Hat Enterprise Linux 6 Server - RH Common RPMs x86_64

Depending in if you have changed the Provision Template you may also need

Red Hat Enterprise Linux 6 Server RPMs x86_646.5

If you want to include some Puppet Repositories, feel free, but for now we can leave those out. They will be covered later
on.

Now we need to Publish a new version of our Content View so that we can use it. Simply click the Publish New Version

The process will take time, progress can be tracked on the Tasks tab

Defining Content Views 26


Getting Started with Satellite 6

Capsules / Smart Proxies


Satellite 6 has the concept of Capsules which are anagalous to Smart Proxies in Foreman

A Capsule provides functionality to the Satellite server. Examples of Capsules are

DHCP Capsule - enabling Satellite 6 to reserve IP addresses on a DHCP server, including all the options necessary for
a PXE boot
DNS Capsule - enabling the Satellite to create, update and remove forward and reverse DNS records
Realm Capsule - enabling Satellite to create Kerberos Host Principles on a Kerberos Server
TFTP Capsule - enabling the Satellite server to place files required for PXE booting a Host
Puppet Capsule - Providing Puppet functionality to Satellite (usually the Satellite server itself)

These are usually, but not always, on remote servers and not on the main Satellite server itself. However, that said, in this
introductory session we configured our Satellite to have multiple local Capsules.

We chose to run TFTP,DHCP & DNS Capsules on our main Satellite server

Capsules can be found via the Infrastructure menu

Capsules / Smart Proxies 27


Getting Started with Satellite 6

Configure the Server for Provisioning


There are a number of things that need to be defined before we can add a new host to be provisioned.

The following items need to be defined

Architecture
Domain
Activation Key
Partition Table
Subnet
DHCP Proxy
DNS Proxy
Realm Proxy
TFTP Proxy
Provisioning Templates
Operating Systems

Each will be discussed in its own section

Configure the Server for Provisioning 28


Getting Started with Satellite 6

Architectures
First we will check that out architectures are present and visible in out Org/Location

Select your organisationa and location from the menu, then go to

Hosts > Architectures

and confirm that you see x86_64

If its not visible go to the "Any Organisation" and see if its there, if it is, click on it and make sure that you add the correct
Location and Oragisation to it. Then switch back to your organisation again

Architectures 29
Getting Started with Satellite 6

Domains
Next we do the same for Domains. The first domain should have been setup by the installer. With your orgainisation and
location selected, go to

Infrastructure > Domains

and check that your domain is visible.

If its not visible go to the "Any Organisation" and see if its there, if it is, click on it and make sure that you add the correct
Location and Oragisation to it. Then switch back to your organisation again

Domains 30
Getting Started with Satellite 6

Activation Keys
Now we shall create an Activation Key.

NOTE Unfortunatley the version of subscription manager shipped in RHEL6.5 (and below) does not function correctly
with Activation Keys. The default subscription_manager_registration snippet has a fix to ensure that the RH
Common repo is included, so that provisioning should work fine. RHEL6.6 and RHEL7 do work correctly.

Before doing this step, make sure your Content View has finished publishing

To create an activation key - click

Content > Activation Keys

followed by the New Activation Key button. Fill in the Name, select the Lifecycle Environment and Content View and
click Save

Once the key is created, make sure that the Release Version is set

and then go to the Subscriptions tab, to add your subscriptions.

Activation Keys 31
Getting Started with Satellite 6

Optionally, take a look on the Product Content to see if you you want change any of the defaults

Activation Keys 32
Getting Started with Satellite 6

Partition Tables
Next we check that our Partition tables are visible in our Org/Location. This should have been setup by the installer.

With your orgainisation and location selected, go to

Hosts > Partition Tables

and check that you can see Kickstart Default in there

Partition Tables 33
Getting Started with Satellite 6

Subnets
The next stop is to verify that our subnet is visible under our Org/Location. Navigate to

Infrastructrue > Subnets

If you cant see any, swicth to Any Organisation / Any Location and see if its there. If it is, then make sure that you move it to
your Org/Location

If you cant see it, then maybe we need to Import Subnets from our Capsule

Navigate to

Infrastructure > Capsules and use the pull down menu on your severs enty to Import Subnets

This will open up the Import subnets dialog. Fill in the details that are appropriate to your network segment

Once its created, click on it again and verify that its visible to your Location / Organisation.

Subnets 34
Getting Started with Satellite 6

While we are there, we will link our Domain to our Subnet from the Domains tab, by ticking the box

Next we will set our Capsules from the Capsule tab

Finally we hit Submit

Subnets 35
Getting Started with Satellite 6

Provisioning Templates
One of the changes from the beta version is that now, copies of provisioning templates are copied to your location and
organisation, but they are read only copies. You can see this from the small padlocks in the Locked Column

This is a nice last minute change (from the beta) as editing one template no longer affects other orgs.

If you want to change one of them, then you will need to clone it

The two that we require for provisioning are Kickstart default PXELinux and Satellite Kickstart Default. The later brings
in the subscription_manager_registration snippet also

Only one change is required at this point. For both Kickstart default PXELinux and Satellite Kickstart Default click on
them and go to the Association tab and associate them to the Operating System - in this case RHEL Server 6.5

Provisioning Templates 36
Getting Started with Satellite 6

Provisioning Templates 37
Getting Started with Satellite 6

Operating systems
Next we configure the Operating Systems. As my Satellite is running RHEL 6.5, the installation has already created one
entry for me, but we need to make the following changes. Go to

Hosts > Operating Systems

On the first tab, ensure that the Architectures entry has x86_64 ticked

On the Partion Table make sure that Kickstart Default is ticked

On the Templates tab, select the provisioning templates I mentioned earlier

and then hit Submit

Operating systems 38
Getting Started with Satellite 6

Host Groups
Rather than applying settings to an individual host, Satelliet6 uses hostgroups.

Multiple HostGroups can be added and they can also be nested in a hierachal manner.

Examples

DC North
Applications
Database
PostgSQL
MariaDB
Infrastructure
Online

DC South
Applications
Database
Oracle
Mongo
Infrastructure
Online
Webservers

The above heirachy would look like this in the UI

Configuration can be applied at any level.

For example, your DNS servers can be set at the top level (DC North/DC South) where as mailserver settings may be
defined lower down the hierachy

Host Groups 39
Getting Started with Satellite 6

Defining Host Groups


There are many things to set when you create a Host Group but this saves you having to define them for each host that
you create later on. Below is the process for creating a Host Group called DC North

Start off by going to

Configure > Host Groups

and click on New Nost Group

Configure your Host Group as follows

Host Group

Puppet Classes - skip for now

Network

Operating System

Defining Host Groups 40


Getting Started with Satellite 6

Parameters - skip

Locations Verify your location is set

Organisations verify you organisation is set

Activation Keys

remember to hit Submit

Defining Host Groups 41


Getting Started with Satellite 6

Host Creation
So, finally, we are in a position to get our first host provisioned.

From

Hosts > New Host

Enter the hostname (without the domain name) of your new host. The Organisation and Location fields should be correct
already. Select the Host Group from the dropdown, most other entries will now auto populate, with the exception of
Content Source. Select the Content Source

Now over on the Network tab, check that the Domain is correct (leave Realm empty) and paste in the MAC address of the
host you are provisioning. (check that IP is auto suggetsed - if not see troubleshooting section)

Verify that, on the Operating System Tab, that Architecture, Operating system, Media and Partition table are set and hit
Submit

After a few seconds a screen like this should appear

Host Creation 42
Getting Started with Satellite 6

Now power on the host to be provisioned.

The build should progress in these distint stages

The initial Amaconda package install stage

Next the post section will run, switching you to VT3 so that you can follow.

First it will register, via subscription-manager, to the Satellite

Host Creation 43
Getting Started with Satellite 6

Next it will install the katello-agent

This will be followed by a yum update

Host Creation 44
Getting Started with Satellite 6

After the full update, the final install will happen, it will install puppet

Finally, once puppet installs, it will configure puppet and inform the Satellite server that it is built

Host Creation 45
Getting Started with Satellite 6

Back on the Satellite Server, under , you will see the new host initally has a blue A (Active) next to it.
Hosts > All Hosts

This simply means that puppet has made changes during its initial run. It will change to a green O (no changes) next time
puppet runs -in about 30 mins time.

Also on the Satellite Server, check the status of the Content Hosts Hosts > Content Hosts

Click on the Content Host to see more details

Host Creation 46
Getting Started with Satellite 6

Host Creation 47
Getting Started with Satellite 6

Troubleshooting
Its quite possible, with all the configuration that we have just done, that we missed something or that a bug (this is a *.0
release afterall) has meant that we are unable to provision.

In this section I will give you a few places to check that have been common issues with my own Satellite configuration.

Troubleshooting 48
Getting Started with Satellite 6

Locations and Organisations

These are relatively new in the development lifecycle, and while the GA is better than the beta, there is still room for
improvement.

One of the quickest ways to ensure that everything you need is available in your Organisation and Location is to go to
Manage Organisations in the first menu.

Select your Organisation and scroll down until you see a list on the left of each of the components. Click on each one and
verify that it is in the Selected Items panel

Do exacy the same from the Manage Locations interface

Locations and Organisations 49


Getting Started with Satellite 6

Locations and Organisations 50


Getting Started with Satellite 6

Capsules / Proxies

If you are using DHCP / TFTP / DNS proxies, its always worth doublechecking your definitions.

Subnet
Go to you Subnet definition (Infrastructure > Subnets), and make sure that the Capsules page has the correct entries on it.

Domains
If you are using a DNS proxy, also verify the Domain entry (Infrastructure > Domains) has the DNS Capsule correctly set

Capsules / Proxies 51
Getting Started with Satellite 6

Tasks
From time to time a task with either get stuck or fail. The steps listed on this upstream webpage can be very useful to help
on these occasions

http://www.katello.org/docs/user_guide/troubleshooting/index.html

Tasks 52
Getting Started with Satellite 6

Next Steps
In the next book in the series, Next Steps with Satellite 6, I will cover

Adding Other Repositories


Third Party RPM Repositories
Puppet Repositories
Adding Existing Hosts to Satellite
Backing Up the Satellite
Working with Capsules

The sister book this one, Getting Started with Satellite 6 Command line is aimed to achieving the same results as this book
but by using only the command line interface, called Hammer

Other Books
Here are details of other books I have planned.

Getting Started with Satellite 6 (this book)


Getting Started with Satellite 6 Command line (sister book, partially completed)
Next Steps with Satellite 6 (Working on the outline)

Next Steps with Satellite 6 Command line (sister to the above book, not started)
Doing More with Satellite 6 (not started)
Doing More with Satellite 6 Command line (not started)

Next Steps 53

You might also like