Added documentation

Change-Id: I4cb4c8c56642337899d0865c147b54df72b2c1fa
diff --git a/doc/source/conf.py b/doc/source/conf.py
new file mode 100644
index 0000000..ce1d48d
--- /dev/null
+++ b/doc/source/conf.py
@@ -0,0 +1,110 @@
+# Copyright (c) 2022 VEXXHOST, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+# -- Path setup --------------------------------------------------------------
+
+# 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.
+#
+# import os
+# import sys
+# sys.path.insert(0, os.path.abspath('.'))
+
+# -- yaml2rst ----------------------------------------------------------------
+import os
+import glob
+import yaml2rst
+from yaml4rst.reformatter import YamlRstReformatter
+import pathlib
+
+for defaults_file in glob.glob("../../roles/*/defaults/main.yml"):
+    role_name = defaults_file.split("/")[-3]
+
+    YamlRstReformatter._HEADER_END_LINES = {
+        'yaml4rst': [
+            '# Default variables',
+            '#    :local:',
+            '# .. contents:: Sections',
+            '# .. include:: includes/all.rst',
+            '# .. include:: includes/role.rst',
+            '# .. include:: ../../../includes/global.rst',
+            '# -----------------',
+        ],
+    }
+
+    reformatter = YamlRstReformatter(
+        preset='yaml4rst',
+        template_path=os.path.join(
+            os.path.abspath(os.path.dirname(__file__)),
+            '_templates',
+        ),
+        config={
+            'ansible_full_role_name': f"vexxhost.atmosphere.{role_name}",
+            'ansible_role_name': role_name,
+        }
+    )
+    reformatter.read_file(defaults_file)
+    reformatter.reformat()
+    reformatter.write_file(
+        output_file=defaults_file,
+        only_if_changed=True,
+    )
+
+    pathlib.Path(f"roles/{role_name}/defaults").mkdir(parents=True, exist_ok=True)
+
+    rst_content = yaml2rst.convert_file(
+        defaults_file,
+        f"roles/{role_name}/defaults/main.rst",
+        strip_regex=r'\s*(:?\[{3}|\]{3})\d?$',
+        yaml_strip_regex=r'^\s{66,67}#\s\]{3}\d?$',
+    )
+
+
+# -- Project information -----------------------------------------------------
+
+project = 'Atmosphere'
+copyright = '2022, VEXXHOST, Inc.'
+author = 'VEXXHOST, Inc.'
+
+
+# -- General configuration ---------------------------------------------------
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+extensions = [
+    'reno.sphinxext',
+]
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+# This pattern also affects html_static_path and html_extra_path.
+exclude_patterns = []
+
+
+# -- 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 = 'sphinx_rtd_theme'
+
+# 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']