Browse code

Split Ansible docs from core docs (#73616)

* excludes scenario guides from core docs, splits porting guides and roadmaps, symlinks indices to create index.html pages, and adds .gitignore entries for conf.py and the toplevel index.rst files generated by the docs build

This solution builds three types of docs:
* ansible-2.10 and earlier: all the docs. Handle this via `make webdocs
ANSIBLE_VERSION=2.10`
* ansible-3 and later: a subset of the docs for the ansible package.
Handle this via `make webdocs ANSIBLE_VERSION=3` (change the
ANSIBLE_VERSION to match the version being built for.
* ansible-core: a subset of the docs for the ansible-core package.
Handle this via `make coredocs`.

* `make webdocs` now always builds all the collection docs
* Use `make coredocs` to limit it to core plugins only
* The user specifies the desired version. If no ANSIBLE_VERSION is specified, build plugins for the latest release of ansible

Co-authored-by: Toshio Kuratomi <a.badger@gmail.com>
Co-authored-by: Matt Clay <matt@mystile.com>

Sandra McCann authored on 2021/02/18 00:57:05
Showing 24 changed files
... ...
@@ -32,6 +32,8 @@ docs/man/man3/*
32 32
 docs/docsite/_build
33 33
 docs/docsite/*.html
34 34
 docs/docsite/htmlout
35
+docs/docsite/rst/conf.py
36
+docs/docsite/rst/index.rst
35 37
 docs/docsite/rst/cli/ansible-*.rst
36 38
 docs/docsite/rst/cli/ansible.rst
37 39
 docs/docsite/rst/dev_guide/collections_galaxy_meta.rst
... ...
@@ -5,6 +5,8 @@ include requirements.txt
5 5
 recursive-include docs *
6 6
 include docs/docsite/rst/collections/all_plugins.rst
7 7
 exclude docs/docsite/rst_warnings
8
+exclude docs/docsite/rst/conf.py
9
+exclude docs/docsite/rst/index.rst
8 10
 recursive-exclude docs/docsite/_build *
9 11
 recursive-exclude docs/docsite/_extensions *.pyc *.pyo
10 12
 include examples/hosts
... ...
@@ -5,6 +5,7 @@
5 5
 # useful targets:
6 6
 #   make clean ---------------- clean up
7 7
 #   make webdocs -------------- produce ansible doc at docs/docsite/_build/html
8
+#   make coredocs ------------- produce core doc at docs/docsite/_build/html
8 9
 #   make sdist ---------------- produce a tarball
9 10
 #   make deb-src -------------- produce a DEB source
10 11
 #   make deb ------------------ produce a DEB
... ...
@@ -270,6 +271,10 @@ epub:
270 270
 webdocs:
271 271
 	(cd docs/docsite/; CPUS=$(CPUS) $(MAKE) docs)
272 272
 
273
+.PHONY: coredocs
274
+coredocs:
275
+	(cd docs/docsite/; CPUS=$(CPUS) $(MAKE) coredocs)
276
+
273 277
 .PHONY: linkcheckdocs
274 278
 linkcheckdocs:
275 279
 	(cd docs/docsite/; CPUS=$(CPUS) $(MAKE) linkcheckdocs)
... ...
@@ -31,6 +31,10 @@ ifdef PLUGINS
31 31
 endif
32 32
 endif
33 33
 
34
+ANSIBLE_VERSION_ARGS=
35
+ifdef ANSIBLE_VERSION
36
+	ANSIBLE_VERSION_ARGS=--ansible-version=$(ANSIBLE_VERSION)
37
+endif
34 38
 
35 39
 DOC_PLUGINS ?= become cache callback cliconf connection httpapi inventory lookup netconf shell strategy vars
36 40
 
... ...
@@ -41,6 +45,11 @@ ifeq ($(findstring error,$(VERSION)), error)
41 41
 $(error "version_helper failed")
42 42
 endif
43 43
 
44
+MAJOR_VERSION := $(shell $(PYTHON) ../../packaging/release/versionhelper/version_helper.py --majorversion || echo error)
45
+ifeq ($(findstring error,$(MAJOR_VERSION)), error)
46
+$(error "version_helper failed to determine major version")
47
+endif
48
+
44 49
 assertrst:
45 50
 ifndef rst
46 51
 	$(error specify document or pattern with rst=somefile.rst)
... ...
@@ -50,23 +59,47 @@ all: docs
50 50
 
51 51
 docs: htmldocs
52 52
 
53
+coredocs: core_htmldocs
54
+
53 55
 generate_rst: collections_meta config cli keywords plugins testing
54
-base_generate_rst: collections_meta config cli keywords base_plugins testing
56
+core_generate_rst: collections_meta config cli keywords base_plugins testing
57
+
58
+# The following two symlinks are necessary to produce two different docsets
59
+# from the same set of rst files (Ansible the package docs, and core docs).
60
+# Symlink the relevant index into place for building Ansible docs
61
+ansible_structure: generate_rst
62
+	# We must have python and python-packaging for the version_helper
63
+	# script so use it for version comparison
64
+	if python -c "import sys, packaging.version as p; sys.exit(not p.Version('$(MAJOR_VERSION)') >  p.Version('2.10'))" ; then \
65
+		echo "Creating symlinks in generate_rst"; \
66
+		ln -sf ../rst/ansible_index.rst rst/index.rst; \
67
+		ln -sf ../sphinx_conf/ansible_conf.py rst/conf.py; \
68
+	else \
69
+		echo 'Creating symlinks for older ansible in generate_rst'; \
70
+		ln -sf ../rst/2.10_index.rst rst/index.rst; \
71
+		ln -sf ../sphinx_conf/2.10_conf.py rst/conf.py; \
72
+	fi
73
+
74
+# Symlink the relevant index into place for building core docs
75
+core_structure: core_generate_rst
76
+	@echo "Creating symlinks in core_generate_rst"
77
+	-ln -sf ../rst/core_index.rst rst/index.rst
78
+	-ln -sf ../sphinx_conf/core_conf.py rst/conf.py
55 79
 
56
-htmldocs: generate_rst
80
+htmldocs: ansible_structure
57 81
 	CPUS=$(CPUS) $(MAKE) -f Makefile.sphinx html
58 82
 
59
-base_htmldocs: base_generate_rst
83
+core_htmldocs: core_structure
60 84
 	CPUS=$(CPUS) $(MAKE) -f Makefile.sphinx html
61 85
 
62
-singlehtmldocs: generate_rst
86
+singlehtmldocs: ansible_structure
63 87
 	CPUS=$(CPUS) $(MAKE) -f Makefile.sphinx singlehtml
64 88
 
65
-base_singlehtmldocs: base_generate_rst
89
+core_singlehtmldocs: core_structure
66 90
 	CPUS=$(CPUS) $(MAKE) -f Makefile.sphinx singlehtml
67 91
 
68 92
 linkcheckdocs: generate_rst
69
-		CPUS=$(CPUS) $(MAKE) -f Makefile.sphinx linkcheck
93
+	CPUS=$(CPUS) $(MAKE) -f Makefile.sphinx linkcheck
70 94
 
71 95
 webdocs: docs
72 96
 
... ...
@@ -99,6 +132,8 @@ clean:
99 99
 			rm -rf "rst/collections/$$filename"; \
100 100
 		fi \
101 101
 	done
102
+	@echo "Cleanning up generated ansible_structure"
103
+	find -type l -delete
102 104
 	@echo "Cleaning up legacy generated rst locations"
103 105
 	rm -rf rst/modules
104 106
 	rm -f rst/plugins/*/*.rst
... ...
@@ -122,11 +157,7 @@ config: ../templates/config.rst.j2
122 122
 # For now, if we're building on devel, just build base docs.  In the future we'll want to build docs that
123 123
 # are the latest versions on galaxy (using a different antsibull-docs subcommand)
124 124
 plugins:
125
-	if expr "$(VERSION)" : '.*[.]dev[0-9]\{1,\}$$' &> /dev/null; then \
126
-		$(PLUGIN_FORMATTER) base -o rst $(PLUGIN_ARGS);\
127
-	else \
128
-		$(PLUGIN_FORMATTER) full -o rst $(PLUGIN_ARGS);\
129
-	fi
125
+	$(PLUGIN_FORMATTER) full -o rst $(ANSIBLE_VERSION_ARGS) $(PLUGIN_ARGS);\
130 126
 
131 127
 # This only builds the plugin docs included with ansible-base
132 128
 base_plugins:
... ...
@@ -2,7 +2,8 @@
2 2
 #
3 3
 
4 4
 # You can set these variables from the command line.
5
-SPHINXOPTS    = -j $(CPUS) -n -w rst_warnings
5
+SPHINXCONFDIR = rst
6
+SPHINXOPTS    = -j $(CPUS) -n -w rst_warnings -c "$(SPHINXCONFDIR)"
6 7
 SPHINXBUILD   = sphinx-build
7 8
 SPHINXPROJ    = sdfsdf
8 9
 SOURCEDIR     = rst
9 10
new file mode 100644
... ...
@@ -0,0 +1,106 @@
0
+.. _ansible_documentation:
1
+
2
+Ansible Documentation
3
+=====================
4
+
5
+About Ansible
6
+`````````````
7
+
8
+Ansible is an IT automation tool.  It can configure systems, deploy software, and orchestrate more advanced IT tasks such as continuous deployments or zero downtime rolling updates.
9
+
10
+Ansible's main goals are simplicity and ease-of-use. It also has a strong focus on security and reliability, featuring a minimum of moving parts, usage of OpenSSH for transport (with other transports and pull modes as alternatives), and a language that is designed around auditability by humans--even those not familiar with the program.
11
+
12
+We believe simplicity is relevant to all sizes of environments, so we design for busy users of all types: developers, sysadmins, release engineers, IT managers, and everyone in between. Ansible is appropriate for managing all environments, from small setups with a handful of instances to enterprise environments with many thousands of instances.
13
+
14
+You can learn more at `AnsibleFest <https://www.ansible.com/ansiblefest>`_, the annual event for all Ansible contributors, users, and customers hosted by Red Hat. AnsibleFest is the place to connect with others, learn new skills, and find a new friend to automate with.
15
+
16
+Ansible manages machines in an agent-less manner. There is never a question of how to upgrade remote daemons or the problem of not being able to manage systems because daemons are uninstalled.  Because OpenSSH is one of the most peer-reviewed open source components, security exposure is greatly reduced. Ansible is decentralized--it relies on your existing OS credentials to control access to remote machines. If needed, Ansible can easily connect with Kerberos, LDAP, and other centralized authentication management systems.
17
+
18
+This documentation covers the version of Ansible noted in the upper left corner of this page. We maintain multiple versions of Ansible and of the documentation, so please be sure you are using the version of the documentation that covers the version of Ansible you're using. For recent features, we note the version of Ansible where the feature was added.
19
+
20
+Ansible releases a new major release approximately twice a year. The core application evolves somewhat conservatively, valuing simplicity in language design and setup. Contributors develop and change modules and plugins, hosted in collections since version 2.10, much more quickly.
21
+
22
+.. toctree::
23
+   :maxdepth: 2
24
+   :caption: Installation, Upgrade & Configuration
25
+
26
+   installation_guide/index
27
+   porting_guides/porting_guides
28
+
29
+.. toctree::
30
+   :maxdepth: 2
31
+   :caption: Using Ansible
32
+
33
+   user_guide/index
34
+
35
+.. toctree::
36
+   :maxdepth: 2
37
+   :caption: Contributing to Ansible
38
+
39
+   community/index
40
+
41
+.. toctree::
42
+   :maxdepth: 2
43
+   :caption: Extending Ansible
44
+
45
+   dev_guide/index
46
+
47
+.. toctree::
48
+   :glob:
49
+   :maxdepth: 1
50
+   :caption: Common Ansible Scenarios
51
+
52
+   scenario_guides/cloud_guides
53
+   scenario_guides/network_guides
54
+   scenario_guides/virt_guides
55
+
56
+.. toctree::
57
+   :maxdepth: 2
58
+   :caption: Network Automation
59
+
60
+   network/getting_started/index
61
+   network/user_guide/index
62
+   network/dev_guide/index
63
+
64
+.. toctree::
65
+   :maxdepth: 2
66
+   :caption: Ansible Galaxy
67
+
68
+   galaxy/user_guide.rst
69
+   galaxy/dev_guide.rst
70
+
71
+
72
+.. toctree::
73
+   :maxdepth: 1
74
+   :caption: Reference & Appendices
75
+
76
+   collections/index
77
+   collections/all_plugins
78
+   reference_appendices/playbooks_keywords
79
+   reference_appendices/common_return_values
80
+   reference_appendices/config
81
+   reference_appendices/general_precedence
82
+   reference_appendices/YAMLSyntax
83
+   reference_appendices/python_3_support
84
+   reference_appendices/interpreter_discovery
85
+   reference_appendices/release_and_maintenance
86
+   reference_appendices/test_strategies
87
+   dev_guide/testing/sanity/index
88
+   reference_appendices/faq
89
+   reference_appendices/glossary
90
+   reference_appendices/module_utils
91
+   reference_appendices/special_variables
92
+   reference_appendices/tower
93
+   reference_appendices/automationhub
94
+   reference_appendices/logging
95
+
96
+
97
+.. toctree::
98
+   :maxdepth: 2
99
+   :caption: Release Notes
100
+
101
+.. toctree::
102
+   :maxdepth: 2
103
+   :caption: Roadmaps
104
+
105
+   roadmap/index.rst
0 106
new file mode 100644
... ...
@@ -0,0 +1,104 @@
0
+.. _ansible_documentation:
1
+..
2
+   This is the index file for Ansible the package. It gets symlinked to index.rst by the Makefile
3
+
4
+Ansible Documentation
5
+=====================
6
+
7
+About Ansible
8
+`````````````
9
+
10
+Ansible is an IT automation tool.  It can configure systems, deploy software, and orchestrate more advanced IT tasks such as continuous deployments or zero downtime rolling updates.
11
+
12
+Ansible's main goals are simplicity and ease-of-use. It also has a strong focus on security and reliability, featuring a minimum of moving parts, usage of OpenSSH for transport (with other transports and pull modes as alternatives), and a language that is designed around auditability by humans--even those not familiar with the program.
13
+
14
+We believe simplicity is relevant to all sizes of environments, so we design for busy users of all types: developers, sysadmins, release engineers, IT managers, and everyone in between. Ansible is appropriate for managing all environments, from small setups with a handful of instances to enterprise environments with many thousands of instances.
15
+
16
+You can learn more at `AnsibleFest <https://www.ansible.com/ansiblefest>`_, the annual event for all Ansible contributors, users, and customers hosted by Red Hat. AnsibleFest is the place to connect with others, learn new skills, and find a new friend to automate with.
17
+
18
+Ansible manages machines in an agent-less manner. There is never a question of how to upgrade remote daemons or the problem of not being able to manage systems because daemons are uninstalled.  Because OpenSSH is one of the most peer-reviewed open source components, security exposure is greatly reduced. Ansible is decentralized--it relies on your existing OS credentials to control access to remote machines. If needed, Ansible can easily connect with Kerberos, LDAP, and other centralized authentication management systems.
19
+
20
+This documentation covers the version of Ansible noted in the upper left corner of this page. We maintain multiple versions of Ansible and of the documentation, so please be sure you are using the version of the documentation that covers the version of Ansible you're using. For recent features, we note the version of Ansible where the feature was added.
21
+
22
+Ansible releases a new major release approximately twice a year. The core application evolves somewhat conservatively, valuing simplicity in language design and setup. Contributors develop and change modules and plugins, hosted in collections since version 2.10, much more quickly.
23
+
24
+.. toctree::
25
+   :maxdepth: 2
26
+   :caption: Installation, Upgrade & Configuration
27
+
28
+   installation_guide/index
29
+   porting_guides/porting_guides
30
+
31
+.. toctree::
32
+   :maxdepth: 2
33
+   :caption: Using Ansible
34
+
35
+   user_guide/index
36
+
37
+.. toctree::
38
+   :maxdepth: 2
39
+   :caption: Contributing to Ansible
40
+
41
+   community/index
42
+
43
+.. toctree::
44
+   :maxdepth: 2
45
+   :caption: Extending Ansible
46
+
47
+   dev_guide/index
48
+
49
+.. toctree::
50
+   :glob:
51
+   :maxdepth: 1
52
+   :caption: Common Ansible Scenarios
53
+
54
+   scenario_guides/cloud_guides
55
+   scenario_guides/network_guides
56
+   scenario_guides/virt_guides
57
+
58
+.. toctree::
59
+   :maxdepth: 2
60
+   :caption: Network Automation
61
+
62
+   network/getting_started/index
63
+   network/user_guide/index
64
+   network/dev_guide/index
65
+
66
+.. toctree::
67
+   :maxdepth: 2
68
+   :caption: Ansible Galaxy
69
+
70
+   galaxy/user_guide.rst
71
+   galaxy/dev_guide.rst
72
+
73
+
74
+.. toctree::
75
+   :maxdepth: 1
76
+   :caption: Reference & Appendices
77
+
78
+   collections/index
79
+   collections/all_plugins
80
+   reference_appendices/playbooks_keywords
81
+   reference_appendices/common_return_values
82
+   reference_appendices/config
83
+   reference_appendices/general_precedence
84
+   reference_appendices/YAMLSyntax
85
+   reference_appendices/python_3_support
86
+   reference_appendices/interpreter_discovery
87
+   reference_appendices/release_and_maintenance
88
+   reference_appendices/test_strategies
89
+   dev_guide/testing/sanity/index
90
+   reference_appendices/faq
91
+   reference_appendices/glossary
92
+   reference_appendices/module_utils
93
+   reference_appendices/special_variables
94
+   reference_appendices/tower
95
+   reference_appendices/automationhub
96
+   reference_appendices/logging
97
+
98
+
99
+.. toctree::
100
+   :maxdepth: 2
101
+   :caption: Roadmaps
102
+
103
+   roadmap/ansible_roadmap_index.rst
0 104
deleted file mode 100644
... ...
@@ -1,296 +0,0 @@
1
-# -*- coding: utf-8 -*-
2
-#
3
-# documentation build configuration file, created by
4
-# sphinx-quickstart on Sat Sep 27 13:23:22 2008-2009.
5
-#
6
-# This file is execfile()d with the current directory set to its
7
-# containing dir.
8
-#
9
-# The contents of this file are pickled, so don't put values in the namespace
10
-# that aren't pickleable (module imports are okay, they're removed
11
-# automatically).
12
-#
13
-# All configuration values have a default value; values that are commented out
14
-# serve to show the default value.
15
-
16
-from __future__ import (absolute_import, division, print_function)
17
-__metaclass__ = type
18
-
19
-import sys
20
-import os
21
-
22
-# pip install sphinx_rtd_theme
23
-# import sphinx_rtd_theme
24
-# html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
25
-
26
-# If your extensions are in another directory, add it here. If the directory
27
-# is relative to the documentation root, use os.path.abspath to make it
28
-# absolute, like shown here.
29
-# sys.path.append(os.path.abspath('some/directory'))
30
-#
31
-sys.path.insert(0, os.path.join('ansible', 'lib'))
32
-sys.path.append(os.path.abspath(os.path.join('..', '_extensions')))
33
-
34
-# We want sphinx to document the ansible modules contained in this repository,
35
-# not those that may happen to be installed in the version
36
-# of Python used to run sphinx.  When sphinx loads in order to document,
37
-# the repository version needs to be the one that is loaded:
38
-sys.path.insert(0, os.path.abspath(os.path.join('..', '..', '..', 'lib')))
39
-
40
-VERSION = 'devel'
41
-AUTHOR = 'Ansible, Inc'
42
-
43
-
44
-# General configuration
45
-# ---------------------
46
-
47
-# Add any Sphinx extension module names here, as strings.
48
-# They can be extensions
49
-# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
50
-# TEST: 'sphinxcontrib.fulltoc'
51
-extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'pygments_lexer', 'notfound.extension']
52
-
53
-# Later on, add 'sphinx.ext.viewcode' to the list if you want to have
54
-# colorized code generated too for references.
55
-
56
-
57
-# Add any paths that contain templates here, relative to this directory.
58
-templates_path = ['.templates']
59
-
60
-# The suffix of source filenames.
61
-source_suffix = '.rst'
62
-
63
-# The master toctree document.
64
-master_doc = 'index'
65
-
66
-# General substitutions.
67
-project = 'Ansible'
68
-copyright = "2019 Red Hat, Inc."
69
-
70
-# The default replacements for |version| and |release|, also used in various
71
-# other places throughout the built documents.
72
-#
73
-# The short X.Y version.
74
-version = VERSION
75
-# The full version, including alpha/beta/rc tags.
76
-release = VERSION
77
-
78
-# There are two options for replacing |today|: either, you set today to some
79
-# non-false value, then it is used:
80
-# today = ''
81
-# Else, today_fmt is used as the format for a strftime call.
82
-today_fmt = '%B %d, %Y'
83
-
84
-# List of documents that shouldn't be included in the build.
85
-# unused_docs = []
86
-
87
-# List of directories, relative to source directories, that shouldn't be
88
-# searched for source files.
89
-# exclude_dirs = []
90
-
91
-# A list of glob-style patterns that should be excluded when looking
92
-# for source files.
93
-# OBSOLETE - removing this - dharmabumstead 2018-02-06
94
-# exclude_patterns = ['modules']
95
-
96
-# The reST default role (used for this markup: `text`) to use for all
97
-# documents.
98
-# default_role = None
99
-
100
-# If true, '()' will be appended to :func: etc. cross-reference text.
101
-# add_function_parentheses = True
102
-
103
-# If true, the current module name will be prepended to all description
104
-# unit titles (such as .. function::).
105
-# add_module_names = True
106
-
107
-# If true, sectionauthor and moduleauthor directives will be shown in the
108
-# output. They are ignored by default.
109
-# show_authors = False
110
-
111
-# The name of the Pygments (syntax highlighting) style to use.
112
-pygments_style = 'sphinx'
113
-
114
-highlight_language = 'YAML+Jinja'
115
-
116
-# Substitutions, variables, entities, & shortcuts for text which do not need to link to anything.
117
-# For titles which should be a link, use the intersphinx anchors set at the index, chapter, and section levels, such as  qi_start_:
118
-# |br| is useful for formatting fields inside of tables
119
-# |_| is a nonbreaking space; similarly useful inside of tables
120
-rst_epilog = """
121
-.. |br| raw:: html
122
-
123
-   <br>
124
-.. |_| unicode:: 0xA0
125
-    :trim:
126
-"""
127
-
128
-
129
-# Options for HTML output
130
-# -----------------------
131
-
132
-html_theme_path = ['../_themes']
133
-html_theme = 'sphinx_rtd_theme'
134
-html_short_title = 'Ansible Documentation'
135
-html_show_sphinx = False
136
-
137
-html_theme_options = {
138
-    'canonical_url': "https://docs.ansible.com/ansible/latest/",
139
-    'vcs_pageview_mode': 'edit'
140
-}
141
-
142
-html_context = {
143
-    'display_github': 'True',
144
-    'github_user': 'ansible',
145
-    'github_repo': 'ansible',
146
-    'github_version': 'devel/docs/docsite/rst/',
147
-    'github_module_version': 'devel/lib/ansible/modules/',
148
-    'github_root_dir': 'devel/lib/ansible',
149
-    'github_cli_version': 'devel/lib/ansible/cli/',
150
-    'current_version': version,
151
-    'latest_version': '2.10',
152
-    # list specifically out of order to make latest work
153
-    'available_versions': ('latest', '2.9', '2.9_ja', '2.8', 'devel'),
154
-    'css_files': ('_static/ansible.css',  # overrides to the standard theme
155
-                  ),
156
-}
157
-
158
-# The style sheet to use for HTML and HTML Help pages. A file of that name
159
-# must exist either in Sphinx' static/ path, or in one of the custom paths
160
-# given in html_static_path.
161
-# html_style = 'solar.css'
162
-
163
-# The name for this set of Sphinx documents.  If None, it defaults to
164
-# "<project> v<release> documentation".
165
-html_title = 'Ansible Documentation'
166
-
167
-# A shorter title for the navigation bar.  Default is the same as html_title.
168
-# html_short_title = None
169
-
170
-# The name of an image file (within the static path) to place at the top of
171
-# the sidebar.
172
-# html_logo =
173
-
174
-# The name of an image file (within the static path) to use as favicon of the
175
-# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
176
-# pixels large.
177
-# html_favicon = 'favicon.ico'
178
-
179
-# Add any paths that contain custom static files (such as style sheets) here,
180
-# relative to this directory. They are copied after the builtin static files,
181
-# so a file named "default.css" will overwrite the builtin "default.css".
182
-html_static_path = ['../_static']
183
-
184
-# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
185
-# using the given strftime format.
186
-html_last_updated_fmt = '%b %d, %Y'
187
-
188
-# If true, SmartyPants will be used to convert quotes and dashes to
189
-# typographically correct entities.
190
-# html_use_smartypants = True
191
-
192
-# Custom sidebar templates, maps document names to template names.
193
-# html_sidebars = {}
194
-
195
-# Additional templates that should be rendered to pages, maps page names to
196
-# template names.
197
-# html_additional_pages = {}
198
-
199
-# If false, no module index is generated.
200
-# html_use_modindex = True
201
-
202
-# If false, no index is generated.
203
-# html_use_index = True
204
-
205
-# If true, the index is split into individual pages for each letter.
206
-# html_split_index = False
207
-
208
-# If true, the reST sources are included in the HTML build as _sources/<name>.
209
-html_copy_source = False
210
-
211
-# If true, an OpenSearch description file will be output, and all pages will
212
-# contain a <link> tag referring to it.  The value of this option must be the
213
-# base URL from which the finished HTML is served.
214
-# html_use_opensearch = 'https://docs.ansible.com/ansible/latest'
215
-
216
-# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
217
-# html_file_suffix = ''
218
-
219
-# Output file base name for HTML help builder.
220
-htmlhelp_basename = 'Poseidodoc'
221
-
222
-# Configuration for sphinx-notfound-pages
223
-# with no 'notfound_template' and no 'notfound_context' set,
224
-# the extension builds 404.rst into a location-agnostic 404 page
225
-#
226
-# default is `en` - using this for the sub-site:
227
-notfound_default_language = "ansible"
228
-# default is `latest`:
229
-# setting explicitly - docsite serves up /ansible/latest/404.html
230
-# so keep this set to `latest` even on the `devel` branch
231
-# then no maintenance is needed when we branch a new stable_x.x
232
-notfound_default_version = "latest"
233
-# makes default setting explicit:
234
-notfound_no_urls_prefix = False
235
-
236
-# Options for LaTeX output
237
-# ------------------------
238
-
239
-# The paper size ('letter' or 'a4').
240
-# latex_paper_size = 'letter'
241
-
242
-# The font size ('10pt', '11pt' or '12pt').
243
-# latex_font_size = '10pt'
244
-
245
-# Grouping the document tree into LaTeX files. List of tuples
246
-# (source start file, target name, title, author, document class
247
-# [howto/manual]).
248
-latex_documents = [
249
-    ('index', 'ansible.tex', 'Ansible 2.2 Documentation', AUTHOR, 'manual'),
250
-]
251
-
252
-# The name of an image file (relative to this directory) to place at the top of
253
-# the title page.
254
-# latex_logo = None
255
-
256
-# For "manual" documents, if this is true, then toplevel headings are parts,
257
-# not chapters.
258
-# latex_use_parts = False
259
-
260
-# Additional stuff for the LaTeX preamble.
261
-# latex_preamble = ''
262
-
263
-# Documents to append as an appendix to all manuals.
264
-# latex_appendices = []
265
-
266
-# If false, no module index is generated.
267
-# latex_use_modindex = True
268
-
269
-autoclass_content = 'both'
270
-
271
-# Note:  Our strategy for intersphinx mappings is to have the upstream build location as the
272
-# canonical source and then cached copies of the mapping stored locally in case someone is building
273
-# when disconnected from the internet.  We then have a script to update the cached copies.
274
-#
275
-# Because of that, each entry in this mapping should have this format:
276
-#   name: ('http://UPSTREAM_URL', (None, 'path/to/local/cache.inv'))
277
-#
278
-# The update script depends on this format so deviating from this (for instance, adding a third
279
-# location for the mappning to live) will confuse it.
280
-intersphinx_mapping = {'python': ('https://docs.python.org/2/', (None, '../python2.inv')),
281
-                       'python3': ('https://docs.python.org/3/', (None, '../python3.inv')),
282
-                       'jinja2': ('http://jinja.palletsprojects.com/', (None, '../jinja2.inv')),
283
-                       'ansible_2_10': ('https://docs.ansible.com/ansible/2.10/', (None, '../ansible_2_10.inv')),
284
-                       'ansible_2_9': ('https://docs.ansible.com/ansible/2.9/', (None, '../ansible_2_9.inv')),
285
-                       'ansible_2_8': ('https://docs.ansible.com/ansible/2.8/', (None, '../ansible_2_8.inv')),
286
-                       'ansible_2_7': ('https://docs.ansible.com/ansible/2.7/', (None, '../ansible_2_7.inv')),
287
-                       'ansible_2_6': ('https://docs.ansible.com/ansible/2.6/', (None, '../ansible_2_6.inv')),
288
-                       'ansible_2_5': ('https://docs.ansible.com/ansible/2.5/', (None, '../ansible_2_5.inv')),
289
-                       }
290
-
291
-# linckchecker settings
292
-linkcheck_ignore = [
293
-    r'http://irc\.freenode\.net',
294
-]
295
-linkcheck_workers = 25
296
-# linkcheck_anchors = False
297 1
new file mode 100644
... ...
@@ -0,0 +1,84 @@
0
+.. _ansible_core_documentation:
1
+
2
+..
3
+   This is the index file for ansible-core. It gets symlinked to index.rst by the Makefile
4
+
5
+**************************
6
+Ansible Core Documentation
7
+**************************
8
+
9
+About ansible-core
10
+===================
11
+
12
+Ansible is an IT automation tool.  It can configure systems, deploy software, and orchestrate more advanced IT tasks such as continuous deployments or zero downtime rolling updates.
13
+
14
+Ansible's main goals are simplicity and ease-of-use. It also has a strong focus on security and reliability, featuring a minimum of moving parts, usage of OpenSSH for transport (with other transports and pull modes as alternatives), and a language that is designed around auditability by humans--even those not familiar with the program.
15
+
16
+We believe simplicity is relevant to all sizes of environments, so we design for busy users of all types: developers, sysadmins, release engineers, IT managers, and everyone in between. Ansible is appropriate for managing all environments, from small setups with a handful of instances to enterprise environments with many thousands of instances.
17
+
18
+You can learn more at `AnsibleFest <https://www.ansible.com/ansiblefest>`_, the annual event for all Ansible contributors, users, and customers hosted by Red Hat. AnsibleFest is the place to connect with others, learn new skills, and find a new friend to automate with.
19
+
20
+Ansible manages machines in an agent-less manner. There is never a question of how to upgrade remote daemons or the problem of not being able to manage systems because daemons are uninstalled.  Because OpenSSH is one of the most peer-reviewed open source components, security exposure is greatly reduced. Ansible is decentralized--it relies on your existing OS credentials to control access to remote machines. If needed, Ansible can easily connect with Kerberos, LDAP, and other centralized authentication management systems.
21
+
22
+This documentation covers the version of Ansible noted in the upper left corner of this page. We maintain multiple versions of Ansible and of the documentation, so please be sure you are using the version of the documentation that covers the version of Ansible you're using. For recent features, we note the version of Ansible where the feature was added.
23
+
24
+
25
+``ansible-core`` releases a new major release approximately twice a year. The core application evolves somewhat conservatively, valuing simplicity in language design and setup. Contributors develop and change modules and plugins, hosted in collections since version 2.10, much more quickly.
26
+
27
+
28
+
29
+.. toctree::
30
+   :maxdepth: 2
31
+   :caption: Installation, Upgrade & Configuration
32
+
33
+   installation_guide/index
34
+   porting_guides/core_porting_guides
35
+
36
+.. toctree::
37
+   :maxdepth: 2
38
+   :caption: Using Ansible Core
39
+
40
+   user_guide/index
41
+
42
+.. toctree::
43
+   :maxdepth: 2
44
+   :caption: Contributing to Ansible Core
45
+
46
+   community/index
47
+
48
+.. toctree::
49
+   :maxdepth: 2
50
+   :caption: Extending Ansible
51
+
52
+   dev_guide/index
53
+
54
+
55
+.. toctree::
56
+   :maxdepth: 1
57
+   :caption: Reference & Appendices
58
+
59
+   collections/index
60
+   collections/all_plugins
61
+   reference_appendices/playbooks_keywords
62
+   reference_appendices/common_return_values
63
+   reference_appendices/config
64
+   reference_appendices/general_precedence
65
+   reference_appendices/YAMLSyntax
66
+   reference_appendices/python_3_support
67
+   reference_appendices/interpreter_discovery
68
+   reference_appendices/release_and_maintenance
69
+   reference_appendices/test_strategies
70
+   dev_guide/testing/sanity/index
71
+   reference_appendices/faq
72
+   reference_appendices/glossary
73
+   reference_appendices/module_utils
74
+   reference_appendices/special_variables
75
+   reference_appendices/tower
76
+   reference_appendices/automationhub
77
+   reference_appendices/logging
78
+
79
+.. toctree::
80
+   :maxdepth: 2
81
+   :caption: Roadmaps
82
+
83
+   roadmap/ansible_base_roadmap_index.rst
0 84
deleted file mode 100644
... ...
@@ -1,106 +0,0 @@
1
-.. _ansible_documentation:
2
-
3
-Ansible Documentation
4
-=====================
5
-
6
-About Ansible
7
-`````````````
8
-
9
-Ansible is an IT automation tool.  It can configure systems, deploy software, and orchestrate more advanced IT tasks such as continuous deployments or zero downtime rolling updates.
10
-
11
-Ansible's main goals are simplicity and ease-of-use. It also has a strong focus on security and reliability, featuring a minimum of moving parts, usage of OpenSSH for transport (with other transports and pull modes as alternatives), and a language that is designed around auditability by humans--even those not familiar with the program.
12
-
13
-We believe simplicity is relevant to all sizes of environments, so we design for busy users of all types: developers, sysadmins, release engineers, IT managers, and everyone in between. Ansible is appropriate for managing all environments, from small setups with a handful of instances to enterprise environments with many thousands of instances.
14
-
15
-You can learn more at `AnsibleFest <https://www.ansible.com/ansiblefest>`_, the annual event for all Ansible contributors, users, and customers hosted by Red Hat. AnsibleFest is the place to connect with others, learn new skills, and find a new friend to automate with.
16
-
17
-Ansible manages machines in an agent-less manner. There is never a question of how to upgrade remote daemons or the problem of not being able to manage systems because daemons are uninstalled.  Because OpenSSH is one of the most peer-reviewed open source components, security exposure is greatly reduced. Ansible is decentralized--it relies on your existing OS credentials to control access to remote machines. If needed, Ansible can easily connect with Kerberos, LDAP, and other centralized authentication management systems.
18
-
19
-This documentation covers the version of Ansible noted in the upper left corner of this page. We maintain multiple versions of Ansible and of the documentation, so please be sure you are using the version of the documentation that covers the version of Ansible you're using. For recent features, we note the version of Ansible where the feature was added.
20
-
21
-Ansible releases a new major release of Ansible approximately three to four times per year. The core application evolves somewhat conservatively, valuing simplicity in language design and setup. Contributors develop and change modules and plugins, hosted in collections since version 2.10, much more quickly.
22
-
23
-.. toctree::
24
-   :maxdepth: 2
25
-   :caption: Installation, Upgrade & Configuration
26
-
27
-   installation_guide/index
28
-   porting_guides/porting_guides
29
-
30
-.. toctree::
31
-   :maxdepth: 2
32
-   :caption: Using Ansible
33
-
34
-   user_guide/index
35
-
36
-.. toctree::
37
-   :maxdepth: 2
38
-   :caption: Contributing to Ansible
39
-
40
-   community/index
41
-
42
-.. toctree::
43
-   :maxdepth: 2
44
-   :caption: Extending Ansible
45
-
46
-   dev_guide/index
47
-
48
-.. toctree::
49
-   :glob:
50
-   :maxdepth: 1
51
-   :caption: Common Ansible Scenarios
52
-
53
-   scenario_guides/cloud_guides
54
-   scenario_guides/network_guides
55
-   scenario_guides/virt_guides
56
-
57
-.. toctree::
58
-   :maxdepth: 2
59
-   :caption: Network Automation
60
-
61
-   network/getting_started/index
62
-   network/user_guide/index
63
-   network/dev_guide/index
64
-
65
-.. toctree::
66
-   :maxdepth: 2
67
-   :caption: Ansible Galaxy
68
-
69
-   galaxy/user_guide.rst
70
-   galaxy/dev_guide.rst
71
-
72
-
73
-.. toctree::
74
-   :maxdepth: 1
75
-   :caption: Reference & Appendices
76
-
77
-   collections/index
78
-   collections/all_plugins
79
-   reference_appendices/playbooks_keywords
80
-   reference_appendices/common_return_values
81
-   reference_appendices/config
82
-   reference_appendices/general_precedence
83
-   reference_appendices/YAMLSyntax
84
-   reference_appendices/python_3_support
85
-   reference_appendices/interpreter_discovery
86
-   reference_appendices/release_and_maintenance
87
-   reference_appendices/test_strategies
88
-   dev_guide/testing/sanity/index
89
-   reference_appendices/faq
90
-   reference_appendices/glossary
91
-   reference_appendices/module_utils
92
-   reference_appendices/special_variables
93
-   reference_appendices/tower
94
-   reference_appendices/automationhub
95
-   reference_appendices/logging
96
-
97
-
98
-.. toctree::
99
-   :maxdepth: 2
100
-   :caption: Release Notes
101
-
102
-.. toctree::
103
-   :maxdepth: 2
104
-   :caption: Roadmaps
105
-
106
-   roadmap/index.rst
107 1
new file mode 100644
... ...
@@ -0,0 +1,16 @@
0
+.. _core_porting_guides:
1
+
2
+***************************
3
+Ansible Core Porting Guides
4
+***************************
5
+
6
+This section lists porting guides that can help you in updating playbooks, plugins and other parts of your Ansible infrastructure from one version of ``ansible-core`` to the next.
7
+
8
+Please note that this is not a complete list. If you believe any extra information would be useful in these pages, you can edit by clicking `Edit on GitHub` on the top right, or raising an issue.
9
+
10
+.. toctree::
11
+   :maxdepth: 1
12
+   :glob:
13
+
14
+   porting_guide_core_2.11
15
+   porting_guide_base_2.10
0 16
deleted file mode 100644
... ...
@@ -1,85 +0,0 @@
1
-
2
-.. _porting_2.11_guide_base:
3
-
4
-*******************************
5
-Ansible-base 2.11 Porting Guide
6
-*******************************
7
-
8
-This section discusses the behavioral changes between Ansible-base 2.10 and Ansible-base 2.11.
9
-
10
-It is intended to assist in updating your playbooks, plugins and other parts of your Ansible infrastructure so they will work with this version of Ansible-base.
11
-
12
-We suggest you read this page along with the `Ansible-base Changelog for 2.11 <https://github.com/ansible/ansible/blob/stable-2.11/changelogs/CHANGELOG-v2.11.rst>`_ to understand what updates you may need to make.
13
-
14
-Ansible-base is mainly of interest for developers and users who only want to use a small, controlled subset of the available collections. Regular users should install ansible.
15
-
16
-The complete list of porting guides can be found at :ref:`porting guides <porting_guides>`.
17
-
18
-.. contents::
19
-
20
-Playbook
21
-========
22
-
23
-* The ``jinja2_native`` setting now does not affect the template module which implicitly returns strings. For the template lookup there is a new argument ``jinja2_native`` (off by default) to control that functionality. The rest of the Jinja2 expressions still operate based on the ``jinja2_native`` setting.
24
-
25
-
26
-Command Line
27
-============
28
-
29
-* The ``ansible-galaxy login`` command has been removed, as the underlying API it used for GitHub auth is being shut down. Publishing roles or
30
-  collections to Galaxy via ``ansible-galaxy`` now requires that a Galaxy API token be passed to the CLI via a token file (default location
31
-  ``~/.ansible/galaxy_token``) or (insecurely) via the ``--token`` argument to ``ansible-galaxy``.
32
-
33
-
34
-Other:
35
-======
36
-
37
-* The configuration system now validates the ``choices`` field, so any settings that currently violate it and are currently ignored will now cause an error.
38
-  For example, `ANSIBLE_COLLECTIONS_ON_ANSIBLE_VERSION_MISMATCH=0` will now cause an error (valid chioces are 'ignore', 'warn' or 'error'.
39
-
40
-Deprecated
41
-==========
42
-
43
-No notable changes
44
-
45
-
46
-Modules
47
-=======
48
-
49
-* The ``apt_key`` module has explicitly defined ``file`` as mutually exclusive with ``data``, ``keyserver`` and ``url``. They cannot be used together anymore.
50
-* The ``meta`` module now supports tags for user-defined tasks. Set the task's tags to 'always' to maintain the previous behavior. Internal ``meta`` tasks continue to always run.
51
-
52
-
53
-Modules removed
54
-
55
-The following modules no longer exist:
56
-
57
-* No notable changes
58
-
59
-
60
-Deprecation notices
61
-
62
-No notable changes
63
-
64
-
65
-Noteworthy module changes
66
-
67
-* facts - On NetBSD, ``ansible_virtualization_type`` now tries to report a more accurate result than ``xen`` when virtualized and not running on Xen.
68
-* facts - Virtualization facts now include ``virtualization_tech_guest`` and ``virtualization_tech_host`` keys. These are lists of virtualization technologies that a guest is a part of, or that a host provides, respectively. As an example, a host may be set up to provide both KVM and VirtualBox, and these will be included in ``virtualization_tech_host``, and a podman container running on a VM powered by KVM will have a ``virtualization_tech_guest`` of ``["kvm", "podman", "container"]``.
69
-* The parameter ``filter`` type is changed from ``string`` to ``list`` in the :ref:`setup <setup_module>` module in order to use more than one filter. Previous behaviour (using a ``string``) still remains and works as a single filter.
70
-
71
-
72
-Plugins
73
-=======
74
-
75
-* inventory plugins - ``CachePluginAdjudicator.flush()`` now calls the underlying cache plugin's ``flush()`` instead of only deleting keys that it knows about. Inventory plugins should use ``delete()`` to remove any specific keys. As a user, this means that when an inventory plugin calls its ``clear_cache()`` method, facts could also be flushed from the cache. To work around this, users can configure inventory plugins to use a cache backend that is independent of the facts cache.
76
-* callback plugins - ``meta`` task execution is now sent to ``v2_playbook_on_task_start`` like any other task. By default, only explicit meta tasks are sent there. Callback plugins can opt-in to receiving internal, implicitly created tasks to act on those as well, as noted in the plugin development documentation.
77
-* The ``choices`` are now validated, so plugins that were using incorrect or incomplete choices will now issue an error if the value provided does not match. This has a simple fix: update the entries in ``choices`` to match reality.
78
-
79
-Porting custom scripts
80
-======================
81
-
82
-No notable changes
83 1
new file mode 100644
... ...
@@ -0,0 +1,85 @@
0
+
1
+.. _porting_2.11_guide_core:
2
+
3
+*******************************
4
+Ansible-core 2.11 Porting Guide
5
+*******************************
6
+
7
+This section discusses the behavioral changes between ``ansible-base`` 2.10 and ``ansible-core`` 2.11.
8
+
9
+It is intended to assist in updating your playbooks, plugins and other parts of your Ansible infrastructure so they will work with this version of ``ansible-core``.
10
+
11
+We suggest you read this page along with the `ansible-core Changelog for 2.11 <https://github.com/ansible/ansible/blob/stable-2.11/changelogs/CHANGELOG-v2.11.rst>`_ to understand what updates you may need to make.
12
+
13
+``ansible-core`` is mainly of interest for developers and users who only want to use a small, controlled subset of the available collections. Regular users should install Ansible.
14
+
15
+The complete list of porting guides can be found at :ref:`porting guides <porting_guides>`.
16
+
17
+.. contents::
18
+
19
+Playbook
20
+========
21
+
22
+* The ``jinja2_native`` setting now does not affect the template module which implicitly returns strings. For the template lookup there is a new argument ``jinja2_native`` (off by default) to control that functionality. The rest of the Jinja2 expressions still operate based on the ``jinja2_native`` setting.
23
+
24
+
25
+Command Line
26
+============
27
+
28
+* The ``ansible-galaxy login`` command has been removed, as the underlying API it used for GitHub auth is being shut down. Publishing roles or
29
+  collections to Galaxy via ``ansible-galaxy`` now requires that a Galaxy API token be passed to the CLI via a token file (default location
30
+  ``~/.ansible/galaxy_token``) or (insecurely) via the ``--token`` argument to ``ansible-galaxy``.
31
+
32
+
33
+Other:
34
+======
35
+
36
+* The configuration system now validates the ``choices`` field, so any settings that currently violate it and are currently ignored will now cause an error.
37
+  For example, `ANSIBLE_COLLECTIONS_ON_ANSIBLE_VERSION_MISMATCH=0` will now cause an error (valid chioces are 'ignore', 'warn' or 'error'.
38
+
39
+Deprecated
40
+==========
41
+
42
+No notable changes
43
+
44
+
45
+Modules
46
+=======
47
+
48
+* The ``apt_key`` module has explicitly defined ``file`` as mutually exclusive with ``data``, ``keyserver`` and ``url``. They cannot be used together anymore.
49
+* The ``meta`` module now supports tags for user-defined tasks. Set the task's tags to 'always' to maintain the previous behavior. Internal ``meta`` tasks continue to always run.
50
+
51
+
52
+Modules removed
53
+---------------
54
+
55
+The following modules no longer exist:
56
+
57
+* No notable changes
58
+
59
+
60
+Deprecation notices
61
+-------------------
62
+
63
+No notable changes
64
+
65
+
66
+Noteworthy module changes
67
+-------------------------
68
+
69
+* facts - On NetBSD, ``ansible_virtualization_type`` now tries to report a more accurate result than ``xen`` when virtualized and not running on Xen.
70
+* facts - Virtualization facts now include ``virtualization_tech_guest`` and ``virtualization_tech_host`` keys. These are lists of virtualization technologies that a guest is a part of, or that a host provides, respectively. As an example, a host may be set up to provide both KVM and VirtualBox, and these will be included in ``virtualization_tech_host``, and a podman container running on a VM powered by KVM will have a ``virtualization_tech_guest`` of ``["kvm", "podman", "container"]``.
71
+* The parameter ``filter`` type is changed from ``string`` to ``list`` in the :ref:`setup <setup_module>` module in order to use more than one filter. Previous behaviour (using a ``string``) still remains and works as a single filter.
72
+
73
+
74
+Plugins
75
+=======
76
+
77
+* inventory plugins - ``CachePluginAdjudicator.flush()`` now calls the underlying cache plugin's ``flush()`` instead of only deleting keys that it knows about. Inventory plugins should use ``delete()`` to remove any specific keys. As a user, this means that when an inventory plugin calls its ``clear_cache()`` method, facts could also be flushed from the cache. To work around this, users can configure inventory plugins to use a cache backend that is independent of the facts cache.
78
+* callback plugins - ``meta`` task execution is now sent to ``v2_playbook_on_task_start`` like any other task. By default, only explicit meta tasks are sent there. Callback plugins can opt-in to receiving internal, implicitly created tasks to act on those as well, as noted in the plugin development documentation.
79
+* The ``choices`` are now validated, so plugins that were using incorrect or incomplete choices will now issue an error if the value provided does not match. This has a simple fix: update the entries in ``choices`` to match reality.
80
+
81
+Porting custom scripts
82
+======================
83
+
84
+No notable changes
... ...
@@ -6,16 +6,12 @@ Ansible Porting Guides
6 6
 
7 7
 This section lists porting guides that can help you in updating playbooks, plugins and other parts of your Ansible infrastructure from one version of Ansible to the next.
8 8
 
9
-Please note that this is not a complete list. If you believe any extra information would be useful in these pages, you can edit by clicking `Edit on GitHub` on the top right, or raising an issue.
10
-
11 9
 .. toctree::
12 10
    :maxdepth: 1
13 11
    :glob:
14 12
 
15
-   porting_guide_base_2.11
16 13
    porting_guide_3
17 14
    porting_guide_2.10
18
-   porting_guide_base_2.10
19 15
    porting_guide_2.9
20 16
    porting_guide_2.8
21 17
    porting_guide_2.7
... ...
@@ -2,7 +2,7 @@
2 2
 Ansible project 3.0
3 3
 ===================
4 4
 
5
-This release schedule includes dates for the `ansible <https://pypi.org/project/ansible/>`_ package, with a few dates for the `ansible-base <https://pypi.org/project/ansible-base/>`_ package as well. All dates are subject to change. See :ref:`base_roadmap_2_11` for the most recent updates on ``ansible-base``.
5
+This release schedule includes dates for the `ansible <https://pypi.org/project/ansible/>`_ package, with a few dates for the `ansible-base <https://pypi.org/project/ansible-base/>`_ package as well. All dates are subject to change. Ansible 3.x.x includes ``ansible-base`` 2.10. See :ref:`base_roadmap_2_10` for the most recent updates on ``ansible-base``.
6 6
 
7 7
 .. contents::
8 8
    :local:
... ...
@@ -43,3 +43,8 @@ Ansible 3.x.x minor releases will occur approximately every three weeks if chang
43 43
 
44 44
 
45 45
 For more information, reach out on a mailing list or an IRC channel - see :ref:`communication` for more details.
46
+
47
+ansible-base release
48
+====================
49
+
50
+Ansible 3.x.x works with ``ansible-base`` 2.10. See :ref:`base_roadmap_2_10` for details.
... ...
@@ -1,15 +1,19 @@
1
-.. _ansible_base_roadmaps:
1
+.. _ansible_core_roadmaps:
2 2
 
3
-ansible-base Roadmap
3
+ansible-core Roadmaps
4 4
 =====================
5 5
 
6
-The ``ansible-base`` team develops a roadmap for each major and minor ``ansible-base`` release. The latest roadmap shows current work; older roadmaps provide a history of the project. We don't publish roadmaps for subminor versions. So 2.10 and 2.11 have roadmaps, but 2.10.1 does not.
6
+The ``ansible-core`` team develops a roadmap for each major and minor ``ansible-core`` release. The latest roadmap shows current work; older roadmaps provide a history of the project. We don't publish roadmaps for subminor versions. So 2.10 and 2.11 have roadmaps, but 2.10.1 does not.
7
+
8
+.. note::
9
+
10
+	Ansible renamed ``ansible-base`` to ``ansible-core``.
7 11
 
8 12
 We incorporate team and community feedback in each roadmap, and aim for further transparency and better inclusion of both community desires and submissions.
9 13
 
10
-Each roadmap offers a *best guess*, based on the ``ansible-base`` team's experience and on requests and feedback from the community, of what will be included in a given release. However, some items on the roadmap may be dropped due to time constraints, lack of community maintainers, and so on.
14
+Each roadmap offers a *best guess*, based on the ``ansible-core`` team's experience and on requests and feedback from the community, of what will be included in a given release. However, some items on the roadmap may be dropped due to time constraints, lack of community maintainers, and so on.
11 15
 
12
-Each roadmap is published both as an idea of what is upcoming in ``ansible-base``, and as a medium for seeking further feedback from the community.
16
+Each roadmap is published both as an idea of what is upcoming in ``ansible-core``, and as a medium for seeking further feedback from the community.
13 17
 
14 18
 You can submit feedback on the current roadmap in multiple ways:
15 19
 
... ...
@@ -22,7 +26,7 @@ See :ref:`Ansible communication channels <communication>` for details on how to
22 22
 .. toctree::
23 23
    :maxdepth: 1
24 24
    :glob:
25
-   :caption: ansible-base Roadmaps
25
+   :caption: ansible-core Roadmaps
26 26
 
27 27
    ROADMAP_2_11
28 28
    ROADMAP_2_10
... ...
@@ -23,6 +23,7 @@ See :ref:`Ansible communication channels <communication>` for details on how to
23 23
    :glob:
24 24
    :caption: Ansible Release Roadmaps
25 25
 
26
-   COLLECTIONS_2_10
27
-   COLLECTIONS_3_0
28 26
    COLLECTIONS_4
27
+   COLLECTIONS_3_0
28
+   COLLECTIONS_2_10
29
+   old_roadmap_index
... ...
@@ -10,5 +10,3 @@ Roadmaps
10 10
    ansible_roadmap_index
11 11
    ansible_base_roadmap_index
12 12
    old_roadmap_index
13
-
14
-   
15 13
new file mode 100644
... ...
@@ -0,0 +1,300 @@
0
+# -*- coding: utf-8 -*-
1
+#
2
+# documentation build configuration file, created by
3
+# sphinx-quickstart on Sat Sep 27 13:23:22 2008-2009.
4
+#
5
+# This file is execfile()d with the current directory set to its
6
+# containing dir.
7
+#
8
+# The contents of this file are pickled, so don't put values in the namespace
9
+# that aren't pickleable (module imports are okay, they're removed
10
+# automatically).
11
+#
12
+# All configuration values have a default value; values that are commented out
13
+# serve to show the default value.
14
+
15
+from __future__ import (absolute_import, division, print_function)
16
+__metaclass__ = type
17
+
18
+import sys
19
+import os
20
+
21
+# pip install sphinx_rtd_theme
22
+# import sphinx_rtd_theme
23
+# html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
24
+
25
+# If your extensions are in another directory, add it here. If the directory
26
+# is relative to the documentation root, use os.path.abspath to make it
27
+# absolute, like shown here.
28
+# sys.path.append(os.path.abspath('some/directory'))
29
+#
30
+sys.path.insert(0, os.path.join('ansible', 'lib'))
31
+sys.path.append(os.path.abspath(os.path.join('..', '_extensions')))
32
+
33
+# We want sphinx to document the ansible modules contained in this repository,
34
+# not those that may happen to be installed in the version
35
+# of Python used to run sphinx.  When sphinx loads in order to document,
36
+# the repository version needs to be the one that is loaded:
37
+sys.path.insert(0, os.path.abspath(os.path.join('..', '..', '..', 'lib')))
38
+
39
+VERSION = '2.10'
40
+AUTHOR = 'Ansible, Inc'
41
+
42
+
43
+# General configuration
44
+# ---------------------
45
+
46
+# Add any Sphinx extension module names here, as strings.
47
+# They can be extensions
48
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
49
+# TEST: 'sphinxcontrib.fulltoc'
50
+extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'pygments_lexer', 'notfound.extension']
51
+
52
+# Later on, add 'sphinx.ext.viewcode' to the list if you want to have
53
+# colorized code generated too for references.
54
+
55
+
56
+# Add any paths that contain templates here, relative to this directory.
57
+templates_path = ['.templates']
58
+
59
+# The suffix of source filenames.
60
+source_suffix = '.rst'
61
+
62
+# The master toctree document.
63
+master_doc = 'index'
64
+
65
+# General substitutions.
66
+project = 'Ansible'
67
+copyright = "2021 Red Hat, Inc."
68
+
69
+# The default replacements for |version| and |release|, also used in various
70
+# other places throughout the built documents.
71
+#
72
+# The short X.Y version.
73
+version = VERSION
74
+# The full version, including alpha/beta/rc tags.
75
+release = VERSION
76
+
77
+# There are two options for replacing |today|: either, you set today to some
78
+# non-false value, then it is used:
79
+# today = ''
80
+# Else, today_fmt is used as the format for a strftime call.
81
+today_fmt = '%B %d, %Y'
82
+
83
+# List of documents that shouldn't be included in the build.
84
+# unused_docs = []
85
+
86
+# List of directories, relative to source directories, that shouldn't be
87
+# searched for source files.
88
+# exclude_dirs = []
89
+
90
+# A list of glob-style patterns that should be excluded when looking
91
+# for source files.
92
+exclude_patterns = [
93
+    '2.10_index.rst',
94
+    'ansible_index.rst',
95
+    'core_index.rst',
96
+    'porting_guides/core_porting_guides',
97
+]
98
+
99
+# The reST default role (used for this markup: `text`) to use for all
100
+# documents.
101
+# default_role = None
102
+
103
+# If true, '()' will be appended to :func: etc. cross-reference text.
104
+# add_function_parentheses = True
105
+
106
+# If true, the current module name will be prepended to all description
107
+# unit titles (such as .. function::).
108
+# add_module_names = True
109
+
110
+# If true, sectionauthor and moduleauthor directives will be shown in the
111
+# output. They are ignored by default.
112
+# show_authors = False
113
+
114
+# The name of the Pygments (syntax highlighting) style to use.
115
+pygments_style = 'sphinx'
116
+
117
+highlight_language = 'YAML+Jinja'
118
+
119
+# Substitutions, variables, entities, & shortcuts for text which do not need to link to anything.
120
+# For titles which should be a link, use the intersphinx anchors set at the index, chapter, and section levels, such as  qi_start_:
121
+# |br| is useful for formatting fields inside of tables
122
+# |_| is a nonbreaking space; similarly useful inside of tables
123
+rst_epilog = """
124
+.. |br| raw:: html
125
+
126
+   <br>
127
+.. |_| unicode:: 0xA0
128
+    :trim:
129
+"""
130
+
131
+
132
+# Options for HTML output
133
+# -----------------------
134
+
135
+html_theme_path = ['../_themes']
136
+html_theme = 'sphinx_rtd_theme'
137
+html_short_title = 'Ansible Documentation'
138
+html_show_sphinx = False
139
+
140
+html_theme_options = {
141
+    'canonical_url': "https://docs.ansible.com/ansible/latest/",
142
+    'vcs_pageview_mode': 'edit'
143
+}
144
+
145
+html_context = {
146
+    'display_github': 'True',
147
+    'github_user': 'ansible',
148
+    'github_repo': 'ansible',
149
+    'github_version': 'devel/docs/docsite/rst/',
150
+    'github_module_version': 'devel/lib/ansible/modules/',
151
+    'github_root_dir': 'devel/lib/ansible',
152
+    'github_cli_version': 'devel/lib/ansible/cli/',
153
+    'current_version': version,
154
+    'latest_version': '2.10',
155
+    # list specifically out of order to make latest work
156
+    'available_versions': ('latest', '2.9', '2.9_ja', '2.8', 'devel'),
157
+    'css_files': ('_static/ansible.css',  # overrides to the standard theme
158
+                  ),
159
+}
160
+
161
+# The style sheet to use for HTML and HTML Help pages. A file of that name
162
+# must exist either in Sphinx' static/ path, or in one of the custom paths
163
+# given in html_static_path.
164
+# html_style = 'solar.css'
165
+
166
+# The name for this set of Sphinx documents.  If None, it defaults to
167
+# "<project> v<release> documentation".
168
+html_title = 'Ansible Documentation'
169
+
170
+# A shorter title for the navigation bar.  Default is the same as html_title.
171
+# html_short_title = None
172
+
173
+# The name of an image file (within the static path) to place at the top of
174
+# the sidebar.
175
+# html_logo =
176
+
177
+# The name of an image file (within the static path) to use as favicon of the
178
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
179
+# pixels large.
180
+# html_favicon = 'favicon.ico'
181
+
182
+# Add any paths that contain custom static files (such as style sheets) here,
183
+# relative to this directory. They are copied after the builtin static files,
184
+# so a file named "default.css" will overwrite the builtin "default.css".
185
+html_static_path = ['../_static']
186
+
187
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
188
+# using the given strftime format.
189
+html_last_updated_fmt = '%b %d, %Y'
190
+
191
+# If true, SmartyPants will be used to convert quotes and dashes to
192
+# typographically correct entities.
193
+# html_use_smartypants = True
194
+
195
+# Custom sidebar templates, maps document names to template names.
196
+# html_sidebars = {}
197
+
198
+# Additional templates that should be rendered to pages, maps page names to
199
+# template names.
200
+# html_additional_pages = {}
201
+
202
+# If false, no module index is generated.
203
+# html_use_modindex = True
204
+
205
+# If false, no index is generated.
206
+# html_use_index = True
207
+
208
+# If true, the index is split into individual pages for each letter.
209
+# html_split_index = False
210
+
211
+# If true, the reST sources are included in the HTML build as _sources/<name>.
212
+html_copy_source = False
213
+
214
+# If true, an OpenSearch description file will be output, and all pages will
215
+# contain a <link> tag referring to it.  The value of this option must be the
216
+# base URL from which the finished HTML is served.
217
+# html_use_opensearch = 'https://docs.ansible.com/ansible/latest'
218
+
219
+# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
220
+# html_file_suffix = ''
221
+
222
+# Output file base name for HTML help builder.
223
+htmlhelp_basename = 'Poseidodoc'
224
+
225
+# Configuration for sphinx-notfound-pages
226
+# with no 'notfound_template' and no 'notfound_context' set,
227
+# the extension builds 404.rst into a location-agnostic 404 page
228
+#
229
+# default is `en` - using this for the sub-site:
230
+notfound_default_language = "ansible"
231
+# default is `latest`:
232
+# setting explicitly - docsite serves up /ansible/latest/404.html
233
+# so keep this set to `latest` even on the `devel` branch
234
+# then no maintenance is needed when we branch a new stable_x.x
235
+notfound_default_version = "latest"
236
+# makes default setting explicit:
237
+notfound_no_urls_prefix = False
238
+
239
+# Options for LaTeX output
240
+# ------------------------
241
+
242
+# The paper size ('letter' or 'a4').
243
+# latex_paper_size = 'letter'
244
+
245
+# The font size ('10pt', '11pt' or '12pt').
246
+# latex_font_size = '10pt'
247
+
248
+# Grouping the document tree into LaTeX files. List of tuples
249
+# (source start file, target name, title, author, document class
250
+# [howto/manual]).
251
+latex_documents = [
252
+    ('index', 'ansible.tex', 'Ansible 2.2 Documentation', AUTHOR, 'manual'),
253
+]
254
+
255
+# The name of an image file (relative to this directory) to place at the top of
256
+# the title page.
257
+# latex_logo = None
258
+
259
+# For "manual" documents, if this is true, then toplevel headings are parts,
260
+# not chapters.
261
+# latex_use_parts = False
262
+
263
+# Additional stuff for the LaTeX preamble.
264
+# latex_preamble = ''
265
+
266
+# Documents to append as an appendix to all manuals.
267
+# latex_appendices = []
268
+
269
+# If false, no module index is generated.
270
+# latex_use_modindex = True
271
+
272
+autoclass_content = 'both'
273
+
274
+# Note:  Our strategy for intersphinx mappings is to have the upstream build location as the
275
+# canonical source and then cached copies of the mapping stored locally in case someone is building
276
+# when disconnected from the internet.  We then have a script to update the cached copies.
277
+#
278
+# Because of that, each entry in this mapping should have this format:
279
+#   name: ('http://UPSTREAM_URL', (None, 'path/to/local/cache.inv'))
280
+#
281
+# The update script depends on this format so deviating from this (for instance, adding a third
282
+# location for the mappning to live) will confuse it.
283
+intersphinx_mapping = {'python': ('https://docs.python.org/2/', (None, '../python2.inv')),
284
+                       'python3': ('https://docs.python.org/3/', (None, '../python3.inv')),
285
+                       'jinja2': ('http://jinja.palletsprojects.com/', (None, '../jinja2.inv')),
286
+                       'ansible_2_10': ('https://docs.ansible.com/ansible/2.10/', (None, '../ansible_2_10.inv')),
287
+                       'ansible_2_9': ('https://docs.ansible.com/ansible/2.9/', (None, '../ansible_2_9.inv')),
288
+                       'ansible_2_8': ('https://docs.ansible.com/ansible/2.8/', (None, '../ansible_2_8.inv')),
289
+                       'ansible_2_7': ('https://docs.ansible.com/ansible/2.7/', (None, '../ansible_2_7.inv')),
290
+                       'ansible_2_6': ('https://docs.ansible.com/ansible/2.6/', (None, '../ansible_2_6.inv')),
291
+                       'ansible_2_5': ('https://docs.ansible.com/ansible/2.5/', (None, '../ansible_2_5.inv')),
292
+                       }
293
+
294
+# linckchecker settings
295
+linkcheck_ignore = [
296
+    r'http://irc\.freenode\.net',
297
+]
298
+linkcheck_workers = 25
299
+# linkcheck_anchors = False
0 300
new file mode 100644
... ...
@@ -0,0 +1,306 @@
0
+# -*- coding: utf-8 -*-
1
+#
2
+# documentation build configuration file, created by
3
+# sphinx-quickstart on Sat Sep 27 13:23:22 2008-2009.
4
+#
5
+# This file is execfile()d with the current directory set to its
6
+# containing dir.
7
+#
8
+# The contents of this file are pickled, so don't put values in the namespace
9
+# that aren't pickleable (module imports are okay, they're removed
10
+# automatically).
11
+#
12
+# All configuration values have a default value; values that are commented out
13
+# serve to show the default value.
14
+
15
+from __future__ import (absolute_import, division, print_function)
16
+__metaclass__ = type
17
+
18
+import sys
19
+import os
20
+
21
+# pip install sphinx_rtd_theme
22
+# import sphinx_rtd_theme
23
+# html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
24
+
25
+# If your extensions are in another directory, add it here. If the directory
26
+# is relative to the documentation root, use os.path.abspath to make it
27
+# absolute, like shown here.
28
+# sys.path.append(os.path.abspath('some/directory'))
29
+#
30
+sys.path.insert(0, os.path.join('ansible', 'lib'))
31
+sys.path.append(os.path.abspath(os.path.join('..', '_extensions')))
32
+
33
+# We want sphinx to document the ansible modules contained in this repository,
34
+# not those that may happen to be installed in the version
35
+# of Python used to run sphinx.  When sphinx loads in order to document,
36
+# the repository version needs to be the one that is loaded:
37
+sys.path.insert(0, os.path.abspath(os.path.join('..', '..', '..', 'lib')))
38
+
39
+VERSION = 'devel'
40
+AUTHOR = 'Ansible, Inc'
41
+
42
+
43
+# General configuration
44
+# ---------------------
45
+
46
+# Add any Sphinx extension module names here, as strings.
47
+# They can be extensions
48
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
49
+# TEST: 'sphinxcontrib.fulltoc'
50
+extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'pygments_lexer', 'notfound.extension']
51
+
52
+# Later on, add 'sphinx.ext.viewcode' to the list if you want to have
53
+# colorized code generated too for references.
54
+
55
+
56
+# Add any paths that contain templates here, relative to this directory.
57
+templates_path = ['.templates']
58
+
59
+# The suffix of source filenames.
60
+source_suffix = '.rst'
61
+
62
+# The master toctree document.
63
+master_doc = 'index'
64
+
65
+# General substitutions.
66
+project = 'Ansible'
67
+copyright = "2021 Red Hat, Inc."
68
+
69
+# The default replacements for |version| and |release|, also used in various
70
+# other places throughout the built documents.
71
+#
72
+# The short X.Y version.
73
+version = VERSION
74
+# The full version, including alpha/beta/rc tags.
75
+release = VERSION
76
+
77
+# There are two options for replacing |today|: either, you set today to some
78
+# non-false value, then it is used:
79
+# today = ''
80
+# Else, today_fmt is used as the format for a strftime call.
81
+today_fmt = '%B %d, %Y'
82
+
83
+# List of documents that shouldn't be included in the build.
84
+# unused_docs = []
85
+
86
+# List of directories, relative to source directories, that shouldn't be
87
+# searched for source files.
88
+# exclude_dirs = []
89
+
90
+# A list of glob-style patterns that should be excluded when looking
91
+# for source files.
92
+exclude_patterns = [
93
+    '2.10_index.rst',
94
+    'ansible_index.rst',
95
+    'core_index.rst',
96
+    'porting_guides/core_porting_guides.rst',
97
+    'porting_guides/porting_guide_base_2.10.rst',
98
+    'porting_guides/porting_guide_core_2.11.rst',
99
+    'roadmap/index.rst',
100
+    'roadmap/ansible_base_roadmap_index.rst',
101
+    'roadmap/ROADMAP_2_10.rst',
102
+    'roadmap/ROADMAP_2_11.rst'
103
+]
104
+
105
+# The reST default role (used for this markup: `text`) to use for all
106
+# documents.
107
+# default_role = None
108
+
109
+# If true, '()' will be appended to :func: etc. cross-reference text.
110
+# add_function_parentheses = True
111
+
112
+# If true, the current module name will be prepended to all description
113
+# unit titles (such as .. function::).
114
+# add_module_names = True
115
+
116
+# If true, sectionauthor and moduleauthor directives will be shown in the
117
+# output. They are ignored by default.
118
+# show_authors = False
119
+
120
+# The name of the Pygments (syntax highlighting) style to use.
121
+pygments_style = 'sphinx'
122
+
123
+highlight_language = 'YAML+Jinja'
124
+
125
+# Substitutions, variables, entities, & shortcuts for text which do not need to link to anything.
126
+# For titles which should be a link, use the intersphinx anchors set at the index, chapter, and section levels, such as  qi_start_:
127
+# |br| is useful for formatting fields inside of tables
128
+# |_| is a nonbreaking space; similarly useful inside of tables
129
+rst_epilog = """
130
+.. |br| raw:: html
131
+
132
+   <br>
133
+.. |_| unicode:: 0xA0
134
+    :trim:
135
+"""
136
+
137
+
138
+# Options for HTML output
139
+# -----------------------
140
+
141
+html_theme_path = ['../_themes']
142
+html_theme = 'sphinx_rtd_theme'
143
+html_short_title = 'Ansible Documentation'
144
+html_show_sphinx = False
145
+
146
+html_theme_options = {
147
+    'canonical_url': "https://docs.ansible.com/ansible/latest/",
148
+    'vcs_pageview_mode': 'edit'
149
+}
150
+
151
+html_context = {
152
+    'display_github': 'True',
153
+    'github_user': 'ansible',
154
+    'github_repo': 'ansible',
155
+    'github_version': 'devel/docs/docsite/rst/',
156
+    'github_module_version': 'devel/lib/ansible/modules/',
157
+    'github_root_dir': 'devel/lib/ansible',
158
+    'github_cli_version': 'devel/lib/ansible/cli/',
159
+    'current_version': version,
160
+    'latest_version': '2.10',
161
+    # list specifically out of order to make latest work
162
+    'available_versions': ('latest', '2.9', '2.9_ja', '2.8', 'devel'),
163
+    'css_files': ('_static/ansible.css',  # overrides to the standard theme
164
+                  ),
165
+}
166
+
167
+# The style sheet to use for HTML and HTML Help pages. A file of that name
168
+# must exist either in Sphinx' static/ path, or in one of the custom paths
169
+# given in html_static_path.
170
+# html_style = 'solar.css'
171
+
172
+# The name for this set of Sphinx documents.  If None, it defaults to
173
+# "<project> v<release> documentation".
174
+html_title = 'Ansible Documentation'
175
+
176
+# A shorter title for the navigation bar.  Default is the same as html_title.
177
+# html_short_title = None
178
+
179
+# The name of an image file (within the static path) to place at the top of
180
+# the sidebar.
181
+# html_logo =
182
+
183
+# The name of an image file (within the static path) to use as favicon of the
184
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
185
+# pixels large.
186
+# html_favicon = 'favicon.ico'
187
+
188
+# Add any paths that contain custom static files (such as style sheets) here,
189
+# relative to this directory. They are copied after the builtin static files,
190
+# so a file named "default.css" will overwrite the builtin "default.css".
191
+html_static_path = ['../_static']
192
+
193
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
194
+# using the given strftime format.
195
+html_last_updated_fmt = '%b %d, %Y'
196
+
197
+# If true, SmartyPants will be used to convert quotes and dashes to
198
+# typographically correct entities.
199
+# html_use_smartypants = True
200
+
201
+# Custom sidebar templates, maps document names to template names.
202
+# html_sidebars = {}
203
+
204
+# Additional templates that should be rendered to pages, maps page names to
205
+# template names.
206
+# html_additional_pages = {}
207
+
208
+# If false, no module index is generated.
209
+# html_use_modindex = True
210
+
211
+# If false, no index is generated.
212
+# html_use_index = True
213
+
214
+# If true, the index is split into individual pages for each letter.
215
+# html_split_index = False
216
+
217
+# If true, the reST sources are included in the HTML build as _sources/<name>.
218
+html_copy_source = False
219
+
220
+# If true, an OpenSearch description file will be output, and all pages will
221
+# contain a <link> tag referring to it.  The value of this option must be the
222
+# base URL from which the finished HTML is served.
223
+# html_use_opensearch = 'https://docs.ansible.com/ansible/latest'
224
+
225
+# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
226
+# html_file_suffix = ''
227
+
228
+# Output file base name for HTML help builder.
229
+htmlhelp_basename = 'Poseidodoc'
230
+
231
+# Configuration for sphinx-notfound-pages
232
+# with no 'notfound_template' and no 'notfound_context' set,
233
+# the extension builds 404.rst into a location-agnostic 404 page
234
+#
235
+# default is `en` - using this for the sub-site:
236
+notfound_default_language = "ansible"
237
+# default is `latest`:
238
+# setting explicitly - docsite serves up /ansible/latest/404.html
239
+# so keep this set to `latest` even on the `devel` branch
240
+# then no maintenance is needed when we branch a new stable_x.x
241
+notfound_default_version = "latest"
242
+# makes default setting explicit:
243
+notfound_no_urls_prefix = False
244
+
245
+# Options for LaTeX output
246
+# ------------------------
247
+
248
+# The paper size ('letter' or 'a4').
249
+# latex_paper_size = 'letter'
250
+
251
+# The font size ('10pt', '11pt' or '12pt').
252
+# latex_font_size = '10pt'
253
+
254
+# Grouping the document tree into LaTeX files. List of tuples
255
+# (source start file, target name, title, author, document class
256
+# [howto/manual]).
257
+latex_documents = [
258
+    ('index', 'ansible.tex', 'Ansible 2.2 Documentation', AUTHOR, 'manual'),
259
+]
260
+
261
+# The name of an image file (relative to this directory) to place at the top of
262
+# the title page.
263
+# latex_logo = None
264
+
265
+# For "manual" documents, if this is true, then toplevel headings are parts,
266
+# not chapters.
267
+# latex_use_parts = False
268
+
269
+# Additional stuff for the LaTeX preamble.
270
+# latex_preamble = ''
271
+
272
+# Documents to append as an appendix to all manuals.
273
+# latex_appendices = []
274
+
275
+# If false, no module index is generated.
276
+# latex_use_modindex = True
277
+
278
+autoclass_content = 'both'
279
+
280
+# Note:  Our strategy for intersphinx mappings is to have the upstream build location as the
281
+# canonical source and then cached copies of the mapping stored locally in case someone is building
282
+# when disconnected from the internet.  We then have a script to update the cached copies.
283
+#
284
+# Because of that, each entry in this mapping should have this format:
285
+#   name: ('http://UPSTREAM_URL', (None, 'path/to/local/cache.inv'))
286
+#
287
+# The update script depends on this format so deviating from this (for instance, adding a third
288
+# location for the mappning to live) will confuse it.
289
+intersphinx_mapping = {'python': ('https://docs.python.org/2/', (None, '../python2.inv')),
290
+                       'python3': ('https://docs.python.org/3/', (None, '../python3.inv')),
291
+                       'jinja2': ('http://jinja.palletsprojects.com/', (None, '../jinja2.inv')),
292
+                       'ansible_2_10': ('https://docs.ansible.com/ansible/2.10/', (None, '../ansible_2_10.inv')),
293
+                       'ansible_2_9': ('https://docs.ansible.com/ansible/2.9/', (None, '../ansible_2_9.inv')),
294
+                       'ansible_2_8': ('https://docs.ansible.com/ansible/2.8/', (None, '../ansible_2_8.inv')),
295
+                       'ansible_2_7': ('https://docs.ansible.com/ansible/2.7/', (None, '../ansible_2_7.inv')),
296
+                       'ansible_2_6': ('https://docs.ansible.com/ansible/2.6/', (None, '../ansible_2_6.inv')),
297
+                       'ansible_2_5': ('https://docs.ansible.com/ansible/2.5/', (None, '../ansible_2_5.inv')),
298
+                       }
299
+
300
+# linckchecker settings
301
+linkcheck_ignore = [
302
+    r'http://irc\.freenode\.net',
303
+]
304
+linkcheck_workers = 25
305
+# linkcheck_anchors = False
0 306
new file mode 100644
... ...
@@ -0,0 +1,314 @@
0
+# -*- coding: utf-8 -*-
1
+#
2
+# documentation build configuration file, created by
3
+# sphinx-quickstart on Sat Sep 27 13:23:22 2008-2009.
4
+#
5
+# This file is execfile()d with the current directory set to its
6
+# containing dir.
7
+#
8
+# The contents of this file are pickled, so don't put values in the namespace
9
+# that aren't pickleable (module imports are okay, they're removed
10
+# automatically).
11
+#
12
+# All configuration values have a default value; values that are commented out
13
+# serve to show the default value.
14
+
15
+from __future__ import (absolute_import, division, print_function)
16
+__metaclass__ = type
17
+
18
+import sys
19
+import os
20
+
21
+# pip install sphinx_rtd_theme
22
+# import sphinx_rtd_theme
23
+# html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
24
+
25
+# If your extensions are in another directory, add it here. If the directory
26
+# is relative to the documentation root, use os.path.abspath to make it
27
+# absolute, like shown here.
28
+# sys.path.append(os.path.abspath('some/directory'))
29
+#
30
+sys.path.insert(0, os.path.join('ansible', 'lib'))
31
+sys.path.append(os.path.abspath(os.path.join('..', '_extensions')))
32
+
33
+# We want sphinx to document the ansible modules contained in this repository,
34
+# not those that may happen to be installed in the version
35
+# of Python used to run sphinx.  When sphinx loads in order to document,
36
+# the repository version needs to be the one that is loaded:
37
+sys.path.insert(0, os.path.abspath(os.path.join('..', '..', '..', 'lib')))
38
+
39
+VERSION = 'devel'
40
+AUTHOR = 'Ansible, Inc'
41
+
42
+
43
+# General configuration
44
+# ---------------------
45
+
46
+# Add any Sphinx extension module names here, as strings.
47
+# They can be extensions
48
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
49
+# TEST: 'sphinxcontrib.fulltoc'
50
+extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'pygments_lexer', 'notfound.extension']
51
+
52
+# Later on, add 'sphinx.ext.viewcode' to the list if you want to have
53
+# colorized code generated too for references.
54
+
55
+
56
+# Add any paths that contain templates here, relative to this directory.
57
+templates_path = ['.templates']
58
+
59
+# The suffix of source filenames.
60
+source_suffix = '.rst'
61
+
62
+# The master toctree document.
63
+master_doc = 'index'
64
+
65
+# General substitutions.
66
+project = 'Ansible'
67
+copyright = "2021 Red Hat, Inc."
68
+
69
+# The default replacements for |version| and |release|, also used in various
70
+# other places throughout the built documents.
71
+#
72
+# The short X.Y version.
73
+version = VERSION
74
+# The full version, including alpha/beta/rc tags.
75
+release = VERSION
76
+
77
+# There are two options for replacing |today|: either, you set today to some
78
+# non-false value, then it is used:
79
+# today = ''
80
+# Else, today_fmt is used as the format for a strftime call.
81
+today_fmt = '%B %d, %Y'
82
+
83
+# List of documents that shouldn't be included in the build.
84
+# unused_docs = []
85
+
86
+# List of directories, relative to source directories, that shouldn't be
87
+# searched for source files.
88
+# exclude_dirs = []
89
+
90
+# A list of glob-style patterns that should be excluded when looking
91
+# for source files.
92
+exclude_patterns = [
93
+    '2.10_index.rst',
94
+    'ansible_index.rst',
95
+    'core_index.rst',
96
+    'galaxy',
97
+    'network',
98
+    'scenario_guides',
99
+    'porting_guides/porting_guides.rst',
100
+    'porting_guides/porting_guide_2*',
101
+    'porting_guides/porting_guide_3*',
102
+    'roadmap/index.rst',
103
+    'roadmap/ansible_roadmap_index.rst',
104
+    'roadmap/old_roadmap_index.rst',
105
+    'roadmap/ROADMAP_2_5.rst',
106
+    'roadmap/ROADMAP_2_6.rst',
107
+    'roadmap/ROADMAP_2_7.rst',
108
+    'roadmap/ROADMAP_2_8.rst',
109
+    'roadmap/ROADMAP_2_9.rst',
110
+    'roadmap/COLLECTIONS*'
111
+]
112
+
113
+# The reST default role (used for this markup: `text`) to use for all
114
+# documents.
115
+# default_role = None
116
+
117
+# If true, '()' will be appended to :func: etc. cross-reference text.
118
+# add_function_parentheses = True
119
+
120
+# If true, the current module name will be prepended to all description
121
+# unit titles (such as .. function::).
122
+# add_module_names = True
123
+
124
+# If true, sectionauthor and moduleauthor directives will be shown in the
125
+# output. They are ignored by default.
126
+# show_authors = False
127
+
128
+# The name of the Pygments (syntax highlighting) style to use.
129
+pygments_style = 'sphinx'
130
+
131
+highlight_language = 'YAML+Jinja'
132
+
133
+# Substitutions, variables, entities, & shortcuts for text which do not need to link to anything.
134
+# For titles which should be a link, use the intersphinx anchors set at the index, chapter, and section levels, such as  qi_start_:
135
+# |br| is useful for formatting fields inside of tables
136
+# |_| is a nonbreaking space; similarly useful inside of tables
137
+rst_epilog = """
138
+.. |br| raw:: html
139
+
140
+   <br>
141
+.. |_| unicode:: 0xA0
142
+    :trim:
143
+"""
144
+
145
+
146
+# Options for HTML output
147
+# -----------------------
148
+
149
+html_theme_path = ['../_themes']
150
+html_theme = 'sphinx_rtd_theme'
151
+html_short_title = 'Ansible Core Documentation'
152
+html_show_sphinx = False
153
+
154
+html_theme_options = {
155
+    'canonical_url': "https://docs.ansible.com/ansible/latest/",
156
+    'vcs_pageview_mode': 'edit'
157
+}
158
+
159
+html_context = {
160
+    'display_github': 'True',
161
+    'github_user': 'ansible',
162
+    'github_repo': 'ansible',
163
+    'github_version': 'devel/docs/docsite/rst/',
164
+    'github_module_version': 'devel/lib/ansible/modules/',
165
+    'github_root_dir': 'devel/lib/ansible',
166
+    'github_cli_version': 'devel/lib/ansible/cli/',
167
+    'current_version': version,
168
+    'latest_version': '2.10',
169
+    # list specifically out of order to make latest work
170
+    'available_versions': ('devel'),
171
+    'css_files': ('_static/ansible.css',  # overrides to the standard theme
172
+                  ),
173
+}
174
+
175
+# The style sheet to use for HTML and HTML Help pages. A file of that name
176
+# must exist either in Sphinx' static/ path, or in one of the custom paths
177
+# given in html_static_path.
178
+# html_style = 'solar.css'
179
+
180
+# The name for this set of Sphinx documents.  If None, it defaults to
181
+# "<project> v<release> documentation".
182
+html_title = 'Ansible Core Documentation'
183
+
184
+# A shorter title for the navigation bar.  Default is the same as html_title.
185
+# html_short_title = None
186
+
187
+# The name of an image file (within the static path) to place at the top of
188
+# the sidebar.
189
+# html_logo =
190
+
191
+# The name of an image file (within the static path) to use as favicon of the
192
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
193
+# pixels large.
194
+# html_favicon = 'favicon.ico'
195
+
196
+# Add any paths that contain custom static files (such as style sheets) here,
197
+# relative to this directory. They are copied after the builtin static files,
198
+# so a file named "default.css" will overwrite the builtin "default.css".
199
+html_static_path = ['../_static']
200
+
201
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
202
+# using the given strftime format.
203
+html_last_updated_fmt = '%b %d, %Y'
204
+
205
+# If true, SmartyPants will be used to convert quotes and dashes to
206
+# typographically correct entities.
207
+# html_use_smartypants = True
208
+
209
+# Custom sidebar templates, maps document names to template names.
210
+# html_sidebars = {}
211
+
212
+# Additional templates that should be rendered to pages, maps page names to
213
+# template names.
214
+# html_additional_pages = {}
215
+
216
+# If false, no module index is generated.
217
+# html_use_modindex = True
218
+
219
+# If false, no index is generated.
220
+# html_use_index = True
221
+
222
+# If true, the index is split into individual pages for each letter.
223
+# html_split_index = False
224
+
225
+# If true, the reST sources are included in the HTML build as _sources/<name>.
226
+html_copy_source = False
227
+
228
+# If true, an OpenSearch description file will be output, and all pages will
229
+# contain a <link> tag referring to it.  The value of this option must be the
230
+# base URL from which the finished HTML is served.
231
+# html_use_opensearch = 'https://docs.ansible.com/ansible/latest'
232
+
233
+# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
234
+# html_file_suffix = ''
235
+
236
+# Output file base name for HTML help builder.
237
+htmlhelp_basename = 'Poseidodoc'
238
+
239
+# Configuration for sphinx-notfound-pages
240
+# with no 'notfound_template' and no 'notfound_context' set,
241
+# the extension builds 404.rst into a location-agnostic 404 page
242
+#
243
+# default is `en` - using this for the sub-site:
244
+notfound_default_language = "ansible"
245
+# default is `latest`:
246
+# setting explicitly - docsite serves up /ansible/latest/404.html
247
+# so keep this set to `latest` even on the `devel` branch
248
+# then no maintenance is needed when we branch a new stable_x.x
249
+notfound_default_version = "latest"
250
+# makes default setting explicit:
251
+notfound_no_urls_prefix = False
252
+
253
+# Options for LaTeX output
254
+# ------------------------
255
+
256
+# The paper size ('letter' or 'a4').
257
+# latex_paper_size = 'letter'
258
+
259
+# The font size ('10pt', '11pt' or '12pt').
260
+# latex_font_size = '10pt'
261
+
262
+# Grouping the document tree into LaTeX files. List of tuples
263
+# (source start file, target name, title, author, document class
264
+# [howto/manual]).
265
+latex_documents = [
266
+    ('index', 'ansible.tex', 'Ansible 2.2 Documentation', AUTHOR, 'manual'),
267
+]
268
+
269
+# The name of an image file (relative to this directory) to place at the top of
270
+# the title page.
271
+# latex_logo = None
272
+
273
+# For "manual" documents, if this is true, then toplevel headings are parts,
274
+# not chapters.
275
+# latex_use_parts = False
276
+
277
+# Additional stuff for the LaTeX preamble.
278
+# latex_preamble = ''
279
+
280
+# Documents to append as an appendix to all manuals.
281
+# latex_appendices = []
282
+
283
+# If false, no module index is generated.
284
+# latex_use_modindex = True
285
+
286
+autoclass_content = 'both'
287
+
288
+# Note:  Our strategy for intersphinx mappings is to have the upstream build location as the
289
+# canonical source and then cached copies of the mapping stored locally in case someone is building
290
+# when disconnected from the internet.  We then have a script to update the cached copies.
291
+#
292
+# Because of that, each entry in this mapping should have this format:
293
+#   name: ('http://UPSTREAM_URL', (None, 'path/to/local/cache.inv'))
294
+#
295
+# The update script depends on this format so deviating from this (for instance, adding a third
296
+# location for the mappning to live) will confuse it.
297
+intersphinx_mapping = {'python': ('https://docs.python.org/2/', (None, '../python2.inv')),
298
+                       'python3': ('https://docs.python.org/3/', (None, '../python3.inv')),
299
+                       'jinja2': ('http://jinja.palletsprojects.com/', (None, '../jinja2.inv')),
300
+                       'ansible_2_10': ('https://docs.ansible.com/ansible/2.10/', (None, '../ansible_2_10.inv')),
301
+                       'ansible_2_9': ('https://docs.ansible.com/ansible/2.9/', (None, '../ansible_2_9.inv')),
302
+                       'ansible_2_8': ('https://docs.ansible.com/ansible/2.8/', (None, '../ansible_2_8.inv')),
303
+                       'ansible_2_7': ('https://docs.ansible.com/ansible/2.7/', (None, '../ansible_2_7.inv')),
304
+                       'ansible_2_6': ('https://docs.ansible.com/ansible/2.6/', (None, '../ansible_2_6.inv')),
305
+                       'ansible_2_5': ('https://docs.ansible.com/ansible/2.5/', (None, '../ansible_2_5.inv')),
306
+                       }
307
+
308
+# linckchecker settings
309
+linkcheck_ignore = [
310
+    r'http://irc\.freenode\.net',
311
+]
312
+linkcheck_workers = 25
313
+# linkcheck_anchors = False
... ...
@@ -19,6 +19,7 @@ from ansible.release import __version__ as ansible_base__version__
19 19
 # Pylint doesn't understand Python3 namespace modules.
20 20
 # pylint: disable=relative-beyond-top-level
21 21
 from ..commands import Command
22
+from ..errors import InvalidUserInput, MissingUserInput
22 23
 # pylint: enable=relative-beyond-top-level
23 24
 
24 25
 
... ...
@@ -29,6 +30,67 @@ DEFAULT_TOP_DIR = pathlib.Path(__file__).parents[4]
29 29
 DEFAULT_OUTPUT_DIR = pathlib.Path(__file__).parents[4] / 'docs/docsite'
30 30
 
31 31
 
32
+class NoSuchFile(Exception):
33
+    """An expected file was not found."""
34
+
35
+
36
+#
37
+# Helpers
38
+#
39
+
40
+def find_latest_ansible_dir(build_data_working):
41
+    """Find the most recent ansible major version."""
42
+    # imports here so that they don't cause unnecessary deps for all of the plugins
43
+    from packaging.version import InvalidVersion, Version
44
+
45
+    ansible_directories = glob.glob(os.path.join(build_data_working, '[0-9.]*'))
46
+
47
+    # Find the latest ansible version directory
48
+    latest = None
49
+    latest_ver = Version('0')
50
+    for directory_name in (d for d in ansible_directories if os.path.isdir(d)):
51
+        try:
52
+            new_version = Version(os.path.basename(directory_name))
53
+        except InvalidVersion:
54
+            continue
55
+
56
+        if new_version > latest_ver:
57
+            latest_ver = new_version
58
+            latest = directory_name
59
+
60
+    if latest is None:
61
+        raise NoSuchFile('Could not find an ansible data directory in {0}'.format(build_data_working))
62
+
63
+    return latest
64
+
65
+
66
+def find_latest_deps_file(build_data_working, ansible_version):
67
+    """Find the most recent ansible deps file for the given ansible major version."""
68
+    # imports here so that they don't cause unnecessary deps for all of the plugins
69
+    from packaging.version import Version
70
+
71
+    data_dir = os.path.join(build_data_working, ansible_version)
72
+    deps_files = glob.glob(os.path.join(data_dir, '*.deps'))
73
+    if not deps_files:
74
+        raise Exception('No deps files exist for version {0}'.format(ansible_version))
75
+
76
+    # Find the latest version of the deps file for this major version
77
+    latest = None
78
+    latest_ver = Version('0')
79
+    for filename in deps_files:
80
+        with open(filename, 'r') as f:
81
+            deps_data = yaml.safe_load(f.read())
82
+        new_version = Version(deps_data['_ansible_version'])
83
+        if new_version > latest_ver:
84
+            latest_ver = new_version
85
+            latest = filename
86
+
87
+    if latest is None:
88
+        raise NoSuchFile('Could not find an ansible deps file in {0}'.format(data_dir))
89
+
90
+    return latest
91
+
92
+
32 93
 #
33 94
 # Subcommand base
34 95
 #
... ...
@@ -70,36 +132,23 @@ def generate_full_docs(args):
70 70
     # imports here so that they don't cause unnecessary deps for all of the plugins
71 71
     import sh
72 72
     from antsibull.cli import antsibull_docs
73
-    from packaging.version import Version
74
-
75
-    ansible_base_ver = Version(ansible_base__version__)
76
-    ansible_base_major_ver = '{0}.{1}'.format(ansible_base_ver.major, ansible_base_ver.minor)
77 73
 
78 74
     with TemporaryDirectory() as tmp_dir:
79 75
         sh.git(['clone', 'https://github.com/ansible-community/ansible-build-data'], _cwd=tmp_dir)
80
-        # This is wrong.  Once ansible and ansible-base major.minor versions get out of sync this
81
-        # will stop working.  We probably need to walk all subdirectories in reverse version order
82
-        # looking for the latest ansible version which uses something compatible with
83
-        # ansible_base_major_ver.
84
-        deps_files = glob.glob(os.path.join(tmp_dir, 'ansible-build-data',
85
-                                            ansible_base_major_ver, '*.deps'))
86
-        if not deps_files:
87
-            raise Exception('No deps files exist for version {0}'.format(ansible_base_major_ver))
88
-
89
-        # Find the latest version of the deps file for this version
90
-        latest = None
91
-        latest_ver = Version('0')
92
-        for filename in deps_files:
93
-            with open(filename, 'r') as f:
94
-                deps_data = yaml.safe_load(f.read())
95
-            new_version = Version(deps_data['_ansible_version'])
96
-            if new_version > latest_ver:
97
-                latest_ver = new_version
98
-                latest = filename
99
-
100
-        # Make a copy of the deps file so that we can set the ansible-base version to use
76
+        # If we want to validate that the ansible version and ansible-base branch version match,
77
+        # this would be the place to do it.
78
+
79
+        build_data_working = os.path.join(tmp_dir, 'ansible-build-data')
80
+
81
+        ansible_version = args.ansible_version
82
+        if ansible_version is None:
83
+            ansible_version = find_latest_ansible_dir(build_data_working)
84
+
85
+        latest_filename = find_latest_deps_file(build_data_working, ansible_version)
86
+
87
+        # Make a copy of the deps file so that we can set the ansible-base version we'll use
101 88
         modified_deps_file = os.path.join(tmp_dir, 'ansible.deps')
102
-        shutil.copyfile(latest, modified_deps_file)
89
+        shutil.copyfile(latest_filename, modified_deps_file)
103 90
 
104 91
         # Put our version of ansible-base into the deps file
105 92
         with open(modified_deps_file, 'r') as f:
... ...
@@ -136,6 +185,8 @@ class CollectionPluginDocs(Command):
136 136
                             ' documentation location that says the module is in a collection and'
137 137
                             ' point to generated plugin documentation under the collections/'
138 138
                             ' hierarchy.')
139
+        # I think we should make the actions a subparser but need to look in git history and see if
140
+        # we tried that and changed it for some reason.
139 141
         parser.add_argument('action', action='store', choices=('full', 'base', 'named'),
140 142
                             default='full', help=cls._ACTION_HELP)
141 143
         parser.add_argument("-o", "--output-dir", action="store", dest="output_dir",
... ...
@@ -149,10 +200,17 @@ class CollectionPluginDocs(Command):
149 149
                             dest="limit_to", default=None,
150 150
                             help="Limit building module documentation to comma-separated list of"
151 151
                             " plugins. Specify non-existing plugin name for no plugins.")
152
+        parser.add_argument('--ansible-version', action='store',
153
+                            dest='ansible_version', default=None,
154
+                            help='The version of the ansible package to make documentation for.'
155
+                            '  This only makes sense when used with full.')
152 156
 
153 157
     @staticmethod
154 158
     def main(args):
155
-        # normalize CLI args
159
+        # normalize and validate CLI args
160
+
161
+        if args.ansible_version and args.action != 'full':
162
+            raise InvalidUserInput('--ansible-version is only for use with "full".')
156 163
 
157 164
         if not args.output_dir:
158 165
             args.output_dir = os.path.abspath(str(DEFAULT_OUTPUT_DIR))
... ...
@@ -30,7 +30,7 @@ def main():
30 30
         f.writelines(lines)
31 31
 
32 32
     try:
33
-        cmd = ['make', 'base_singlehtmldocs']
33
+        cmd = ['make', 'core_singlehtmldocs']
34 34
         sphinx = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=docs_dir)
35 35
         stdout, stderr = sphinx.communicate()
36 36
     finally:
... ...
@@ -53,6 +53,9 @@ def assemble_files_to_ship(complete_file_list):
53 53
         'test/support/README.md',
54 54
         '.cherry_picker.toml',
55 55
         '.mailmap',
56
+        # Generated as part of a build step
57
+        'docs/docsite/rst/conf.py',
58
+        'docs/docsite/rst/index.rst',
56 59
         # Possibly should be included
57 60
         'examples/scripts/uptime.py',
58 61
         'examples/scripts/my_test.py',