Makefile | 4
Workshops/DeployingLinux/Author_Group.xml | 24
Workshops/DeployingLinux/Book_Info.xml | 29 -
Workshops/DeployingLinux/Common_Content/Feedback.xml | 45 -
Workshops/DeployingLinux/Makefile | 3
Workshops/DeployingLinux/Preface.xml | 12
Workshops/DeployingLinux/en-US/Appendix.xml | 138 +++++
Workshops/DeployingLinux/en-US/Author_Group.xml | 30 -
Workshops/DeployingLinux/en-US/Book_Info.xml | 48 -
Workshops/DeployingLinux/en-US/Chapter.xml | 25
Workshops/DeployingLinux/en-US/Common_Content/Feedback.xml | 45 +
Workshops/DeployingLinux/en-US/DeployingLinux.ent | 2
Workshops/DeployingLinux/en-US/DeployingLinux.xml | 12
Workshops/DeployingLinux/en-US/Deploying_Linux.ent | 4
Workshops/DeployingLinux/en-US/Deploying_Linux.xml | 334 +++++++++++++
Workshops/DeployingLinux/en-US/Preface.xml | 14
Workshops/PuppetWorkshop/Makefile | 5
Workshops/PuppetWorkshop/en-US/Preface.xml | 10
Workshops/PuppetWorkshop/en-US/Puppet_Workshop.ent | 5
Workshops/PuppetWorkshop/en-US/Puppet_Workshop.xml | 124 +++-
en-US/Courses.xml | 2
21 files changed, 687 insertions(+), 228 deletions(-)
New commits:
commit a6dd29303bb5f0f6c322d45b57a01fc1ec16422e
Author: Jeroen van Meeuwen (Fedora Unity) <kanarip(a)fedoraunity.org>
Date: Wed Nov 12 01:27:55 2008 +0100
Updates
diff --git a/Makefile b/Makefile
index a395170..ef5751d 100644
--- a/Makefile
+++ b/Makefile
@@ -18,6 +18,10 @@ int-workshop:
cp -a Workshops/PuppetWorkshop/en-US/* en-US/Books/Workshops/PuppetWorkshop/
cp -a en-US/Common_Content/Legal_Notice.xml
en-US/Books/Workshops/PuppetWorkshop/Common_Content/Legal_Notice.xml
cp -a en-US/Common_Content/Conventions.xml
en-US/Books/Workshops/PuppetWorkshop/Common_Content/Conventions.xml
+ mkdir -p en-US/Books/Workshops/DeployingLinux/
+ cp -a Workshops/DeployingLinux/en-US/* en-US/Books/Workshops/DeployingLinux/
+ cp -a en-US/Common_Content/Legal_Notice.xml
en-US/Books/Workshops/DeployingLinux/Common_Content/Legal_Notice.xml
+ cp -a en-US/Common_Content/Conventions.xml
en-US/Books/Workshops/DeployingLinux/Common_Content/Conventions.xml
html: clean int-workshop html-en-US
diff --git a/Workshops/DeployingLinux/Author_Group.xml
b/Workshops/DeployingLinux/Author_Group.xml
deleted file mode 100644
index c9ba622..0000000
--- a/Workshops/DeployingLinux/Author_Group.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<authorgroup>
- <author>
- <firstname>Jeroen</firstname>
- <surname>van Meeuwen</surname>
- <affiliation>
- <orgname>Operator Groep Delft</orgname>
- <orgdiv>Sr. System Engineer</orgdiv>
- </affiliation>
- <email>j.van.meeuwen(a)ogd.nl</email>
- </author>
- <author>
- <firstname>Stefan</firstname>
- <surname>Hartsuiker</surname>
- <affiliation>
- <orgname>Operator Groep Delft</orgname>
- <orgdiv>System Engineer</orgdiv>
- </affiliation>
- <email>s.hartsuiker(a)ogd.nl</email>
- </author>
-</authorgroup>
diff --git a/Workshops/DeployingLinux/Book_Info.xml
b/Workshops/DeployingLinux/Book_Info.xml
deleted file mode 100644
index 2c5296f..0000000
--- a/Workshops/DeployingLinux/Book_Info.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<bookinfo id="PuppetWorkshop-Product_Name_and_Version">
- <title>Puppet Workshop</title>
- <subtitle>Puppet Workshop</subtitle>
- <issuenum>0.1</issuenum>
- <productnumber>1</productnumber>
- <edition>1</edition>
- <pubsnumber>1</pubsnumber>
- <abstract><para>This is a Configuration Management workshop (based on
Puppet)</para></abstract>
- <corpauthor>
- <inlinemediaobject>
- <imageobject>
- <imagedata format='PNG'
fileref="Common_Content/images/title_logo.png" />
- </imageobject>
- </inlinemediaobject>
- </corpauthor>
- <copyright>
- <year>&YEAR;</year>
- <holder>&HOLDER;</holder>
- </copyright>
- <xi:include href="Common_Content/Legal_Notice.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Author_Group.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
-</bookinfo>
-
-
-
diff --git a/Workshops/DeployingLinux/Common_Content/Feedback.xml
b/Workshops/DeployingLinux/Common_Content/Feedback.xml
deleted file mode 100644
index 34b6b81..0000000
--- a/Workshops/DeployingLinux/Common_Content/Feedback.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<section>
- <title>We Need Feedback!</title>
- <indexterm>
- <primary>feedback</primary>
- <secondary>contact information for this manual</secondary>
- </indexterm>
- <para>
- We would love to see your feedback!
- </para>
- <para>
- Our mailing lists are as follows:
- <itemizedlist>
- <listitem>
- <formalpara>
- <title><ulink
url="http://lists.fedorahosted.org/mailman/listinfo/courses-users/&q...
/></title>
- <para>
- Our "users" mailing list where anyone can comment on
the course materials offered, provide other means of feedback and ask questions when
things appear to not be as clear as they intend to be.
- </para>
- </formalpara>
- </listitem>
- <listitem>
- <formalpara>
- <title><ulink
url="http://lists.fedorahosted.org/mailman/listinfo/courses-devel/&q...
/></title>
- <para>
- Our development mailing list for anyone seeking to get involved
in the project.
- </para>
- </formalpara>
- </listitem>
- <listitem>
- <formalpara>
- <title><ulink
url="http://lists.fedorahosted.org/mailman/listinfo/courses-commits/...
/></title>
- <para>
- This mailing list is used to send any changes made to any of the
documents to anyone subscribed.
- </para>
- </formalpara>
- </listitem>
- </itemizedlist>
- </para>
-</section>
-
-
diff --git a/Workshops/DeployingLinux/Makefile b/Workshops/DeployingLinux/Makefile
index 4b0291f..f8d7e2e 100644
--- a/Workshops/DeployingLinux/Makefile
+++ b/Workshops/DeployingLinux/Makefile
@@ -3,7 +3,8 @@
XML_LANG = en-US
DOCNAME = DeployingLinux
PRODUCT = Fedora
-BRAND = fedora
+BRAND = ogd
+#BRAND = fedora
#OTHER_LANGS = as-IN bn-IN de-DE es-ES fr-FR gu-IN hi-IN it-IT ja-JP kn-IN ko-KR ml-IN
mr-IN or-IN pa-IN pt-BR ru-RU si-LK ta-IN te-IN zh-CN zh-TW
diff --git a/Workshops/DeployingLinux/Preface.xml b/Workshops/DeployingLinux/Preface.xml
deleted file mode 100644
index d8e4a06..0000000
--- a/Workshops/DeployingLinux/Preface.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<preface id="PuppetWorkshop-Preface">
- <title>Preface</title>
- <para>
- paragraph
- </para>
- <xi:include href="Common_Content/Conventions.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Common_Content/Feedback.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
-</preface>
diff --git a/Workshops/DeployingLinux/en-US/Appendix.xml
b/Workshops/DeployingLinux/en-US/Appendix.xml
new file mode 100644
index 0000000..ca88d80
--- /dev/null
+++ b/Workshops/DeployingLinux/en-US/Appendix.xml
@@ -0,0 +1,138 @@
+<?xml version='1.0'?>
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<part id="DeployingLinux-Appendices">
+ <title>Appendices</title>
+ <appendix id="DeployingLinux-Appendix-DhcpConfiguration">
+ <title>DHCP Configuration</title>
+ <para>
+ Below is a sample DHCP configuration you can use:
+ </para>
+ <para>
+ <screen>#
+# DHCP Server Configuration file.
+# see /usr/share/doc/dhcp*/dhcpd.conf.sample
+#
+# ******************************************************************
+
+#
+# generated from cobbler dhcp.conf template ($date)
+#
+# ******************************************************************
+
+ddns-update-style interim;
+update-static-leases on;
+
+ignore client-updates;
+use-host-decl-names on;
+authorative;
+
+local-address <replaceable>2.2.2.1</replaceable>;
+
+##
+## Dynamic host magic
+##
+ddns-hostname = pick (option fqdn.hostname, option host-name,
+ concat ("dhcp-",
+ binary-to-ascii (10, 8, "-", leased-address));
+option host-name = config-option server.ddns-hostname;
+
+set vendorclass = option vendor-class-identifier;
+
+subnet <replaceable>2.2.2.0</replaceable> netmask
<replaceable>255.255.255.0</replaceable> {
+
+ authoritative;
+
+ ddns-domainname
"<replaceable>contoso.com</replaceable>";
+
+ option routers <replaceable>2.2.2.1</replaceable>;
+ option subnet-mask
<replaceable>255.255.255.0</replaceable>;
+ option domain-name
"<replaceable>contoso.com</replaceable>";
+ option domain-name-servers <replaceable>2.2.2.1</replaceable>;
+ option netbios-name-servers <replaceable>2.2.2.1</replaceable>;
+
+ pool {
+ range dynamic-bootp <replaceable>2.2.2.10</replaceable>
<replaceable>2.2.2.250</replaceable>;
+ default-lease-time 86400;
+ max-lease-time 86400;
+ }
+
+ allow bootp;
+ allow booting;
+ default-lease-time 21600;
+ max-lease-time 43200;
+ next-server <replaceable>2.2.2.1</replaceable>;
+ filename "/pxelinux.0";
+}
+
+zone <replaceable>contoso.com</replaceable>. {
+ primary 127.0.0.1;
+}
+zone <replaceable>2.2.2</replaceable>.in-addr.arpa. {
+ primary 127.0.0.1;
+}</screen>
+ </para>
+ </appendix>
+
+ <appendix id="DeployingLinux-Appendix-NamedConfiguration">
+ <title>Named Configuration</title>
+ <para>
+ <screen>//
+// Sample named.conf BIND DNS server 'named'
+// configuration file
+//
+options
+{
+ // Put files that named is allowed to write in the data/
+ // directory:
+ directory "/var/named"; // the default
+ dump-file "data/cache_dump.db";
+ statistics-file "data/named_stats.txt";
+ memstatistics-file "data/named_mem_stats.txt";
+
+ recursion yes;
+
+};
+
+logging
+{
+/* If you want to enable debugging, eg. using the 'rndc trace'
+ * command, named will try to write the 'named.run' file in
+ * the $directory (/var/named). By default, SELinux policy does
+ * not allow named to modify the /var/named directory, so put
+ * the default debug log file in data/:
+ */
+ channel default_debug {
+ file "data/named.run";
+ severity dynamic;
+ };
+};
+
+include "/etc/named.root.hints";
+
+zone "<replaceable>contoso.com</replaceable>" {
+ type master;
+ allow-update { 127.0.0.1; };
+ file "dynamic/<replaceable>contoso.com</replaceable>.zone";
+};
+
+zone "<replaceable>2.2.2</replaceable>.in-addr.arpa" {
+ type master;
+ allow-update { 127.0.0.1; };
+ file
"dynamic/<replaceable>2.2.2</replaceable>.in-addr.arpa.zone";
+};
+
+include "/etc/rndc.key";</screen>
+ </para>
+ </appendix>
+
+ <appendix id="DeployingLinux-Appendix-Kickstart">
+ <title>Kickstart</title>
+ <para>
+ lala
+ </para>
+ </appendix>
+
+ <xi:include href="Revision_History.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+</part>
diff --git a/Workshops/DeployingLinux/en-US/Author_Group.xml
b/Workshops/DeployingLinux/en-US/Author_Group.xml
index 474378e..88fd11f 100644
--- a/Workshops/DeployingLinux/en-US/Author_Group.xml
+++ b/Workshops/DeployingLinux/en-US/Author_Group.xml
@@ -3,14 +3,24 @@
]>
<authorgroup>
-
- <author>
- <firstname>Dude</firstname>
- <surname>McDude</surname>
- <affiliation>
- <orgname>My Org</orgname>
- <orgdiv>Best Div in the place</orgdiv>
- </affiliation>
- <email>dude.mcdude(a)myorg.org</email>
- </author>
+ <author>
+ <firstname>Jeroen</firstname>
+ <surname>van Meeuwen</surname>
+ <lineage>RHCE</lineage>
+ <affiliation>
+ <jobtitle>Sr. System Engineer</jobtitle>
+ <orgname>Operator Groep Delft</orgname>
+ </affiliation>
+ <email>j.van.meeuwen(a)ogd.nl</email>
+ </author>
+ <author>
+ <firstname>Stefan</firstname>
+ <surname>Hartsuiker</surname>
+ <lineage>RHCE</lineage>
+ <affiliation>
+ <jobtitle>System Engineer</jobtitle>
+ <orgname>Operator Groep Delft</orgname>
+ </affiliation>
+ <email>s.hartsuiker(a)ogd.nl</email>
+ </author>
</authorgroup>
diff --git a/Workshops/DeployingLinux/en-US/Book_Info.xml
b/Workshops/DeployingLinux/en-US/Book_Info.xml
index ca3249d..ec4aaf6 100644
--- a/Workshops/DeployingLinux/en-US/Book_Info.xml
+++ b/Workshops/DeployingLinux/en-US/Book_Info.xml
@@ -3,29 +3,31 @@
]>
<bookinfo id="DeployingLinux-Documentation">
- <title>DeployingLinux</title>
- <subtitle>short descriptor</subtitle>
- <productname>Documentation</productname>
- <productnumber>1</productnumber>
- <edition>1</edition>
- <pubsnumber>0</pubsnumber>
- <abstract>
- <para>A short overview and summary of the book's subject and purpose,
traditionally no more than one paragraph long. Note: the abstract will appear in the front
matter of your book and will also be placed in the #description field of the book's
RPM spec file.</para>
- </abstract>
- <corpauthor>
- <inlinemediaobject>
- <imageobject>
- <imagedata format='SVG'
fileref="Common_Content/images/title_logo.svg" />
- </imageobject>
- <textobject><phrase>Logo</phrase></textobject>
- </inlinemediaobject>
- </corpauthor>
- <copyright>
- <year>&YEAR;</year>
- <holder>&HOLDER;</holder>
- </copyright>
- <xi:include href="Common_Content/Legal_Notice.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Author_Group.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <title>Deploying Linux</title>
+ <subtitle>Automatically Install, Upgrade and Deploy Linux</subtitle>
+<!--
+ <productname>Workshop</productname>
+ <productnumber>1</productnumber>
+ <edition>1</edition>
+ <pubsnumber>0</pubsnumber>
+//-->
+ <abstract>
+ <para>A short overview and summary of the book's subject and purpose,
traditionally no more than one paragraph long. Note: the abstract will appear in the front
matter of your book and will also be placed in the #description field of the book's
RPM spec file.</para>
+ </abstract>
+<!-- <corpauthor>
+ <inlinemediaobject>
+ <imageobject>
+ <imagedata format='SVG'
fileref="Common_Content/images/title_logo.png" />
+ </imageobject>
+ <textobject><phrase>Logo</phrase></textobject>
+ </inlinemediaobject>
+ </corpauthor>-->
+ <copyright>
+ <year>&YEAR;</year>
+ <holder>&HOLDER;</holder>
+ </copyright>
+ <xi:include href="Common_Content/Legal_Notice.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Author_Group.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
</bookinfo>
diff --git a/Workshops/DeployingLinux/en-US/Chapter.xml
b/Workshops/DeployingLinux/en-US/Chapter.xml
deleted file mode 100644
index 319438a..0000000
--- a/Workshops/DeployingLinux/en-US/Chapter.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="DeployingLinux-Test">
- <title>Test</title>
- <para>
- This is a test paragraph
- </para>
- <section id="DeployingLinux-Test-Section_1_Test">
- <title>Section 1 Test</title>
- <para>
- Test of a section
- </para>
- </section>
-
- <section id="DeployingLinux-Test-Section_2_Test">
- <title>Section 2 Test</title>
- <para>
- Test of a section
- </para>
- </section>
-
-</chapter>
-
diff --git a/Workshops/DeployingLinux/en-US/Common_Content/Feedback.xml
b/Workshops/DeployingLinux/en-US/Common_Content/Feedback.xml
new file mode 100644
index 0000000..70a9275
--- /dev/null
+++ b/Workshops/DeployingLinux/en-US/Common_Content/Feedback.xml
@@ -0,0 +1,45 @@
+<?xml version='1.0'?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<section>
+ <title>Feedback</title>
+ <indexterm>
+ <primary>Feedback</primary>
+ <secondary>Contact Information for this manual</secondary>
+ </indexterm>
+ <para>
+ Should you find any discrepancies or additional information for this
documentation, we would appreciate to hear from you.
+ </para>
+ <para>
+ Our mailing lists are:
+ <itemizedlist>
+ <listitem>
+ <formalpara>
+ <title><ulink
url="http://lists.fedorahosted.org/mailman/listinfo/courses-users/&q...
/></title>
+ <para>
+ Our "users" mailing list where anyone can comment on
the course materials offered, provide other means of feedback and ask questions when
things appear to not be as clear as they intend to be.
+ </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title><ulink
url="http://lists.fedorahosted.org/mailman/listinfo/courses-devel/&q...
/></title>
+ <para>
+ Our development mailing list for anyone seeking to get involved
in the project.
+ </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title><ulink
url="http://lists.fedorahosted.org/mailman/listinfo/courses-commits/...
/></title>
+ <para>
+ This mailing list is used to send any changes made to any of the
documents to anyone subscribed.
+ </para>
+ </formalpara>
+ </listitem>
+ </itemizedlist>
+ </para>
+</section>
+
+
diff --git a/Workshops/DeployingLinux/en-US/DeployingLinux.ent
b/Workshops/DeployingLinux/en-US/DeployingLinux.ent
deleted file mode 100644
index eb212ee..0000000
--- a/Workshops/DeployingLinux/en-US/DeployingLinux.ent
+++ /dev/null
@@ -1,2 +0,0 @@
-<!ENTITY PRODUCT "Documentation">
-<!ENTITY BOOKID "DeployingLinux">
diff --git a/Workshops/DeployingLinux/en-US/DeployingLinux.xml
b/Workshops/DeployingLinux/en-US/DeployingLinux.xml
deleted file mode 100644
index 045bbf9..0000000
--- a/Workshops/DeployingLinux/en-US/DeployingLinux.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<book>
- <xi:include href="Book_Info.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Preface.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Chapter.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revision_History.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <index />
-</book>
-
diff --git a/Workshops/DeployingLinux/en-US/Deploying_Linux.ent
b/Workshops/DeployingLinux/en-US/Deploying_Linux.ent
new file mode 100644
index 0000000..333e0ef
--- /dev/null
+++ b/Workshops/DeployingLinux/en-US/Deploying_Linux.ent
@@ -0,0 +1,4 @@
+<!ENTITY PRODUCT "Documentation">
+<!ENTITY BOOKID "DeployingLinux">
+<!ENTITY HOLDER "Jeroen van Meeuwen">
+<!ENTITY YEAR "2008">
diff --git a/Workshops/DeployingLinux/en-US/Deploying_Linux.xml
b/Workshops/DeployingLinux/en-US/Deploying_Linux.xml
new file mode 100644
index 0000000..aa615a5
--- /dev/null
+++ b/Workshops/DeployingLinux/en-US/Deploying_Linux.xml
@@ -0,0 +1,334 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<book>
+ <xi:include href="Book_Info.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Preface.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <chapter id="DeployingLinux-Introduction">
+ <title>Introduction</title>
+ <para>
+ Cobbler is a Linux installation server that allows you to quickly set up a
network installation environment.
+ </para>
+ <para>
+ Cobbler can provision systems using PXE, media-based net installations,
virtualized installations (supporting Xen, QEMU, KVM and VMWare Server), according to
various defined <emphasis>distributions</emphasis> and
<emphasis>profiles</emphasis>. A <emphasis>distribution</emphasis>
in this case is a Linux Distribution such as Red Hat Enterprise Linux or openSUSE, and a
<emphasis>profile</emphasis> indicates what the target system should look like
(webserver, fileserver, desktop, ...). Besides these aspects of provisioning systems, it
can also help managing the infrastructure needed to deploy Linux, DHCP and DNS, as well as
the TFTP directories for PXE environments.
+ </para>
+ <para>
+ With all that comes a nice web interface you can use for administration,
including delegation of tasks.
+ </para>
+ <formalpara>
+ <title>Using PXE</title>
+ <para>
+ In this workshop, we will use PXE to provision systems. Using PXE has a
feww prerequisites, but results in the most efficient and thus beneficial provisioning
environment. A very minimal PXE environment would have at least one DHCP server and at
least one TFTP server. With these two servers, any system can boot anything offered by the
TFTP server (provided the offered materials are compatible with the system, of course).
+ </para>
+ </formalpara>
+ <para>
+ In order to be able to deploy Linux though, there's a few additional
requirements to the PXE environment:
+ </para>
+ <para>
+ <orderedlist>
+ <listitem>
+ <para>
+ If a system is to boot an installation procedure, the
installation procedure itself may need additional files to perform the installation.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ For automated installations (true provisioning), if the
installation procedure is supposed to get a couple of answers to questions it might have,
it will need these answers one way or the other
(<emphasis>kickstart</emphasis>, <emphasis>preseed</emphasis>,
<emphasis>autoyast</emphasis>).
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ </chapter>
+
+ <chapter id="DeployingLinux-HowThisWorks">
+ <title>How This Works</title>
+
+ <section id="DeployingLinux-HowThisWorks-UsingPXE">
+ <title>Using PXE</title>
+ <para>
+ Preboot eXecution Environment (<emphasis>PXE</emphasis>, or
<emphasis>pixie</emphasis>) is an environment to boot systems using a network
interface independently from available storage devices or installed operating systems.
+ </para>
+ <note>
+ <para>
+ The term <emphasis>PXE Client</emphasis> only applies to
the role the system takes in the PXE boot process. It can be a server, desktop, laptop or
any other system.
+ </para>
+ </note>
+ <para>
+ A PXE client broadcasts a DHCPDISCOVER message extended with PXE specific
options (<emphasis>extended DHCPDISCOVER</emphasis>) to port 67 over UDP (DHCP
server port). When PXE is properly configured in the environment, the DHCP Server will
respond with a broadcasted <emphasis>extended DHCPOFFER</emphasis> to port 68
over UDP (DHCP client port). This reply has to be broadcasted as the client does not yet
have an IP address.
+ </para>
+ <para>
+ The extended DHCPOFFER sent by the DHCP server contains the IP address
for the client as well as a few other options such as the TFTP server to use and the
filename (or <emphasis>path</emphasis> to the file actually) to load, possibly
verify and execute. This usually is a file called
"<emphasis>/pxelinux.0</emphasis>".
+ </para>
+ <para>
+ A PXE Environment has the following components:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <formalpara>
+ <title>DHCP Server</title>
+ <para>
+ A DHCP server configured to allow clients' BOOTP
requests.
+ </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>TFTP Server</title>
+ <para>
+ A Trivial File Transfer Protocol server to enable the
client to load the first stages and configuration for the PXE.
+ </para>
+ </formalpara>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ And in addition to this, when deploying Linux, you will need:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <formalpara>
+ <title>File Server</title>
+ <para>
+ A server that serves the files needed for the
installation. This typically includes the software packages to be installed, but also
images used for the installation procedure. Most Linux distributions will allow you to
either install from a NFS, FTP or HTTP source.
+ </para>
+ </formalpara>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ These three resources -the DHCP, TFTP and File server- will need to be
kept in sync for the framework to work properly. The TFTP server will need the
<filename>pxelinux.cfg</filename> files that correspond with the kickstart,
preseed or autoyast configuration files and installation trees available on the file
server. In addition, you will most likely have different
<emphasis>profiles</emphasis> for each distribution to be installed on your
systems, such as <emphasis>desktop</emphasis>,
<emphasis>laptop</emphasis> and <emphasis>server</emphasis>.
+ </para>
+ <para>
+ In addition, you may not be at the console at the time you provision a
server. Hence, you may be unable to have it boot from the network, select the correct menu
entry, and/or review logs related to the installation procedure.
+ </para>
+ <para>
+ Cobbler takes care of most of these problems, and during this workshop,
you will learn how.
+ </para>
+ </section>
+
+ <section
id="DeployingLinux-HowThisWorks-UsingInlineReplacement">
+ <title>Using Inline Replacement</title>
+ <para>
+ Inline Replacement is where the running operating system decides to
reboot into installation mode, using the appropriate
<filename>vmlinuz</filename> and <filename>initrd.img</filename>
for installing a system, booted with the parameters needed to start the (unattended)
installation procedure.
+ </para>
+ <para>
+ A utility called <literal>koan</literal> is included with
Cobbler, which lets you tell what Cobbler server to use (or discovers one on the network),
what distribution or profile to install, and reboots the system into installation mode.
This is ideal for bare metal provisioning; systems that do not support booting from the
network, or systems that reside on a network that does not have the boot-from-network
infrastructure.
+ </para>
+ </section>
+
+ <section id="DeployingLinux-HowThisWorks-UsingCdrom">
+ <title>Using a CD-ROM (set) or DVD (set)</title>
+ <para>
+ para
+ </para>
+
+ <section
id="DeployingLinux-HowThisWorks-UsingCdrom-CreatingACdrom">
+ <title>Creating A CD-ROM (set) or DVD (set)</title>
+ <para>
+ You may use any of the composing utilities offered by the
distribution in use to compose a CD-ROM (set) or DVD (set) of your own, and then use it to
install the distribution with.
+ </para>
+ </section>
+
+ </section>
+
+ </chapter>
+
+<!-- <chapter
id="DeployingLinux-InstallingAndConfiguringAPxeEnvironment">
+ <title>Installing and Configuring A PXE Environment</title>
+ <para>
+ For comparison.
+ </para>
+ </chapter>-->
+
+ <chapter id="DeployingLinux-InstallingAndConfiguringCobbler">
+ <title>Installing and Configuring Cobbler</title>
+ <para>
+ This part of the workshop lets you install Cobbler, and configure cobbler,
explaining some of the nifty features Cobbler has.
+ </para>
+
+ <section
id="DeployingLinux-InstallingAndConfiguringCobbler-Installation">
+ <title>Installation</title>
+ <para>
+ To install Cobbler, use the following command:
+ </para>
+ <para>
+ <screen># <userinput>yum install
cobbler</userinput></screen>
+ </para>
+ <para>
+ This will install the following packages:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ httpd
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ mod_python
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ python-devel
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ tftp-server
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ xinetd
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ createrepo
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ rsync
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ python-cheetah
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ On any other distribution then Fedora, or Red Hat Enterprise Linux or
CentOS with <ulink
url="http://fedoraproject.org/wiki/EPEL">EPEL</ulink> configured and
enabled, you will need to make sure these packages or their equivalents exist.
+ </para>
+ <para>
+ To finish Cobbler's installation, make sure the services related to a
PXE infrastructure are installed as well:
+ </para>
+ <para>
+ <screen># <userinput>yum install dhcp
named</userinput></screen>
+ </para>
+ <para>
+ The initial configuration for your dhcp and named server can be found in
<xref linkend="DeployingLinux-Appendix-DhcpConfiguration" /> and <xref
linkend="DeployingLinux-Appendix-NamedConfiguration" />.
+ </para>
+ <note>
+ <para>
+ The sample configuration files in the Appendices are for reference.
Cobbler is going to manage the DHCP server and Named server.
+ </para>
+ </note>
+
+ <section
id="DeployingLinux-InstallingAndConfiguringCobbler-Installation-CheckingTheInstallation">
+ <title>Checking The Installation</title>
+ <para>
+ There's a few commands you can use to check the installation you
are running. This can be useful in later diagnostics as well;
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <formalpara>
+ <title><userinput>cobbler
check</userinput></title>
+ <para>
+ Have cobbler check what else you may need to pay
attention to. Very useful diagnostic tool.
+ </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title><userinput>rpm -qV
<replaceable>cobbler</replaceable></userinput></title>
+ <para>
+ Verify that all the files that the package installs
are intact; compare them to the original state. In this case, the files installed by the
package <replaceable>cobbler</replaceable> are verified. Useful in tracing the
steps you have taken.
+ </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title><userinput>rpm -qld
<replaceable>cobbler</replaceable></userinput></title>
+ <para>
+ List all files marked as
<emphasis>documentation</emphasis>, in this case for the
<replaceable>cobbler</replaceable> package.
+ </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title><userinput>rpm -qlc
<replaceable>cobbler</replaceable></userinput></title>
+ <para>
+ List all files marked as
<emphasis>configuration</emphasis>, in this case for the
<replaceable>cobbler</replaceable> package.
+ </para>
+ </formalpara>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ </section>
+
+ <section
id="DeployingLinux-InstallingAndConfiguringCobbler-Configuration">
+ <title>Configuring Cobbler</title>
+ <para>
+ This section
+ </para>
+
+ <section
id="DeployingLinux-InstallingAndConfiguringCobbler-Configuration-ManageDhcp">
+ <title>Manage DHCP</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ <section
id="DeployingLinux-InstallingAndConfiguringCobbler-Configuration-ManageDns">
+ <title>Manage DNS</title>
+ <para>
+ para
+ </para>
+ </section>
+
+ </section>
+
+ </chapter>
+
+ <chapter id="DeployingLinux-PerformingAutomatedInstallations">
+ <title>Performing Automated Installations</title>
+ <para>
+ Provisioning rises or falls with the ability to perform automated
installations of a distribution. Most commonly, methods to perform automated installations
include answers to questions the installation procedure might have, package selection
(which is actually a question from the installater's point of view).
+ </para>
+
+ <section
id="DeployingLinux-PerformingAutomatedInstallations-RedhatCentosAndFedora">
+ <title>Fedora, Red Hat Enterprise Linux and CentOS</title>
+ <para>
+ Fedora, Red Hat Enterprise Linux, CentOS and derivative distributions use
kickstart to answer the questions of the normal installation procedure, as well as provide
additional customization support in the form of <literal>%pre</literal> and
<literal>%post</literal> scripts.
+ </para>
+ </section>
+
+ <section
id="DeployingLinux-PerformingAutomatedInstallations-DebianAndUbuntu">
+ <title>Debian and Ubuntu</title>
+ <para>
+ preseed
+ </para>
+ </section>
+
+ <section
id="DeployingLinux-PerformingAutomatedInstallations-SuseAndOpensuse">
+ <title>SUSE and openSUSE</title>
+ <para>
+ autoyast
+ </para>
+ </section>
+ </chapter>
+
+ <chapter id="DeployingLinux-ProvisionedSystemInitialConfiguration">
+ <title>Initial Configuration of the Provisioned System</title>
+ <para>
+ para
+ </para>
+ </chapter>
+
+ <xi:include href="Appendix.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+<!-- <index />-->
+</book>
+
diff --git a/Workshops/DeployingLinux/en-US/Preface.xml
b/Workshops/DeployingLinux/en-US/Preface.xml
index 0ab7049..1e3980e 100644
--- a/Workshops/DeployingLinux/en-US/Preface.xml
+++ b/Workshops/DeployingLinux/en-US/Preface.xml
@@ -3,11 +3,11 @@
]>
<preface id="DeployingLinux-Preface">
- <title>Preface</title>
- <xi:include href="Common_Content/Conventions.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Feedback.xml"
xmlns:xi="http://www.w3.org/2001/XInclude">
- <xi:fallback
xmlns:xi="http://www.w3.org/2001/XInclude">
- <xi:include href="Common_Content/Feedback.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- </xi:fallback>
- </xi:include>
+ <title>Preface</title>
+ <xi:include href="Common_Content/Conventions.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Common_Content/Feedback.xml"
xmlns:xi="http://www.w3.org/2001/XInclude">
+ <xi:fallback
xmlns:xi="http://www.w3.org/2001/XInclude">
+ <xi:include href="Common_Content/Feedback.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ </xi:fallback>
+ </xi:include>
</preface>
diff --git a/Workshops/PuppetWorkshop/Makefile b/Workshops/PuppetWorkshop/Makefile
index 22c7679..7e5e176 100644
--- a/Workshops/PuppetWorkshop/Makefile
+++ b/Workshops/PuppetWorkshop/Makefile
@@ -15,5 +15,6 @@ COMMON_CONFIG = /usr/share/publican
include $(COMMON_CONFIG)/make/Makefile.common
kanarip: pdf-en-US html-single-en-US
- rsync -rlHvz --delete --progress --rsh=ssh tmp/en-US/html-single/
pinky:/data/www/kanarip.com/www/public_html/courses/puppet/
- rsync -rlHvz --delete --progress --rsh=ssh tmp/en-US/pdf/Puppet_Workshop.pdf
pinky:/data/www/kanarip.com/www/public_html/courses/puppet/puppet.pdf
+ rsync -rlHvz --progress --rsh=ssh tmp/en-US/html-single/
pinky:/data/www/kanarip.com/www/public_html/courses/puppet/
+ rsync -rlHvz --progress --rsh=ssh tmp/en-US/pdf/Puppet_Workshop.pdf
pinky:/data/www/kanarip.com/www/public_html/courses/puppet/puppet.pdf
+ rsync -rlHvz --progress --rsh=ssh Puppet\ Workshop.odp
pinky:/data/www/kanarip.com/www/public_html/courses/puppet/puppet.odp
diff --git a/Workshops/PuppetWorkshop/en-US/Preface.xml
b/Workshops/PuppetWorkshop/en-US/Preface.xml
index 854b20d..dfba1f0 100644
--- a/Workshops/PuppetWorkshop/en-US/Preface.xml
+++ b/Workshops/PuppetWorkshop/en-US/Preface.xml
@@ -23,7 +23,7 @@
<formalpara>
<title>Contributors</title>
<para>
- <emphasis>Stefan Hartsuiker</emphasis> (RHCE, LPIC-2, MCP) is
currently a System Engineer, specialized in maintaining Linux Systems, also working for
Operator Group Delft in the Netherlands and a colleague of Jeroen van Meeuwen. His
experience with computers started in the late 80's with a Acorn Electron, a smaller
version of the BBC Electron (no it had nothing to do with the British Broadcasting
Company), for which he had to type in several pages worth of lines of code just to play a
game. His first introduction to Linux came in the early 90's with the slackware
distribution on about 32 floppies. Since then he has used and maintained Suse, Debian,
RedHat and Fedora systems.
+ <emphasis>Stefan Hartsuiker</emphasis> (RHCE, LPIC-2, MCP) is
currently a System Engineer, specialized in maintaining Linux Systems, also working for
Operator Groep Delft in the Netherlands and a colleague of Jeroen van Meeuwen. His
experience with computers started in the late 80's with a Acorn Electron, a smaller
version of the BBC Electron (no it had nothing to do with the British Broadcasting
Company), for which he had to type in several pages worth of lines of code just to play a
game. His first introduction to Linux came in the early 90's with the slackware
distribution on about 32 floppies. Since then he has used and maintained Suse, Debian,
RedHat and Fedora systems.
</para>
</formalpara>
<para>
@@ -31,12 +31,12 @@
</para>
</section>
-<!-- <section id="PuppetWorkshop-Preface-Acknowledgements">
- <title>Acknowledgements</title>
+ <section id="PuppetWorkshop-Preface-AdboutThisDocument">
+ <title>About this Document</title>
<para>
- Foo
+ This document is licensed under the Open Publication License version 1.0,
which is available at <ulink
url="http://www.opencontent.org/openpub/" />.
You can get the latest version from <ulink
url="http://www.kanarip.com/courses/puppet/puppet.pdf" />, and it's
sources live at <ulink
url="http://git.fedorahosted.org/git/courses.git?p=courses.git;a=tre...
/>.
</para>
- </section>-->
+ </section>
<xi:include href="Common_Content/Conventions.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="Common_Content/Feedback.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
diff --git a/Workshops/PuppetWorkshop/en-US/Puppet_Workshop.ent
b/Workshops/PuppetWorkshop/en-US/Puppet_Workshop.ent
new file mode 100644
index 0000000..217c9e0
--- /dev/null
+++ b/Workshops/PuppetWorkshop/en-US/Puppet_Workshop.ent
@@ -0,0 +1,5 @@
+<!ENTITY PRODUCT "Documentation">
+<!ENTITY BOOKID "PuppetWorkshop">
+<!ENTITY HOLDER "Jeroen van Meeuwen">
+<!ENTITY PROVIDER "Operator Groep Delft">
+<!ENTITY YEAR "2008">
diff --git a/Workshops/PuppetWorkshop/en-US/Puppet_Workshop.xml
b/Workshops/PuppetWorkshop/en-US/Puppet_Workshop.xml
index 34a3c03..0ef8ff8 100644
--- a/Workshops/PuppetWorkshop/en-US/Puppet_Workshop.xml
+++ b/Workshops/PuppetWorkshop/en-US/Puppet_Workshop.xml
@@ -20,7 +20,7 @@
</listitem>
<listitem>
<para><emphasis>Introduction to
Puppet</emphasis></para>
- <para>An introduction to how puppet resolves many of the issues
that exist without configuration management.</para>
+ <para>An introduction to how Puppet resolves many of the issues
that exist without configuration management.</para>
</listitem>
<listitem>
<para><emphasis>Puppet
Terminology</emphasis></para>
@@ -50,6 +50,7 @@
</listitem>
<listitem>
<para><emphasis>Best
Practices</emphasis></para>
+ <para>More Tips & Tricks on Puppet</para>
</listitem>
</itemizedlist>
</para>
@@ -170,7 +171,7 @@
<formalpara>
<title>Maintain consistency across
systems</title>
<para>
- Consistency across systems is key in understanding
where a problem might come from. If each and every system is unique, you may end up
searching for unique aspects of the system's configuration in order to determine the
cause of a problem, while if systems are mostly consistent and the exceptions to the rule
are determined or determinable, you may have found the problem even before your users
report it.
+ Consistency across systems is key in understanding
where a problem might come from and assessing where problems may be first introduced. If
each and every system is unique, you may end up searching for unique aspects of the
system's configuration in order to determine the cause of a problem, while if systems
are mostly consistent and the exceptions to the rule are easily determined, you may have
found the problem even before your users experience the consequences.
</para>
</formalpara>
<formalpara>
@@ -184,13 +185,13 @@
<formalpara>
<title>Categorize systems</title>
<para>
- Categorizing systems into categories like (for
example) <emphasis>desktop</emphasis>, <emphasis>server</emphasis>
and/or <emphasis>laptop</emphasis>, helps in applying changes to one category,
such as installing <application>GNOME</application> or keeping systems
up-to-date according to a schedule that may (servers) or may not (desktops, laptops) need
a service or maintenance window.
+ Grouping systems into categories like (for example)
<emphasis>desktop</emphasis>, <emphasis>server</emphasis> and/or
<emphasis>laptop</emphasis>, helps in applying changes to one category, such
as installing <application>GNOME</application> or keeping systems up-to-date
according to a schedule that may (servers) or may not (desktops, laptops) need a service
or maintenance window.
</para>
</formalpara>
<formalpara>
<title>Different profiles</title>
<para>
- More generally speaking, different profiles for each
of these categories may be defined as well, of course. A developer's desktop most
likely has different requirements then a publicly accessible booth at the reception desk.
+ More generally speaking, different profiles for each
of these categories may be defined as well. A developer's desktop most likely has
different requirements then a publicly accessible information booth at the reception
desk.
</para>
</formalpara>
</listitem>
@@ -198,7 +199,7 @@
<formalpara>
<title>Version Control</title>
<para>
- Version control lets you keep track of changes
applied to the overall configuration management framework, which is important because
since you are managing different aspects of a (large) number of systems, if something goes
wrong the changes applied to the configuration of puppet will most likely be the first
clue as to what caused the new problem and lets you recover relatively fast. Additionally,
version control adds a layer that also gives you the chance to perform access control, to
have notifications of changes applied sent to interested people, and to branch off.
+ Version control lets you keep track of changes
applied to the overall configuration management framework, which is important because if
you are managing different aspects of a (large) number of systems, and something goes
wrong, the changes applied to the configuration Puppet uses will most likely be the first
clue as to what caused the new problem and lets you recover relatively fast. Additionally,
version control adds a layer that also gives you the chance to perform access control, to
have notifications of changes applied sent to interested people, and to branch off.
</para>
</formalpara>
</listitem>
@@ -235,7 +236,7 @@
<formalpara>
<title>Different operating systems</title>
<para>
- If you have a diverse organization in terms of the
operating systems your systems run, applying the same configuration items to a set of
different operating systems is challenging in that adding a user or setting a password on
one operating system is not the same as adding a user or setting a password on another
operating system. The same applies to installing, updating or removing a package, and so
forth. Additionally the more different operating systems you have, the harder managing any
given system resource becomes. Some commands for day-to-day administrative tasks may be
equal, or similar, but most of them are and/or behave different.
+ If you have a diverse organization in terms of the
operating systems your systems run, applying the same or similar configuration to a set of
different operating systems is challenging in terms of adding a user or setting a password
on one operating system is not the same as adding a user or setting a password on another
operating system. The same applies to installing, updating or removing a package, and so
forth. Additionally the more different operating systems you have, the harder managing any
given <emphasis>system resource</emphasis> becomes. Some commands for
day-to-day administrative tasks may be equal, or similar, but most of them are and/or
behave different.
</para>
</formalpara>
</listitem>
@@ -251,7 +252,7 @@
<formalpara>
<title>Different versions of
distributions</title>
<para>
- Different versions of distributions, or more accurately
the different versions of the utilities, as well as the configuration settings for updated
programs that come with the distributions, can form a challenge when or if the
organization does not have a proper configuration management framework in place. Note that
even though an organization may not have different versions of a distribution right now,
at some point the organization will need to upgrade to the next available release.
+ Different versions of distributions, or, more accurately,
the different versions of the applications shipped with each distribution version, as well
as the configuration settings for updated programs that come with the distributions, can
form a challenge when or if the organization does not have a proper configuration
management framework in place. Note that even though an organization may not have
different versions of a distribution right now, at some point the organization will need
to upgrade to the next available release.
</para>
</formalpara>
</listitem>
@@ -267,7 +268,7 @@
<formalpara>
<title>Different ways to perform a task</title>
<para>
- Within an organization that has multiple servers
performing the same task, keeping a similar state or perform a task in a similar manner is
challenging in that without configuration management, you are most likely to find three or
more ways to purge old files from <filename>/tmp/</filename> and
<filename>/var/tmp/</filename>, for example. The same differentiation may
apply to how webservers' VirtualHosts are configured, or how a NFS share is mounted
(mount options in particular).
+ Within an organization that has multiple servers
performing the same task, keeping a similar state or perform a task in a similar manner is
challenging in the sense that without configuration management, you are most likely to
find more and more ways to purging old files from <filename>/tmp/</filename>
and <filename>/var/tmp/</filename>, for example. The same differentiation may
apply to how webservers' VirtualHosts are configured, or how a NFS share is mounted
(mount options in particular).
</para>
</formalpara>
</listitem>
@@ -275,7 +276,7 @@
<formalpara>
<title>Different nodes</title>
<para>
- This one goes to hardware-specific needs and
configuration. When each of the systems in an organization are not all of the same brand,
make and model, or each system has different harddisk layouts, or needs different
videocard drivers, you are basically keeping lists and making choices based on this list.
+ This one goes to hardware-specific needs and
configuration. When the systems in an organization are not all of the same brand, make and
model, or each system has different harddisk layouts, or needs different videocard
drivers, you are basically keeping lists and making choices based on those lists.
</para>
</formalpara>
</listitem>
@@ -283,7 +284,7 @@
<formalpara>
<title>Different services</title>
<para>
- Different services of course are configured differently,
as far as configuration file locations and syntax are concerned. However, figuring out the
best way to apply certain configuration to a system for each service is less efficient
without configuration management. You might adjust a script or two and/or adjust the
source repository from which you pull updates to each machine, but the changes may turn
out to only apply to that system that needed the exception to the rule instead of
focussing on a more general solution to the problem once, and apply that solution multiple
times, over and over again.
+ Different services of course are configured differently,
as far as configuration file locations and syntax are concerned. However, figuring out the
best way to apply certain configuration to a system for each service is less efficient
without configuration management. You might adjust a script or two and/or adjust the
source repository from which you pull updates to each system, but the changes may turn out
to only apply to that system that needed the exception to the rule instead of focussing on
a more general solution to the problem once, and apply that solution multiple times, over
and over again. Overview is key here, even if your standard environment exists of numerous
different profiles.
</para>
</formalpara>
</listitem>
@@ -291,7 +292,7 @@
<formalpara>
<title>Interfaces to a system resource</title>
<para>
- This is probably the hardest one if you are not using any
configuration management framework. Given different operating systems, distributions
and/or distribution versions, in which case any combination of the three only makes the
problem harder to solve, you are most likely to encounter so many different ways to manage
a given system resource, that a simple script or routine cannot cover all of them -and
remain comprehensible and maintainable. One example is adding a user to the system, and
making the user a group member of several groups. You may find routines ranging from using
<application>useradd</application> or
<application>adduser</application> depending on the distribution used, to
writing out ldifs from a template and using <application>ldapadd</application>
or <application>ldapmodify</application> depending on whether the user already
exists or not.
+ This is probably the hardest one if you are not using any
configuration management framework. Given different operating systems, distributions
and/or distribution versions, in which case any combination of the three only makes the
problem harder to solve, you are most likely to encounter so many different ways to manage
a given system resource, that a simple script or routine cannot cover all of them -and
remain comprehensible and maintainable. One example is adding a user to the system, and
making the user a group member of several groups. You may find routines ranging from using
<application>useradd</application> or
<application>adduser</application> depending on the distribution used, to
writing out ldifs from a template and using <application>ldapadd</application>
or <application>ldapmodify</application> depending on whether the user already
exists or not, and whether the user is a member of the group already.
</para>
</formalpara>
</listitem>
@@ -299,7 +300,7 @@
<formalpara>
<title>Fast pace changes</title>
<para>
- Changes that need to apply rather sooner then later are
often only applied by the time a crontab job polls for new configuration, or when a system
reboots. This does not work in cases where changes need to be applied quickly, such as
when a package installed on some or all systems exposes remotely exploitable
vulnerabilities.
+ Changes that need to be applied sooner rather then later
are often only applied by the time a crontab job polls for new configuration, or when a
system reboots. This does not work in cases where changes need to be applied quickly, such
as when a package installed on some or all systems exposes vulnerabilities that make the
system remotely exploitable.
</para>
</formalpara>
</listitem>
@@ -326,7 +327,7 @@
<formalpara>
<title>Keeping track of changes</title>
<para>
- Another challenge is keeping track of the changes applied
to each system. Even with configuration management, errors can be made and systems might
behave unexpectedly, in which case you will want to know what changed on these systems,
and how to recover to an operational state. Keeping track of changes without a
configuration management framework however is a little harder, but with configuration
management, you have reports (changes applied to a system in a nice overview), and most
advisebly you have the configuration for Puppet stored in a Source Control Management
system, or SCM system, like CVS, SVN, Mercurial, or GIT.
+ Another challenge is keeping track of the changes applied
to each system. Even with configuration management, errors can be made and systems may
behave unexpectedly, in which case you will want to know what changed on these systems,
and how to recover to an operational state. Keeping track of changes without a
configuration management framework however is a little harder, but with configuration
management, you have reports (changes applied to a system in a nice overview), and most
advisebly you have the configuration for Puppet stored in a Source Control Management
system, or SCM system, like CVS, SVN, Mercurial, or GIT.
</para>
</formalpara>
</listitem>
@@ -334,7 +335,7 @@
<formalpara>
<title>Staging changes</title>
<para>
- Staging changes is a huge must-have in case changes are
radical or might destroy a normal system's operation (even if temporary). For such
changes, you would want to test the changes first, and with Puppet, you get this in the
form of <emphasis>environments</emphasis>. Additionally, in case any critical
component needs to change, proper Change Management then requires you to Build &
Test the solution prior to implementation, often not a very bad idea to relieve stress in
case the implemented solution does not work, especially if the change is time-constrained
such as with service windows.
+ Staging changes is a huge must-have in case changes are
radical or might destroy a normal system's operation (even if temporary). For such
changes, you would want to test the changes first, and with Puppet, you get this in the
form of <emphasis>environments</emphasis>. Additionally, in case any critical
component needs to change, proper Change Management then requires you to Build &
Test the solution prior to implementation. This is often not a very bad idea to relieve
stress in case the implemented solution does not work, especially if the change is
time-constrained such as with service windows.
</para>
</formalpara>
</listitem>
@@ -342,7 +343,7 @@
<formalpara>
<title>Exceptions to the rule</title>
<para>
- As important as keeping systems consistent, is being able
to name and point out the exceptions to the rules that you set. Of course, every
organization has exceptions and until the point where high-availability, high-performance,
load-balancing or virtualization clusters are deployed (or storage pools for that matter),
no two systems are alike. Trying to keep a consistent configuration amongst all your
systems doesn't change that. Note though, being able to reproduce the reasoning behind
the exceptions to the rule is important in recovering from (unexpected) interruptions.
+ As important as keeping systems consistent is being able
to name and point out the exceptions to the rules that you set. Of course, every
organization has exceptions and until the point where high-availability, high-performance,
load-balancing or virtualization clusters are deployed (or storage pools for that matter),
no two systems are alike. Trying to keep a consistent configuration amongst all your
systems doesn't change that. Note though, being able to reproduce the reasoning behind
the exceptions to the rule is important in recovering from (unexpected) system or service
interruptions.
</para>
</formalpara>
</listitem>
@@ -350,7 +351,7 @@
<formalpara>
<title>Restoring a system</title>
<para>
- Restoring a system to it's normal operations often
requires you to have a backup of the most recent configuration files and transactional
data for the machine. Although configuration management with puppet does not facilitate
the backup of transactional data, it does facilitate the backup of configuration files,
taking away the rather boring task of having to select manually which items need to be
backed up and restored on a regular basis.
+ Restoring a system to it's normal operations often
requires you to have a backup of the most recent configuration files and transactional
data for the machine. Although configuration management with puppet does not facilitate
the backup of transactional data, it does facilitate the backup of configuration files,
taking away the rather boring task of having to manually select which items need to be
backed up on a regular basis, and restored when recovering the system.
</para>
</formalpara>
</listitem>
@@ -578,7 +579,7 @@ node
'<replaceable>node3.example.com</replaceable>' {
}</screen>
</para>
<para>
- While instead, since these are all desktops, we could create a
<filename>groups/desktop.pp</filename> that says:
+ While instead, since these are all using the same "profile",
<emphasis>desktop</emphasis>, we could create a
<filename>groups/desktop.pp</filename> that says:
</para>
<para>
<screen>class desktop {
@@ -641,7 +642,7 @@ node
'<replaceable>node1.example.com</replaceable>' inherits desktop {
<formalpara
id="PuppetWorkshop-PuppetTerminology-class">
<title>class</title>
<para>
- A class is a collection of resources applied to a node with a
single include statement. It groups together a comprehensible set of resources. A class
<emphasis>ypclient</emphasis> would manage the
<code>File["/etc/nsswitch.conf"]</code>,
<code>File["/etc/yp.conf"]</code>,
<code>Package["ypbind"]</code>, and
<code>Service["ypbind"]</code> resources.
+ A class is a collection of resources applied to a node with a
single <code>include</code> statement. It groups together a comprehensible set
of resources. A class <emphasis>yp::client</emphasis> would manage the
<code>File["/etc/nsswitch.conf"]</code>,
<code>File["/etc/yp.conf"]</code>,
<code>Package["ypbind"]</code>, and
<code>Service["ypbind"]</code> resources.
</para>
</formalpara>
</listitem>
@@ -795,7 +796,7 @@ FIXME:
</formalpara>
<warning>
<para>
- The time on both the puppetmaster and the puppet must be
within 5 minutes of eachother as the certificate generated and signed has a validity
period. If the difference in time of these two nodes is more then 5 minutes, you will get
a "Certificates not trusted" type of error.
+ The time on both the puppetmaster and the puppet cannot vary
more then 5 minutes as the certificate generated by the puppet and signed by the puppetca
has a validity period. The start time of this validity period is of importance as the
validity period has to have at least started by the time the puppet uses the certificate
--or else the signed certificate is considered invalid. If the difference in time of these
two nodes is more then 5 minutes, you will get a "Certificates not trusted" type
of error.
</para>
</warning>
</listitem>
@@ -803,7 +804,7 @@ FIXME:
<formalpara>
<title>The puppet generates all the facts</title>
<para>
- Most configurations rely on client information to make
decisions. When the Puppet client starts, it loads the Facter Ruby library, collects all
of the facts that it can, and passes those facts to the interpreter. When you use Puppet
over a network, these facts are passed over the network to the server and the server uses
them to compile the client's configuration.
+ Most configurations rely on client information to make
decisions. When the Puppet client starts, it loads the Facter Ruby library, collects all
the facts it can, and passes those facts to the interpreter. When you use Puppet over a
network, these facts are passed over the network to the server and the server uses them to
compile the client's configuration.
</para>
</formalpara>
</listitem>
@@ -1110,9 +1111,12 @@ debug: Calling fileserver.describe</screen>
<formalpara>
<title>certname</title>
<para>
- The puppetmaster
certificate's Common Name (CN), for which by default the system's hostname is
used. The hostname of the system is a pretty reasonable value.
+ The puppetmaster
certificate's Common Name (CN), for which by default the system's hostname is
used. The fully qualified domain name of the system is a pretty reasonable value.
</para>
</formalpara>
+ <para>
+ <screen>$
<userinput>hostname</userinput></screen>
+ </para>
</listitem>
<listitem>
<formalpara>
@@ -1209,6 +1213,13 @@ debug: Calling fileserver.describe</screen>
</para>
</section>
+ <section
id="PuppetWorkshop-SettingUpPuppet-Configuration-Puppetmaster-Fileserver">
+ <title>Configuring the fileserver</title>
+ <para>
+ Configuring the fileserver is more accurately described in
<xref linkend="PuppetWorshop-HowToUsePuppet-Fileserver-Operations" />.
+ </para>
+ </section>
+
<section
id="PuppetWorkshop-SettingUpPuppet-Configuration-Puppetmaster-Sitepp">
<title>Minimal site.pp</title>
<para>
@@ -1227,7 +1238,7 @@ node default {
<section
id="PuppetWorkshop-SettingUpPuppet-Configuration-Puppetmaster-ServiceConfiguration">
<title>Service Configuration</title>
<para>
- On Red Hat based systems, use
<filename>/etc/sysconfig/puppetmaster</filename> to configure the service. It
has three variables set, of which <code>PUPPETMASTER_MANIFEST</code> needs to
point to the default manifest to use.
+ On Red Hat based systems, use
<filename>/etc/sysconfig/puppetmaster</filename> to configure the service. It
has three variables set, of which <code>PUPPETMASTER_MANIFEST</code> needs to
point to the default manifest to use. Change the default only if you are not going to use
environment specific
</para>
</section>
@@ -1292,6 +1303,9 @@ node default {
}
}</screen>
</para>
+ <para>
+ Puppet on a Debian system will now direct the package manager to install
"openssh-client", while on other systems, the package manager is told to install
"openssh-clients".
+ </para>
<important>
<para>
Note that the name of this resource is now conditional, and thus
virtually unpredictable from within the rest of the manifests, but still if you wanted to
require the OpenSSH Client package you do not need to conditionally require the resource,
but instead can use the title of the resource, "openssh-clients".
@@ -1740,6 +1754,44 @@ class apache-ssl inherits apache {
<para>
Make sure you put the files and directories in place before
restarting the puppetmaster service.
</para>
+
+ <section
id="PuppetWorkshop-HowToUsePuppet-Environments-SettingUpEnvironments-ClientConfiguration">
+ <title>Client Configuration</title>
+ <para>
+ Setting the environment the puppet gets it's configuration
from is three-fold.
+ </para>
+ <para>
+ <orderedlist>
+ <listitem>
+ <para>
+ The environment you want to run the puppet in needs
to be a valid environment, and besides default valid environments
<emphasis>development</emphasis> and
<emphasis>production</emphasis>, additional environments need to be configured
using the <literal>environments</literal> setting in the
<code>[puppetd]</code> section of
<filename>/etc/puppet/puppet.conf</filename>:
+ </para>
+ <para>
+ <screen>[puppetd]
+ environments =
development<replaceable>,testing</replaceable>,production</screen>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ You can set the environment the puppet normally runs
against with the <literal>environment</literal> setting in the
<code>[puppetd]</code> section:
+ </para>
+ <para>
+ <screen>[puppetd]
+ environment = <replaceable>production</replaceable></screen>
+ </para>
+ <para>
+ The default environment for a puppet is
<emphasis>production</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The environment can be specified using the
<code>--environment</code> command-line option to
<application>puppetd</application>.
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ </section>
+
</section>
</section>
@@ -2260,11 +2312,19 @@ end</screen>
storeconfigs = true
dbadapter = mysql
dbserver = <replaceable>127.0.0.1</replaceable>
- dbuser = <replaceable>puppet</replaceable>
- dbpassword = <replaceable>puppet</replaceable>
+ dbuser = <replaceable>puppetuser</replaceable>
+ dbpassword = <replaceable>password</replaceable>
[dbsocket = /var/lib/mysql/mysql.sock]
</screen>
</para>
+ <para>
+ And create the database:
+ </para>
+ <para>
+ <screen># <userinput>mysql -p -e "CREATE DATABASE
<replaceable>puppetdb</replaceable>;"</userinput>
+# <userinput>mysql -p -e "GRANT ALL PRIVILEGES on
<replaceable>puppetdb</replaceable>.*
+ to <replaceable>puppetuser@localhost</replaceable> identified by
'<replaceable>password</replaceable>';"</userinput></screen>
+ </para>
</section>
<section
id="PuppetWorkshop-SettingUpPuppet-Configuration-DatabaseServer-Postgresql">
@@ -2279,22 +2339,22 @@ end</screen>
<screen>[puppetmasterd]
storeconfigs = true
dbadapter = postgresql
- dbuser = <replaceable>puppet</replaceable>
+ dbuser = <replaceable>puppetuser</replaceable>
dbpassword = <replaceable>password</replaceable>
dbserver = <replaceable>localhost</replaceable>
- dbname = <replaceable>puppet</replaceable></screen>
+ dbname = <replaceable>puppetdb</replaceable></screen>
</para>
<para>
And create the database:
</para>
<para>
<screen># <userinput>su - postgres</userinput>
-$ <userinput>psql template1</userinput>
-template1=# <userinput>create database
<replaceable>puppet</replaceable>;</userinput>
+$ <userinput>psql</userinput>
+postgres=# <userinput>create database
<replaceable>puppetdb</replaceable>;</userinput>
CREATE DATABASE
-<userinput>create user <replaceable>puppetuser</replaceable> with
unencrypted password
'<replaceable>password</replaceable>';</userinput>
+postgres=# <userinput>create user <replaceable>puppetuser</replaceable>
with unencrypted password
'<replaceable>password</replaceable>';</userinput>
CREATE ROLE
-template1=# <userinput>grant create on database
<replaceable>puppet</replaceable> to
<replaceable>puppetuser</replaceable>;</userinput>
+postgres=# <userinput>grant create on database
<replaceable>puppetdb</replaceable> to
<replaceable>puppetuser</replaceable>;</userinput>
</screen>
</para>
</section>
@@ -2522,7 +2582,7 @@ file { "/etc/httpd/conf/httpd.conf":
<formalpara>
<title>Services</title>
<para>
- This is kind of on a par with grouping, but the design
concept behind it is different. Instead of grouping together the same kind of
hardwareclass, group together the common function these nodes have.
+ This is kind of on a par with grouping, but the design
concept behind it is different. Instead of grouping together the same kind of
hardwareclass, group together the common function these nodes have.
</para>
</formalpara>
<para>
@@ -2559,6 +2619,8 @@ file { "/etc/httpd/conf/httpd.conf":
<xi:include href="Appendix.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+<!-- <index />-->
+
</book>
<!-- Local variables:
diff --git a/en-US/Courses.xml b/en-US/Courses.xml
index b250580..2bc4859 100644
--- a/en-US/Courses.xml
+++ b/en-US/Courses.xml
@@ -183,4 +183,6 @@
<xi:include href="Books/Workshops/PuppetWorkshop/Puppet_Workshop.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="Books/Workshops/DeployingLinux/Deploying_Linux.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+
</set>