Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

First commit

  • Loading branch information...
commit 849fe3a5210f069e10425fa39445d4059bab6d7e 0 parents
@adamhjk adamhjk authored
2  .gitignore
@@ -0,0 +1,2 @@
+.DS_Store
+build/*
153 Makefile
@@ -0,0 +1,153 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS =
+SPHINXBUILD = sphinx-build
+PAPER =
+BUILDDIR = build
+
+# Internal variables.
+PAPEROPT_a4 = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
+# the i18n builder cannot share the environment and doctrees with the others
+I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
+
+.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
+
+help:
+ @echo "Please use \`make <target>' where <target> is one of"
+ @echo " html to make standalone HTML files"
+ @echo " dirhtml to make HTML files named index.html in directories"
+ @echo " singlehtml to make a single large HTML file"
+ @echo " pickle to make pickle files"
+ @echo " json to make JSON files"
+ @echo " htmlhelp to make HTML files and a HTML help project"
+ @echo " qthelp to make HTML files and a qthelp project"
+ @echo " devhelp to make HTML files and a Devhelp project"
+ @echo " epub to make an epub"
+ @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+ @echo " latexpdf to make LaTeX files and run them through pdflatex"
+ @echo " text to make text files"
+ @echo " man to make manual pages"
+ @echo " texinfo to make Texinfo files"
+ @echo " info to make Texinfo files and run them through makeinfo"
+ @echo " gettext to make PO message catalogs"
+ @echo " changes to make an overview of all changed/added/deprecated items"
+ @echo " linkcheck to check all external links for integrity"
+ @echo " doctest to run all doctests embedded in the documentation (if enabled)"
+
+clean:
+ -rm -rf $(BUILDDIR)/*
+
+html:
+ $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+ @echo
+ @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+dirhtml:
+ $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+ @echo
+ @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+singlehtml:
+ $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
+ @echo
+ @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
+
+pickle:
+ $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+ @echo
+ @echo "Build finished; now you can process the pickle files."
+
+json:
+ $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+ @echo
+ @echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+ $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+ @echo
+ @echo "Build finished; now you can run HTML Help Workshop with the" \
+ ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+qthelp:
+ $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+ @echo
+ @echo "Build finished; now you can run "qcollectiongenerator" with the" \
+ ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+ @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/PrivateChefAdministrationGuide.qhcp"
+ @echo "To view the help file:"
+ @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/PrivateChefAdministrationGuide.qhc"
+
+devhelp:
+ $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
+ @echo
+ @echo "Build finished."
+ @echo "To view the help file:"
+ @echo "# mkdir -p $$HOME/.local/share/devhelp/PrivateChefAdministrationGuide"
+ @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/PrivateChefAdministrationGuide"
+ @echo "# devhelp"
+
+epub:
+ $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
+ @echo
+ @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
+
+latex:
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+ @echo
+ @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+ @echo "Run \`make' in that directory to run these through (pdf)latex" \
+ "(use \`make latexpdf' here to do that automatically)."
+
+latexpdf:
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+ @echo "Running LaTeX files through pdflatex..."
+ $(MAKE) -C $(BUILDDIR)/latex all-pdf
+ @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+text:
+ $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
+ @echo
+ @echo "Build finished. The text files are in $(BUILDDIR)/text."
+
+man:
+ $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
+ @echo
+ @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
+
+texinfo:
+ $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+ @echo
+ @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
+ @echo "Run \`make' in that directory to run these through makeinfo" \
+ "(use \`make info' here to do that automatically)."
+
+info:
+ $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+ @echo "Running Texinfo files through makeinfo..."
+ make -C $(BUILDDIR)/texinfo info
+ @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
+
+gettext:
+ $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
+ @echo
+ @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
+
+changes:
+ $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+ @echo
+ @echo "The overview file is in $(BUILDDIR)/changes."
+
+linkcheck:
+ $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+ @echo
+ @echo "Link check complete; look for any errors in the above output " \
+ "or in $(BUILDDIR)/linkcheck/output.txt."
+
+doctest:
+ $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+ @echo "Testing of doctests in the sources finished, look at the " \
+ "results in $(BUILDDIR)/doctest/output.txt."
0  build/keepme
No changes.
190 make.bat
@@ -0,0 +1,190 @@
+@ECHO OFF
+
+REM Command file for Sphinx documentation
+
+if "%SPHINXBUILD%" == "" (
+ set SPHINXBUILD=sphinx-build
+)
+set BUILDDIR=build
+set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source
+set I18NSPHINXOPTS=%SPHINXOPTS% source
+if NOT "%PAPER%" == "" (
+ set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
+ set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
+)
+
+if "%1" == "" goto help
+
+if "%1" == "help" (
+ :help
+ echo.Please use `make ^<target^>` where ^<target^> is one of
+ echo. html to make standalone HTML files
+ echo. dirhtml to make HTML files named index.html in directories
+ echo. singlehtml to make a single large HTML file
+ echo. pickle to make pickle files
+ echo. json to make JSON files
+ echo. htmlhelp to make HTML files and a HTML help project
+ echo. qthelp to make HTML files and a qthelp project
+ echo. devhelp to make HTML files and a Devhelp project
+ echo. epub to make an epub
+ echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
+ echo. text to make text files
+ echo. man to make manual pages
+ echo. texinfo to make Texinfo files
+ echo. gettext to make PO message catalogs
+ echo. changes to make an overview over all changed/added/deprecated items
+ echo. linkcheck to check all external links for integrity
+ echo. doctest to run all doctests embedded in the documentation if enabled
+ goto end
+)
+
+if "%1" == "clean" (
+ for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
+ del /q /s %BUILDDIR%\*
+ goto end
+)
+
+if "%1" == "html" (
+ %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The HTML pages are in %BUILDDIR%/html.
+ goto end
+)
+
+if "%1" == "dirhtml" (
+ %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
+ goto end
+)
+
+if "%1" == "singlehtml" (
+ %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
+ goto end
+)
+
+if "%1" == "pickle" (
+ %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished; now you can process the pickle files.
+ goto end
+)
+
+if "%1" == "json" (
+ %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished; now you can process the JSON files.
+ goto end
+)
+
+if "%1" == "htmlhelp" (
+ %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished; now you can run HTML Help Workshop with the ^
+.hhp project file in %BUILDDIR%/htmlhelp.
+ goto end
+)
+
+if "%1" == "qthelp" (
+ %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished; now you can run "qcollectiongenerator" with the ^
+.qhcp project file in %BUILDDIR%/qthelp, like this:
+ echo.^> qcollectiongenerator %BUILDDIR%\qthelp\PrivateChefAdministrationGuide.qhcp
+ echo.To view the help file:
+ echo.^> assistant -collectionFile %BUILDDIR%\qthelp\PrivateChefAdministrationGuide.ghc
+ goto end
+)
+
+if "%1" == "devhelp" (
+ %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished.
+ goto end
+)
+
+if "%1" == "epub" (
+ %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The epub file is in %BUILDDIR%/epub.
+ goto end
+)
+
+if "%1" == "latex" (
+ %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
+ goto end
+)
+
+if "%1" == "text" (
+ %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The text files are in %BUILDDIR%/text.
+ goto end
+)
+
+if "%1" == "man" (
+ %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The manual pages are in %BUILDDIR%/man.
+ goto end
+)
+
+if "%1" == "texinfo" (
+ %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
+ goto end
+)
+
+if "%1" == "gettext" (
+ %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
+ goto end
+)
+
+if "%1" == "changes" (
+ %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.The overview file is in %BUILDDIR%/changes.
+ goto end
+)
+
+if "%1" == "linkcheck" (
+ %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Link check complete; look for any errors in the above output ^
+or in %BUILDDIR%/linkcheck/output.txt.
+ goto end
+)
+
+if "%1" == "doctest" (
+ %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Testing of doctests in the sources finished, look at the ^
+results in %BUILDDIR%/doctest/output.txt.
+ goto end
+)
+
+:end
23 source/administration.rst
@@ -0,0 +1,23 @@
+##############
+Administration
+##############
+
+This section will guide you through the most common administrative tasks associated with Private Chef.
+
+- :doc:`private-chef-ctl </administration/private_chef_ctl>` :command:`private-chef-ctl` provides a CLI for controlling Private Chef.
+- :doc:`Logs </administration/logs>`: Information on what is logged by Private Chef, and how to use them for troubleshooting.
+- :doc:`User Management </administration/user_management>`: An overview of User Management.
+- :doc:`High Availability </administration/high_availability>`: An in-depth tour of the High Availability features of Private Chef.
+- :doc:`Troubleshooting </administration/troubleshooting>`: A guide to (hopefully uncommon) troubleshooting tasks.
+
+Section Contents:
+
+.. toctree::
+
+ administration/private_chef_ctl
+ administration/logs
+ administration/user_management
+ administration/high_availability
+ administration/troubleshooting
+
+
287 source/conf.py
@@ -0,0 +1,287 @@
+# -*- coding: utf-8 -*-
+#
+# Private Chef Administration Guide documentation build configuration file, created by
+# sphinx-quickstart on Wed Feb 22 13:50:49 2012.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys, os
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#sys.path.insert(0, os.path.abspath('.'))
+
+# -- General configuration -----------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+#needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.todo']
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+#source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'Private Chef Administration Guide'
+copyright = u'2012, Opscode, Inc.'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = '1.0.1'
+# The full version, including alpha/beta/rc tags.
+release = '1.0.1-1'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = []
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'emacs'
+
+# highlight_language = 'ruby'
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+
+# -- Options for HTML output ---------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages. See the documentation for
+# a list of builtin themes.
+html_theme = 'sphinxdoc'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further. For a list of options available for each theme, see the
+# documentation.
+#html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = []
+
+# The name for this set of Sphinx documents. If None, it defaults to
+# "<project> v<release> documentation".
+html_title = "Private Chef Administration Guide v1.0.1-1"
+
+# A shorter title for the navigation bar. Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_domain_indices = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+#html_show_sourcelink = True
+
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+#html_show_sphinx = True
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+#html_show_copyright = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it. The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# This is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = None
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'PrivateChefAdministrationGuidedoc'
+
+
+# -- Options for LaTeX output --------------------------------------------------
+
+latex_elements = {
+# The paper size ('letterpaper' or 'a4paper').
+#'papersize': 'letterpaper',
+
+# The font size ('10pt', '11pt' or '12pt').
+#'pointsize': '10pt',
+
+# Additional stuff for the LaTeX preamble.
+#'preamble': '',
+}
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, documentclass [howto/manual]).
+latex_documents = [
+ ('index', 'PrivateChefAdministrationGuide.tex', u'Private Chef Administration Guide',
+ u'Opscode, Inc.', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# If true, show page references after internal links.
+#latex_show_pagerefs = False
+
+# If true, show URL addresses after external links.
+#latex_show_urls = False
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_domain_indices = True
+
+
+# -- Options for manual page output --------------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+ ('index', 'privatechefadministrationguide', u'Private Chef Administration Guide',
+ [u'Opscode, Inc.'], 1)
+]
+
+# If true, show URL addresses after external links.
+#man_show_urls = False
+
+
+# -- Options for Texinfo output ------------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+# dir menu entry, description, category)
+texinfo_documents = [
+ ('index', 'PrivateChefAdministrationGuide', u'Private Chef Administration Guide ',
+ u'Opscode, Inc.', 'PrivateChefAdministrationGuide', 'One line description of project.',
+ 'Miscellaneous'),
+]
+
+# Documents to append as an appendix to all manuals.
+#texinfo_appendices = []
+
+# If false, no module index is generated.
+#texinfo_domain_indices = True
+
+# How to display URL addresses: 'footnote', 'no', or 'inline'.
+#texinfo_show_urls = 'footnote'
+
+
+# -- Options for Epub output ---------------------------------------------------
+
+# Bibliographic Dublin Core info.
+epub_title = u'Private Chef Administration Guide'
+epub_author = u'Opscode, Inc.'
+epub_publisher = u'Opscode, Inc.'
+epub_copyright = u'2012, Opscode, Inc.'
+
+# The language of the text. It defaults to the language option
+# or en if the language is not set.
+#epub_language = ''
+
+# The scheme of the identifier. Typical schemes are ISBN or URL.
+#epub_scheme = ''
+
+# The unique identifier of the text. This can be a ISBN number
+# or the project homepage.
+#epub_identifier = ''
+
+# A unique identification for the text.
+#epub_uid = ''
+
+# A tuple containing the cover image and cover page html template filenames.
+#epub_cover = ()
+
+# HTML files that should be inserted before the pages created by sphinx.
+# The format is a list of tuples containing the path and title.
+#epub_pre_files = []
+
+# HTML files shat should be inserted after the pages created by sphinx.
+# The format is a list of tuples containing the path and title.
+#epub_post_files = []
+
+# A list of files that should not be packed into the epub file.
+#epub_exclude_files = []
+
+# The depth of the table of contents in toc.ncx.
+#epub_tocdepth = 3
+
+# Allow duplicate toc entries.
+#epub_tocdup = True
28 source/index.rst
@@ -0,0 +1,28 @@
+.. Private Chef Administration Guide documentation master file, created by
+ sphinx-quickstart on Wed Feb 22 13:50:49 2012.
+ You can adapt this file completely to your liking, but it should at least
+ contain the root `toctree` directive.
+
+.. note::
+
+ Unless otherwise stated, all the commands in this manual should be run
+ as root, either directly or via the :command:`sudo` command.
+
+Private Chef Administration Guide
+#################################
+
+Contents:
+
+.. toctree::
+ :maxdepth: 2
+
+ installation
+ administration
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+
32 source/installation.rst
@@ -0,0 +1,32 @@
+############
+Installation
+############
+
+We’re excited to help you install Private Chef!
+
+Your first step is to make sure you meet the :doc:`universal prerequisites </installation/prereqs>` - regardless of how you install Private Chef, you'll need to make sure these steps are complete.
+
+Next, this guide provides details on 3 different installation options:
+
+- :doc:`Standalone </installation/standalone>` Private Chef on a single server
+- :doc:`Tiered </installation/tiered>`: Private Chef on multiple servers
+- :doc:`High Availability </installation/ha>`: Private Chef on multiple servers with a highly available data storage layer
+
+Your Opscode representative can provide guidance on which option is
+right for your environment. If you are in doubt, follow the
+**standalone** installation.
+
+Once you have Private Chef installed, you'll want to move on to :doc:`creating a user </installation/user_creation>` and :doc:`creating an organization </installation/org_creation>`.
+
+
+Section Contents:
+
+.. toctree::
+
+ installation/prereqs
+ installation/standalone
+ installation/tiered
+ installation/ha
+ installation/user_creation
+ installation/org_creation
+
BIN  source/installation/click_to_create_org.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  source/installation/create_org_button.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  source/installation/create_user_click_signup.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  source/installation/download_key_and_knife.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  source/installation/download_private_key.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  source/installation/getting_to_your_user_profile.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
643 source/installation/ha.rst
@@ -0,0 +1,643 @@
+High Availability Installation
+==============================
+
+The high availability installation allows you to install Private Chef on
+multiple servers, in order to scale portions of the service
+horizontally, with a highly available back-end infrastructure. This is
+our recommended configuration for production utilization of Private
+Chef.
+
+We refer to all the servers in a particular installation of Private Chef
+as a “cluster”.
+
+Overview
+--------
+
+The high availability installation consists of multiple front-end
+servers talking to a pair of clusterd back-end server. This allows for a
+higher level of concurrency on API requests, while scaling the back-end
+servers vertically to handle the increased I/O load.
+
+System Requirements
+-------------------
+
+- 8 total cores 2.0 Ghz AMD 41xx/61xx CPUs or faster
+- 16GB RAM
+- 2 x 300GB SAS RAID1 drives
+- Hardware RAID card
+- 1 x GigE NIC interface
+- 20 GB of free disk space in ``/opt``
+- 40 GB of free disk space in ``/var``
+
+.. note::
+
+ While you can certainly run private chef on smaller systems, our
+ assumption with the Tiered and High Availability installations are that
+ they are intended for production use. The above configuration is rated
+ at 1,500 nodes converging every 5 minutes.
+
+This architecture consists of two “back-end” servers, with as many
+“front-end” servers as you desire.
+
+Network Requirements
+--------------------
+
+Back-End Networking
+~~~~~~~~~~~~~~~~~~~
+
+The back-end servers utilize `DRBD <http://www.drbd.org>`_, a distributed
+block device, to ensure that data written to disk on one back-end server
+is efficiently replicated to another. For optimal performance and
+reliability, we recommend that:
+
+- Your back-end servers have a 100M+ ethernet interface cross-connected
+ to the other, for the cluster keepalive signal.
+- Your back-end servers have a 10G+ ethernet interface cross-connected
+ to the other, for DRBD data replication.
+
+This is in addition to the standard network interfaces on your systems.
+While DRBD replication can function on systems without these additional
+network interfaces, this configuration gives maximum performance and
+reliability.
+
+Back-End Virtual IP Address
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The back-end servers will share a Virtual IP Address (which we will
+refer to later as the ``back-end vip``), which needs to be accessible
+from the front-end servers.
+
+Back-End disk configuration
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+We recommend that you have disks entirely dedicated to storing the data
+for your Private Chef installation, and they should be:
+
+- Utilizing Hardware RAID
+- Be configured in either RAID[STRIKEOUT:1 or RAID]5
+- Be identical across both of your back-end servers
+
+Our recommended configuration utilizes the Linux Logical Volume Manager
+(LVM) as the backing store for DRBD. Assuming:
+
+- You have 1TB of raw, unpartitioned disk space
+- It presents as a single device, ``/dev/sdb``
+- The storage should be added to a volume group named ``opscode``
+- And in a logical volume group named ``drbd``
+- The volume group should have adequate space to enable LVM snapshots
+ to be used for backups (at least 40GB)
+
+The following commands would properly set up the back-end disk
+configuration for DRBD:
+
+*Setting up LVM for DRBD*
+
+.. code-block:: bash
+
+ $ pvcreate /dev/sdb
+ $ vgcreate opscode /dev/sdb
+ $ lvcreate -L 900G drbd opscode
+
+.. warning::
+ Talk with your systems administrators about disk configuration if you
+ are at all uncertain of how to configure a new logical volume with LVM,
+ as the operations can be destructive.
+
+Load Balancing
+~~~~~~~~~~~~~~
+
+As you are running multiple API front-ends, you will need to provide a
+mechanism for load-balancing the requests between them. We recommend
+using either a hardware or software load-balancer configured for
+round-robin.
+
+You will want to create a DNS entry for the load balanced VIP, which you
+will use to access the cluster - we will refer to this later as the
+``api_fqdn``.
+
+Firewalls
+~~~~~~~~~
+
+If you are using host-based firewalls (iptables, ufw, etc.) you will
+want to ensure that the following ports are open on each of the
+front-end servers:
+
+==== =======
+Port Used by
+==== =======
+80 nginx
+443 nginx
+9672 nrpe
+==== =======
+
+On the back-end servers:
+
+==== =======
+Port Used by
+==== =======
+80 nginx
+443 nginx
+9671 nginx
+9680 nginx
+9685 nginx
+9683 nginx
+9672 nrpe
+5984 couchdb
+8983 opscode-solr
+5432 postgresql
+5672 rabbitmq
+6379 redis
+7788 drbd
+==== =======
+
+Refer to your operating systems manual, or your site systems
+administrators, for instructions on how to enable this change.
+
+Create your private-chef.rb configuration file
+----------------------------------------------
+
+Each private chef cluster has a single configuration file, which
+describes the topology of the entire cluster. This file lives in
+``/etc/opscode/private-chef.rb`` on each server. In the text editor of
+your choice, create a file called “private-chef.rb” now.
+
+Set the topology
+~~~~~~~~~~~~~~~~
+
+Add the following line to your configuration file:
+
+*Set the topology in private-chef.rb*
+
+.. code-block:: ruby
+
+ topology “ha”
+
+This lets private chef know that these servers will be in a horizontally
+scalable configuration with a highly-available back-end.
+
+Add entries for the back-end servers
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Nominate one of your back-end servers as the “bootstrap” server. For
+that server, add the following:
+
+*Create the back-end boostrap server entry in private-chef.rb*
+
+.. code-block:: ruby
+
+ server “FQDN”,
+ :ipaddress => “IPADDRESS”,
+ :role => “backend”,
+ :bootstrap => true
+
+Replace ``FQDN`` with the fully-qualified domain name of the server, and
+``IPADDRESS`` with the IP address of the server. The role is
+``backend``, and you will be using this server to ``bootstrap`` this
+private chef installation.
+
+For the other back-end server, add the following:
+
+*Create the back-end server entry in private-chef.rb*
+
+.. code-block:: ruby
+
+ server “FQDN”,
+ :ipaddress => “IPADDRESS”,
+ :role => “backend”
+
+Add an entry for the back-end vip which you assigned earlier:
+
+*Create the back-end vip entry in private-chef.rb*
+
+.. code-block:: ruby
+
+ backend_vip “FQDN”,
+ :ipaddress => “IPADDRESS”
+
+Replace ``FQDN`` with the fully-qualified domain name of the server, and
+``IPADDRESS`` with the IP address of the VIP.
+
+Add server entries for the front-end servers
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+For each front-end server, add the following:
+
+*Create entries for each front-end server in private-chef.rb*
+
+.. code-block:: ruby
+
+ server “FQDN”,
+ :ipaddress => “IPADDRESS”,
+ :role => “frontend”
+
+Replace ``FQDN`` with the fully qualified domain name of the server, and
+``IPADDRESS`` with the IP address of the server. The role is
+``frontend``.
+
+Set the api_fqdn to the fully qualified domain name for your load balanced VIP
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Add the following line to your config file:
+
+*Set the api_fqdn in private-chef.rb*
+
+.. code-block:: ruby
+
+ api_fqdn “FQDN”
+
+Replace ``FQDN`` with the fully-qualified domain name of the load
+balanced VIP.
+
+Completed private-chef.rb example
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+A completed private-chef.rb configuration file for a four server tiered
+private chef cluster, consisting of:
+
+================ =========== ====
+FQDN IP Address Role
+================ =========== ====
+be1.example.com 192.168.4.1 backend
+be2.example.com 192.168.4.6 backend
+fe1.example.com 192.168.4.2 frontend
+fe2.example.com 192.168.4.3 frontend
+fe3.example.com 192.168.4.4 frontend
+chef.example.com 192.168.4.5 load balanced VIP
+be.example.com 192.168.4.7 back-end VIP
+================ =========== ====
+
+Looks like this:
+
+*Tiered private-chef.rb*
+
+.. code-block:: ruby
+
+ topology “ha”
+
+ server “be1.example.com”,
+ :ipaddress => “192.168.4.1”,
+ :role => “backend”,
+ :bootstrap => true
+
+ server “be2.example.com”,
+ :ipaddress => “192.168.4.6”,
+ :role => “backend”,
+ :bootstrap => true
+
+ backend_vip “be.example.com”,
+ :ipaddress => “192.168.4.7”
+
+ server “fe1.example.com”,
+ :ipaddress => “192.168.4.2”,
+ :role => “frontend”
+
+ server “fe2.example.com”,
+ :ipaddress => “192.168.4.3”,
+ :role => “frontend”
+
+ server “fe3.example.com”,
+ :ipaddress => “192.168.4.4”,
+ :role => “frontend”
+
+ api_fqdn “chef.example.com”
+
+Place the Private Chef package on the servers
+---------------------------------------------
+
+Upload the package provided to the servers you wish to install on, and
+record it’s location on the file-system. The rest of this section will
+assume you uploaded it to the ``/tmp`` directory on each system.
+
+Place the private-chef.rb in /etc/opscode on the bootstrap server
+-----------------------------------------------------------------
+
+Copy your private-chef.rb file to ``/etc/opscode/private-chef.rb`` on
+the bootstrap server.
+
+Install the Private Chef package on the bootstrap server
+--------------------------------------------------------
+
+Install the Private Chef package on the back-end server.
+
+*Install the Private Chef package on Red Hat and CentOS 6*
+
+.. code-block:: bash
+
+ $ rpm -Uvh /tmp/private-chef-full-1.0.0–1.x86_64.rpm
+
+*Install the Private Chef package on Ubuntu*
+
+.. code-block:: bash
+
+ $ dpkg -i /tmp/private-chef-full_1.0.0–1_amd64.deb
+
+
+Install DRBD on the back-end servers
+------------------------------------
+
+Each of the back-end servers must have DRBD installed.
+
+*Install DRBD on Red Hat and CentOS 6*
+
+.. code-block:: bash
+
+ $ rpm --import http://elrepo.org/RPM-GPG-KEY-elrepo.org
+ $ yum install -y http://elrepo.org/elrepo-release-6-4.el6.elrepo.noarch.rpm
+ $ yum install -y drbd84-utils kmod-drbd84
+
+.. note::
+ The `ELRepo <http://elrepo.org>`_ provides updated drivers for the Enterprise
+ Linux family of distributions (based on Red Hat Enterprise Linux.) With the
+ introduction of Red Hat Enterprise 6, Red Hat no longer distributes DRBD
+ within the kernel. These modules provide properly built, community tested
+ releases of the required kernel and DRBD user-land.
+
+*Install DRBD on Ubuntu*
+
+.. code-block:: bash
+
+ $ apt-get install drbd8-utils
+
+Configure DRBD on the bootstrap back-end server
+-----------------------------------------------
+
+In an HA configuration, setup of Private Chef happens in two phases -
+the first phase configures DRBD, and then pauses to allow you to finish
+establishing DRBD replication before moving on.
+
+*Configure DRBD with private-chef-ctl*
+
+.. code-block:: bash
+
+ $ private-chef-ctl reconfigure
+
+The installer will pause, asking you to confirm that you have set up
+DRBD. Press CTRL-C to exit, and continue the last few steps require to
+set up DRBD.
+
+*Finish DRBD setup*
+
+.. code-block:: bash
+
+ $ service drbd start
+ $ drbdadm create-md pc0
+ $ drbdadm up pc0
+
+Configure DRBD on the non-bootstrap back-end server
+---------------------------------------------------
+
+To configure DRBD on the non-bootstrap back-end server, you must first
+copy all the contents of /etc/opscode on the boostrap node to the
+non-bootstrap back-end. On the non-bootstrap server:
+
+*Copy /etc/opscode from the bootstrap server*
+
+.. code-block:: bash
+
+ $ scp -r FQDN:/etc/opscode /etc
+
+Replace ``FQDN`` above with the FQDN of your bootstrap server.
+
+Configure DRBD on the non-bootstrap back-end server
+---------------------------------------------------
+
+Set up the configuration of DRBD:
+
+*Configure DRBD with private-chef-ctl*
+
+.. code-block:: bash
+
+ $ private-chef-ctl reconfigure
+
+The installer will pause, asking you to confirm that you have set up
+DRBD. Press CTRL-C to exit, and continue the last few steps require to
+set up DRBD.
+
+*Finish DRBD setup*
+
+.. code-block:: bash
+
+ $ service drbd start
+ $ drbdadm create-md pc0
+ $ drbdadm up pc0
+
+Make the bootstrap server primary for DRBD
+------------------------------------------
+
+With both servers now configured for DRBD, let the cluster know that the
+bootstrap server should be ``primary`` for the shared device:
+
+*Make the bootstrap server primary for DRBD on Red Hat and CentOS 6*
+
+.. code-block:: bash
+
+ $ drbdadm primary pc0 —force
+
+*Make the bootstrap server primary for DRBD on Ubuntu*
+
+.. code-block:: bash
+
+ $ drbdadm -- --overwrite-data-of-peer primary pc0
+
+Create and mount the filesystem on the DRBD device
+--------------------------------------------------
+
+On the bootstrap server, assuming you are using ``ext4`` as your
+filesystem:
+
+*Creating the filesystem for DRBD*
+
+.. code-block:: bash
+
+ $ mkfs.ext4 /dev/drbd0
+ $ mkdir -p /var/opt/opscode/drbd/data
+ $ mount /dev/drbd0 /var/opt/opscode/drbd/data
+
+Monitor the initial device synchronization
+------------------------------------------
+
+Before proceeding with the installation, allow the DRBD devices to fully
+synchronize. To observe the synchronization process, you can run:
+
+*Observe DRBD synchronization status*
+
+.. code-block:: bash
+
+ $ watch -n1 cat /proc/drbd
+
+You will see output similar to:
+
+*cat /proc/drbd output*
+
+.. code-block:: bash
+
+ version: 8.4.1 (api:1/proto:86[STRIKEOUT:100)
+ GIT-hash: 91b4c048c1a0e06777b5f65d312b38d47abaea80 build by
+ dag@Build64R6, 2011]12[STRIKEOUT:21 06:08:50
+ 0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r]—-
+ ns:3071368 nr:0 dw:0 dr:3075736 al:0 bm:187 lo:0 pe:13 ua:4 ap:0 ep:1
+ wo:b oos:12685660
+ [==>……………..] sync’ed: 19.5% (12388/15372)M
+ finish: 0:11:00 speed: 19,188 (24,468) K/sec
+
+When the ``ds`` section of the output reads ``UpToDate/UpToDate``, the
+synchronization is complete.
+
+Under normal operation, DRBD dedicates only a portion of the available
+disk bandwidth to initial/complete re-synchronization - this is to
+ensure that new data that may be written to the shared device is also
+being synchronized. To enable DRBD to utilize more of the bandwidth
+available during the initial synchronization, you can run:
+
+*Speeding up initial synchronization on Red Hat and CentOS 6*
+
+.. code-block:: bash
+
+ $ drbdadm disk-options --resync-rate=1100M pc0
+
+*Speeding up initial synchronization on Ubuntu*
+
+.. code-block:: bash
+
+ $ drbdsetup /dev/drbd0 syncer -r 1100M
+
+With synchronization complete, you are now ready to use DRBD on the
+bootstrap node - let Private Chef know by running:
+
+*Let private-chef-ctl know that you are ready to proceeed*
+
+.. code-block:: bash
+
+ $ touch /var/opt/opscode/drbd/drbd_ready
+
+Configure Private Chef on the bootstrap server
+----------------------------------------------
+
+To continue setting up private chef on your bootstrap server, run:
+
+*Configure Private Chef*
+
+.. code-block:: bash
+
+ $ private-chef-ctl reconfigure
+
+This command may take several minutes to run, during which you will see
+the output of the Chef run that is configuring your new Private Chef
+installation. When it is complete, you will see:
+
+*Completed private-chef-ctl reconfigure*
+
+.. code-block:: bash
+
+ Chef Server Reconfigured!
+
+.. note::
+ Private Chef is composed of many different services which work together
+ to create a functioning system. One impact of this is that it can take a
+ few minutes for the system to finish starting up. One way to tell that
+ the system is fully ready is to use the ``top`` command. You will notice
+ high cpu utilization for several ``ruby`` processes while the system is
+ starting up. When that utilization drops off, the system is ready.
+
+Configure Private Chef on the non-bootstrap back-end server
+-----------------------------------------------------------
+
+.. warning::
+
+ **Make sure DRBD synchronization has completed, and that Private Chef has fully
+ started on the bootstrap node before continuing!**
+
+ Each member of your Private Chef back-end cluster participates in an
+ election for who should be Primary for the DRBD device. This means that,
+ if you do not allow the bootstrap node to finish initializing the system
+ before setting up the non-bootstrap server, you may leave the system in
+ an unstable state.
+
+Let ``private-chef-ctl`` know that you are have configured DRBD:
+
+*Let private-chef-ctl know that you are ready to proceeed*
+
+.. code-block:: bash
+
+ $ touch /var/opt/opscode/drbd/drbd_ready
+
+Followed by:
+
+*Configure Private Chef*
+
+.. code-block:: bash
+
+ $ private-chef-ctl reconfigure
+
+Copy the contents of ``/etc/opscode`` from the bootstrap server to the front-end servers
+----------------------------------------------------------------------------------------
+
+With the bootstrap complete, you can now populate ``/etc/opscode`` on
+the front-end servers with the files generated during the bootstrap
+process. Assuming you are logged in as root on your bootstrap server,
+something like:
+
+*Copy /etc/opscode to another server*
+
+.. code-block:: bash
+
+ $ scp -r /etc/opscode FQDN:/etc
+
+Will copy all the files from the bootstrap server to another system.
+Replace ``FQDN`` with the fully qualified domain name of the system you
+want to install.
+
+Install the Private Chef package on the front-end servers
+---------------------------------------------------------
+
+Install the Private Chef package on each of the front-end servers.
+
+*Install the Private Chef package on Red Hat and CentOS 6*
+
+.. code-block:: bash
+
+ $ rpm -Uvh /tmp/private-chef-full-1.0.0–1.x86_64.rpm
+
+*Install the Private Chef package on Ubuntu*
+
+.. code-block:: bash
+
+ $ dpkg -i /tmp/private-chef-full_1.0.0–1_amd64.deb
+
+
+Configure Private Chef on the front-end servers
+-----------------------------------------------
+
+To set up private chef on your front-end servers, run:
+
+*Configure Private Chef*
+
+.. code-block:: bash
+
+ $ private-chef-ctl reconfigure
+
+This command may take several minutes to run, during which you will see
+the output of the Chef run that is configuring your new Private Chef
+installation. When it is complete, you will see:
+
+*Completed private-chef-ctl reconfigure*
+
+.. code-block:: bash
+
+ Chef Server Reconfigured!
+
+.. note::
+ Private Chef is composed of many different services which work together
+ to create a functioning system. One impact of this is that it can take a
+ few minutes for the system to finish starting up. One way to tell that
+ the system is fully ready is to use the ``top`` command. You will notice
+ high cpu utilization for several ``ruby`` processes while the system is
+ starting up. When that utilization drops off, the system is ready.
+
+Success!
+--------
+
+Congratulations, you have installed Private Chef in a tiered
+configuration. You should now continue with the [User Creation] section
+of this guide.
+
27 source/installation/org_creation.rst
@@ -0,0 +1,27 @@
+=============================
+Initial Organization Creation
+=============================
+
+In order to being managing infrastructure with Private Chef, you will need to
+create an Organization. Organizations are totally multi-tenant Chef
+infrastructures that share nothing with other organizations on your Private
+Chef server.
+
+.. image:: click_to_create_org.png
+
+You will then be prompted to fill in a form with two fields:
+
+- **Organization Full Name**: Should be the name of your company or department
+- **Organizaiton Short Name**: Should be a lowercase word describing the organization - used in the Web UI and API URLs.
+
+Once you have filled in the for, click *Create Organization* to create your organization.
+
+.. image:: create_org_button.png
+
+Once the organization is created, you need to:
+
+- **Download the validation key**: This key will enable you to attach clients to this Private Chef organization
+- **Generate a knife configuration file**: Knife is the command line API to Chef, and this link will provide you with a pre-generated configuration for this organization, and customized for your Private Chef installation.
+
+.. image:: download_key_and_knife.png
+
102 source/installation/prereqs.rst
@@ -0,0 +1,102 @@
+Universal Pre-requisites
+========================
+
+The following pre-requisites apply to every installation of Private Chef.
+
+Downloading Private Chef
+------------------------
+
+If you do not have a copy of Private Chef, please contact your sales
+representative (`sales@opscode.com <mailto:sales@opscode.com>`_) or
+installation engineer via the customer portal to receive one.
+
+Private Chef is distributed on Red Hat and CentOS as an :command:`rpm` package,
+and on Ubuntu as a :command:`deb`.
+
+Choosing a Supported Operating Systems
+--------------------------------------
+
+Private Chef is supported on the following operating systems:
+
+- Red Hat Enterprise Linux 6
+- CentOS 6
+- Ubuntu 10.04
+
+Private Chef requires an x86_64 compatible systems architecture.
+
+Configuring the Operating System
+--------------------------------
+
+Before installing Private Chef, ensure that each system has the
+following installed and configured:
+
+Hostnames and Fully Qualified Domain Names
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Ensure that the systems you are going to install Private Chef on have
+properly configured hostnames, and resolvable fully qualified domain
+names. Refer to your operating systems manual or local systems
+administrator for guidance.
+
+NTP
+~~~
+
+Private Chef requires that the systems it is running be connected to
+NTP, as Chef is particularly sensitive to clock drift.
+
+*Install NTP on Red Hat and CentOS 6*
+
+.. code-block:: bash
+
+ $ yum install ntp
+ $ chkconfig -add ntp
+ $ service ntpd start
+
+*Install NTP on Ubuntu*
+
+.. code-block:: bash
+
+ $ apt-get install ntp
+
+Mail Relay
+~~~~~~~~~~
+
+The Private Chef system utilizes e-mail to send notifications for
+various events (such as cluster fail-over, or failed periodic jobs.) We
+recommend you follow your operating systems guidelines and individual
+corporate policy for installation and configuration of a local Mail
+Transfer Agent.
+
+Cron
+~~~~
+
+Periodic maintenance tasks are performed on Private Chef servers via
+Cron and the :file:`/etc/cron.d` directory. On CentOS 6 minimal
+installations, you may not have Cron installed and configured.
+
+*Install Crontabs on CentOS 6*
+
+.. code-block:: bash
+
+ $ yum install crontabs
+
+Git
+~~~
+
+Private Chef requires that Git be installed, so that various internal
+services can confirm their own revision.
+
+*Install Git on Red Hat and CentOS 6*
+
+.. code-block:: bash
+
+ $ yum install git
+
+*Install Git on Ubuntu*
+
+.. code-block:: bash
+
+ $ apt-get install git-core
+
+
+
BIN  source/installation/signup.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
106 source/installation/standalone.rst
@@ -0,0 +1,106 @@
+.. index:: installation
+
+=======================
+Standalone Installation
+=======================
+
+The standalone installation of Private Chef creates a working
+installation on a single server. This installation is typically useful
+when you are installing Private Chef in a Virtual Machine, for Proof of
+Concept deployments, or as a part of a development or testing loop.
+
+.. index:: System Requirements
+
+System Requirements
+-------------------
+
+- 4 total cores, 2.0 Ghz AMD 41xx/61xx CPUs or faster
+- 4 GB of RAM
+- 5 GB of free disk space in ``/opt``
+- 5 GB of free disk space in ``/var``
+
+.. index:: Network Requirements
+
+Network Requirements
+--------------------
+
+.. index:: Firewall Ports
+
+Firewalls
+~~~~~~~~~
+
+If you are using host-based firewalls (iptables, ufw, etc.) you will
+want to ensure that the following ports are open:
+
+==== =======
+Port Used By
+==== =======
+80 nginx
+443 nginx
+==== =======
+
+Refer to your operating systems manual, or your site systems
+administrators, for instructions on how to enable this change.
+
+Place the Private Chef package on the server
+--------------------------------------------
+
+Upload the package provided to the server you wish to install on, and
+record it’s location on the file-system. The rest of this section will
+assume you uploaded it to the ``/tmp`` directory.
+
+Install the Private Chef package
+--------------------------------
+
+Install the Private Chef package on the server, using the name of the
+package provided by Opscode.
+
+*Install the Private Chef package on Red Hat and CentOS 6*
+
+.. code-block:: bash
+
+ $ rpm -Uvh /tmp/private-chef-full-1.0.0–1.x86_64.rpm
+
+*Install the Private Chef package on Ubuntu*
+
+.. code-block:: bash
+
+ $ dpkg -i /tmp/private-chef-full_1.0.0–1_amd64.deb
+
+Configure Private Chef
+----------------------
+
+Private Chef is now installed on your server, but is not configured for
+use. To configure it for a standalone installation, simply run:
+
+*Configure Private Chef Standalone*
+
+.. code-block:: bash
+
+ $ private-chef-ctl reconfigure
+
+This command may take several minutes to run, during which you will see
+the output of the Chef run that is configuring your new Private Chef
+installation. When it is complete, you will see:
+
+*Completed private-chef-ctl reconfigure*
+
+.. code-block:: bash
+
+ Chef Server Reconfigured!
+
+.. note::
+
+ Private Chef is composed of many different services which work together
+ to create a functioning system. One impact of this is that it can take a
+ few minutes for the system to finish starting up. One way to tell that
+ the system is fully ready is to use the ``top`` command. You will notice
+ high cpu utilization for several ``ruby`` processes while the system is
+ starting up. When that utilization drops off, the system is ready.
+
+Success!
+--------
+
+Congratulations, you have installed a stand-alone Private Chef server.
+You should now continue with the [User Creation] section of this guide.
+
363 source/installation/tiered.rst
@@ -0,0 +1,363 @@
+Tiered Installation
+===================
+
+The tiered installation allows you to install Private Chef on multiple
+servers, in order to scale portions of the service horizontally. It does
+not provide High Availability of the back-end data services, but instead
+relies on the ability to quickly restore the state of the server from a
+backup or from source code control. Opscode generally recommends a High
+Availability installation rather than a tiered installation, if
+possible.
+
+We refer to all the servers in a particular installation of Private Chef
+as a “cluster”.
+
+Overview
+--------
+
+The tiered installation consists of multiple front-end servers talking
+to a single back-end server. This allows for a higher level of
+concurrency on API requests, while scaling the back-end server
+vertically to handle the increased I/O load.
+
+.. index:: System Requirements
+
+System Requirements
+-------------------
+
+- 8 total cores 2.0 Ghz AMD 41xx/61xx CPUs or faster
+- 16GB RAM
+- 2 x 300GB SAS RAID1 drives
+- Hardware RAID card
+- 1 GigE NIC interface
+- 20 GB of free disk space in ``/opt``
+- 40 GB of free disk space in ``/var``
+
+.. note::
+ While you can certainly run private chef on smaller systems, our
+ assumption with the Tiered and High Availability installations are that
+ they are intended for production use. The above configuration is rated
+ at 1,500 nodes converging every 5 minutes.
+
+Nominate one of your servers to be the “back-end”, while the other
+systems will be “front-end” servers.
+
+.. index:: Network Requirements
+
+Network Requirements
+--------------------
+
+Load Balancing
+~~~~~~~~~~~~~~
+
+As you are running multiple API front-ends, you will need to provide a
+mechanism for load-balancing the requests between them. We recommend
+using either a hardware or software load-balancer configured for
+round-robin.
+
+You will want to create a DNS entry for the load balanced VIP, which you
+will use to access the cluster - we will refer to this later as the
+``api_fqdn``.
+
+.. index:: Firewall Ports
+
+Firewalls
+~~~~~~~~~
+
+If you are using host-based firewalls (iptables, ufw, etc.) you will
+want to ensure that the following ports are open on each of the
+front-end servers:
+
+==== =======
+Port Used by
+==== =======
+80 nginx
+443 nginx
+9672 nrpe
+==== =======
+
+On the back-end servers:
+
+==== =======
+Port Used by
+==== =======
+80 nginx
+443 nginx
+9671 nginx
+9680 nginx
+9685 nginx
+9683 nginx
+9672 nrpe
+5984 couchdb
+8983 opscode-solr
+5432 postgresql
+5672 rabbitmq
+6379 redis
+==== =======
+
+Refer to your operating systems manual, or your site systems
+administrators, for instructions on how to enable this change.
+
+Create your private-chef.rb configuration file
+----------------------------------------------
+
+Each private chef cluster has a single configuration file, which
+describes the topology of the entire cluster. This file lives in
+``/etc/opscode/private-chef.rb`` on each server. In the text editor of
+your choice, create a file called “private-chef.rb” now.
+
+Set the topology
+~~~~~~~~~~~~~~~~
+
+Add the following line to your configuration file:
+
+*Set the topology in private-chef.rb*
+
+.. code-block:: ruby
+
+ topology “tier”
+
+This lets private chef know that these servers will be in a horizontally
+scalable configuration with a single, non-highly-available back-end.
+
+Add a server entry for the back-end server
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+For the server you will be using as the back-end, add the following:
+
+*Create the back-end server entry in private-chef.rb*
+
+.. code-block:: ruby
+
+ server “FQDN”,
+ :ipaddress => “IPADDRESS”,
+ :role => “backend”,
+ :bootstrap => true
+
+Replace ``FQDN`` with the fully-qualified domain name of the server, and
+``IPADDRESS`` with the IP address of the server. The role is
+``backend``, and you will be using this server to ``bootstrap`` this
+private chef installation.
+
+Additionally, you will be using this server exclusively for the back-end
+services. Let private chef know by adding the following entry:
+
+*Create the back-end vip entry in private-chef.rb*
+
+.. code-block:: ruby
+
+ backend_vip “FQDN”,
+ :ipaddress => “IPADDRESS”
+
+Replace ``FQDN`` with the fully-qualified domain name of the server, and
+``IPADDRESS`` with the IP address of the server.
+
+Add server entries for the front-end servers
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+For each front-end server, add the following:
+
+*Create entries for each front-end server in private-chef.rb*
+
+.. code-block:: ruby
+
+ server “FQDN”,
+ :ipaddress => “IPADDRESS”,
+ :role => “frontend”
+
+Replace ``FQDN`` with the fully qualified domain name of the server, and
+``IPADDRESS`` with the IP address of the server. The role is
+``frontend``.
+
+Set the api\_fqdn to the fully qualified domain name for your load balanced VIP
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Add the following line to your config file:
+
+*Set the api_fqdn in private-chef.rb*
+
+.. code-block:: ruby
+
+ api_fqdn “FQDN”
+
+Replace ``FQDN`` with the fully-qualified domain name of the load
+balanced VIP.
+
+Completed private-chef.rb example
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+A completed private-chef.rb configuration file for a four server tiered
+private chef cluster, consisting of:
+
+================ =========== ====
+FQDN IP Address Role
+================ =========== ====
+be1.example.com 192.168.4.1 backend
+fe1.example.com 192.168.4.2 frontend
+fe2.example.com 192.168.4.3 frontend
+fe3.example.com 192.168.4.4 frontend
+chef.example.com 192.168.4.5 load balanced VIP
+================ =========== ====
+
+Looks like this:
+
+*Tiered private-chef.rb*
+
+.. code-block:: ruby
+
+ topology “tier”
+
+ server “be1.example.com”,
+ :ipaddress => “192.168.4.1”,
+ :role => “backend”,
+ :bootstrap => true
+
+ backend_vip “be1.example.com”,
+ :ipaddress => “192.168.4.1”
+
+ server “fe1.example.com”,
+ :ipaddress => “192.168.4.2”,
+ :role => “frontend”
+
+ server “fe2.example.com”,
+ :ipaddress => “192.168.4.3”,
+ :role => “frontend”
+
+ server “fe3.example.com”,
+ :ipaddress => “192.168.4.4”,
+ :role => “frontend”
+
+ api_fqdn “chef.example.com”
+
+Place the Private Chef package on the servers
+---------------------------------------------
+
+Upload the package provided to the servers you wish to install on, and
+record it’s location on the file-system. The rest of this section will
+assume you uploaded it to the ``/tmp`` directory on each system.
+
+Place the private-chef.rb in /etc/opscode on the bootstrap server
+-----------------------------------------------------------------
+
+Copy your private-chef.rb file to ``/etc/opscode/private-chef.rb`` on
+the bootstrap server.
+
+Install the Private Chef package on the bootstrap server
+--------------------------------------------------------
+
+Install the Private Chef package on the back-end server.
+
+*Install the Private Chef package on Red Hat and CentOS 6*
+
+.. code-block:: bash
+
+ $ rpm -Uvh /tmp/private-chef-full-1.0.0–1.x86_64.rpm
+
+*Install the Private Chef package on Ubuntu*
+
+.. code-block:: bash
+
+ $ dpkg -i /tmp/private-chef-full_1.0.0–1_amd64.deb
+
+Configure Private Chef on the bootstrap server
+----------------------------------------------
+
+To set up private chef on your bootstrap server, run:
+
+*Configure Private Chef*
+
+.. code-block:: bash
+
+ $ private-chef-ctl reconfigure
+
+This command may take several minutes to run, during which you will see
+the output of the Chef run that is configuring your new Private Chef
+installation. When it is complete, you will see:
+
+*Completed private-chef-ctl reconfigure*
+
+.. code-block:: bash
+
+ Chef Server Reconfigured!
+
+.. note::
+
+ Private Chef is composed of many different services which work together
+ to create a functioning system. One impact of this is that it can take a
+ few minutes for the system to finish starting up. One way to tell that
+ the system is fully ready is to use the ``top`` command. You will notice
+ high cpu utilization for several ``ruby`` processes while the system is
+ starting up. When that utilization drops off, the system is ready.
+
+Copy the contents of ``/etc/opscode`` from the bootstrap server to the front-end servers
+----------------------------------------------------------------------------------------
+
+With the bootstrap complete, you can now populate ``/etc/opscode`` on
+the front-end servers with the files generated during the bootstrap
+process. Assuming you are logged in as root on your bootstrap server,
+something like:
+
+*Copy /etc/opscode to another server*
+
+.. code-block:: bash
+
+ $ scp -r /etc/opscode FQDN:/etc
+
+Will copy all the files from the bootstrap server to another system.
+Replace ``FQDN`` with the fully qualified domain name of the system you
+want to install.
+
+Install the Private Chef package on the front-end servers
+---------------------------------------------------------
+
+Install the Private Chef package on each of the front-end servers.
+
+*Install the Private Chef package on Red Hat and CentOS 6*
+
+.. code-block:: bash
+
+ $ rpm -Uvh /tmp/private-chef-full-1.0.0–1.x86_64.rpm
+
+*Install the Private Chef package on Ubuntu*
+
+.. code-block:: bash
+
+ $ dpkg -i /tmp/private-chef-full_1.0.0–1_amd64.deb
+
+Configure Private Chef on the front-end servers
+-----------------------------------------------
+
+To set up private chef on your front-end servers, run:
+
+*Configure Private Chef*
+
+.. code-block:: bash
+
+ $ private-chef-ctl reconfigure
+
+This command may take several minutes to run, during which you will see
+the output of the Chef run that is configuring your new Private Chef
+installation. When it is complete, you will see:
+
+*Completed private-chef-ctl reconfigure*
+
+.. code-block:: bash
+
+ Chef Server Reconfigured!
+
+.. note::
+
+ Private Chef is composed of many different services which work together
+ to create a functioning system. One impact of this is that it can take a
+ few minutes for the system to finish starting up. One way to tell that
+ the system is fully ready is to use the ``top`` command. You will notice
+ high cpu utilization for several ``ruby`` processes while the system is
+ starting up. When that utilization drops off, the system is ready.
+
+Success!
+--------
+
+Congratulations, you have installed Private Chef in a tiered
+configuration. You should now continue with the [User Creation] section
+of this guide.
+
22 source/installation/user_creation.rst
@@ -0,0 +1,22 @@
+=======================
+Initial User Creation
+=======================
+
+You must create a new user account before using Private Chef. Visiting the
+Private Chef management console will present you with a Login page, which
+contains a *Sign Up* link:
+
+.. image:: signup.png
+
+Enter your information on the signup page, and click *Submit*.
+
+.. image:: create_user_click_signup.png
+
+Once your user is created, you will have the opportunity to download your
+private key - download it now. This key is used for API access to Private
+Chef. Private Chef does not keep a copy of this key, so please store it
+somewhere safe.
+
+.. image:: download_private_key.png
+ :alt: Downloading your private key
+
Please sign in to comment.
Something went wrong with that request. Please try again.