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']
