diff --git a/docs/docsite/config.yml b/docs/docsite/config.yml index 1d6cf8554a..50b4a2f347 100644 --- a/docs/docsite/config.yml +++ b/docs/docsite/config.yml @@ -5,3 +5,8 @@ changelog: write_changelog: true + +ansible_output: + global_env: + ANSIBLE_STDOUT_CALLBACK: community.general.tasks_only + ANSIBLE_COLLECTIONS_TASKS_ONLY_NUMBER_OF_COLUMNS: 90 diff --git a/docs/docsite/rst/filter_guide_abstract_informations_counting_elements_in_sequence.rst b/docs/docsite/rst/filter_guide_abstract_informations_counting_elements_in_sequence.rst index 98e8eb1c4d..84759701f5 100644 --- a/docs/docsite/rst/filter_guide_abstract_informations_counting_elements_in_sequence.rst +++ b/docs/docsite/rst/filter_guide_abstract_informations_counting_elements_in_sequence.rst @@ -20,6 +20,17 @@ The :ansplugin:`community.general.counter filter plugin { "msg": "scsi_2" } diff --git a/docs/docsite/rst/filter_guide_abstract_informations_dictionaries.rst b/docs/docsite/rst/filter_guide_abstract_informations_dictionaries.rst index e5b5bb7e36..dcc4a96369 100644 --- a/docs/docsite/rst/filter_guide_abstract_informations_dictionaries.rst +++ b/docs/docsite/rst/filter_guide_abstract_informations_dictionaries.rst @@ -31,16 +31,27 @@ You can use the :ansplugin:`community.general.dict_kv filter { "msg": { "thatsmyvar": "myvalue" } } - TASK [Create a list of dictionaries where the 'server' field is taken from a list] ******* + TASK [Create a list of dictionaries where the 'server' field is taken from a list] ******** ok: [localhost] => { "msg": [ { @@ -87,9 +98,20 @@ If you need to convert a list of key-value pairs to a dictionary, you can use th This produces: +.. ansible-output-data:: + + variables: + task: + previous_code_block: yaml+jinja + playbook: |- + - hosts: localhost + gather_facts: false + tasks: + @{{ task | indent(4) }}@ + .. code-block:: ansible-output - TASK [Create a dictionary with the dict function] **************************************** + TASK [Create a dictionary with the dict function] ***************************************** ok: [localhost] => { "msg": { "1": 2, @@ -97,7 +119,7 @@ This produces: } } - TASK [Create a dictionary with the community.general.dict filter] ************************ + TASK [Create a dictionary with the community.general.dict filter] ************************* ok: [localhost] => { "msg": { "1": 2, @@ -105,7 +127,7 @@ This produces: } } - TASK [Create a list of dictionaries with map and the community.general.dict filter] ****** + TASK [Create a list of dictionaries with map and the community.general.dict filter] ******* ok: [localhost] => { "msg": [ { diff --git a/docs/docsite/rst/filter_guide_abstract_informations_grouping.rst b/docs/docsite/rst/filter_guide_abstract_informations_grouping.rst index cb15989659..f73f2256fe 100644 --- a/docs/docsite/rst/filter_guide_abstract_informations_grouping.rst +++ b/docs/docsite/rst/filter_guide_abstract_informations_grouping.rst @@ -22,6 +22,49 @@ One example is ``ansible_facts.mounts``, which is a list of dictionaries where e This produces: +.. ansible-output-data:: + + variables: + task: + previous_code_block: yaml+jinja + skip_first_lines: 3 # the set_fact task + playbook: |- + - hosts: localhost + gather_facts: false + tasks: + - ansible.builtin.set_fact: + ansible_facts: + mounts: + - block_available: 2000 + block_size: 4096 + block_total: 2345 + block_used: 345 + device: "/dev/sda1" + fstype: "ext4" + inode_available: 500 + inode_total: 512 + inode_used: 12 + mount: "/boot" + options: "rw,relatime,data=ordered" + size_available: 56821 + size_total: 543210 + uuid: "ab31cade-d9c1-484d-8482-8a4cbee5241a" + - block_available: 1234 + block_size: 4096 + block_total: 12345 + block_used: 11111 + device: "/dev/sda2" + fstype: "ext4" + inode_available: 1111 + inode_total: 1234 + inode_used: 123 + mount: "/" + options: "rw,relatime" + size_available: 42143 + size_total: 543210 + uuid: "abcdef01-2345-6789-0abc-def012345678" + @{{ task | indent(4) }}@ + .. code-block:: ansible-output TASK [Output mount facts grouped by device name] ****************************************** @@ -79,7 +122,7 @@ This produces: "options": "rw,relatime", "size_available": 42143, "size_total": 543210, - "uuid": "bdf50b7d-4859-40af-8665-c637ee7a7808" + "uuid": "abcdef01-2345-6789-0abc-def012345678" }, "/boot": { "block_available": 2000, diff --git a/docs/docsite/rst/filter_guide_conversions.rst b/docs/docsite/rst/filter_guide_conversions.rst index ca0401762c..a1bb892802 100644 --- a/docs/docsite/rst/filter_guide_conversions.rst +++ b/docs/docsite/rst/filter_guide_conversions.rst @@ -24,6 +24,17 @@ Ansible offers the :ansplugin:`community.general.read_csv module { - "msg": "ff:69:d3:78:7f:b4" + "msg": "ff:84:f5:d1:59:20" } TASK [Create a random MAC starting with 00:11:22:] **************************************** ok: [localhost] => { - "msg": "00:11:22:71:5d:3b" + "msg": "00:11:22:84:f5:d1" } You can also initialize the random number generator from a seed to create random-but-idempotent MAC addresses: diff --git a/docs/docsite/rst/filter_guide_working_with_times.rst b/docs/docsite/rst/filter_guide_working_with_times.rst index 032d44bb57..76c7f1733c 100644 --- a/docs/docsite/rst/filter_guide_working_with_times.rst +++ b/docs/docsite/rst/filter_guide_working_with_times.rst @@ -69,21 +69,32 @@ Note that months and years are using a simplified representation: a month is 30 This produces: +.. ansible-output-data:: + + variables: + task: + previous_code_block: yaml+jinja + playbook: |- + - hosts: localhost + gather_facts: false + tasks: + @{{ task | indent(4) }}@ + .. code-block:: ansible-output TASK [Convert string to seconds] ********************************************************** ok: [localhost] => { - "msg": "109210.123" + "msg": 109210.123 } TASK [Convert string to hours] ************************************************************ ok: [localhost] => { - "msg": "30.336145277778" + "msg": 30.336145277778 } TASK [Convert string to years (using 365.25 days == 1 year)] ****************************** ok: [localhost] => { - "msg": "1.096851471595" + "msg": 1.096851471595 } .. versionadded: 0.2.0 diff --git a/docs/docsite/rst/filter_guide_working_with_unicode.rst b/docs/docsite/rst/filter_guide_working_with_unicode.rst index e75b0f871b..1c36d088d6 100644 --- a/docs/docsite/rst/filter_guide_working_with_unicode.rst +++ b/docs/docsite/rst/filter_guide_working_with_unicode.rst @@ -21,9 +21,20 @@ You can use the :ansplugin:`community.general.unicode_normalize filter { "msg": true } diff --git a/docs/docsite/rst/filter_guide_working_with_versions.rst b/docs/docsite/rst/filter_guide_working_with_versions.rst index 055bbcd217..39fd8e231b 100644 --- a/docs/docsite/rst/filter_guide_working_with_versions.rst +++ b/docs/docsite/rst/filter_guide_working_with_versions.rst @@ -23,6 +23,17 @@ If you need to sort a list of version numbers, the Jinja ``sort`` filter is prob This produces: +.. ansible-output-data:: + + variables: + task: + previous_code_block: yaml+jinja + playbook: |- + - hosts: localhost + gather_facts: false + tasks: + @{{ task | indent(4) }}@ + .. code-block:: ansible-output TASK [Sort list by version number] ******************************************************** diff --git a/noxfile.py b/noxfile.py index 9b2f92a9e1..c04c3e0d06 100644 --- a/noxfile.py +++ b/noxfile.py @@ -32,6 +32,18 @@ def botmeta(session: nox.Session) -> None: session.run("python", "tests/sanity/extra/botmeta.py") +@nox.session(name="ansible-output", default=False) +def ansible_output(session: nox.Session) -> None: + session.install( + "ansible-core", + "antsibull-docs", + # Needed libs for some code blocks: + "jc", + "hashids", + ) + session.run("antsibull-docs", "ansible-output", *session.posargs) + + # Allow to run the noxfile with `python noxfile.py`, `pipx run noxfile.py`, or similar. # Requires nox >= 2025.02.09 if __name__ == "__main__":