diff --git a/.ansible-lint b/.ansible-lint
index 0469cba..a55f44d 100644
--- a/.ansible-lint
+++ b/.ansible-lint
@@ -18,6 +18,7 @@ skip_list:
exclude_paths:
- tests/roles/
- .github/
+ - .markdownlint.yaml
- examples/roles/
mock_roles:
- linux-system-roles.rhc
diff --git a/.github/workflows/ansible-test.yml b/.github/workflows/ansible-test.yml
index 6dbd548..d38ecb8 100644
--- a/.github/workflows/ansible-test.yml
+++ b/.github/workflows/ansible-test.yml
@@ -38,6 +38,8 @@ jobs:
- name: Convert role to collection format
run: |
set -euxo pipefail
+ # Remove to avoid running ansible-test on unrelated file
+ rm -f .pandoc_template.html5
TOXENV=collection lsr_ci_runtox
# copy the ignore files
coll_dir=".tox/ansible_collections/$LSR_ROLE2COLL_NAMESPACE/$LSR_ROLE2COLL_NAME"
diff --git a/.github/workflows/build_docs.yml b/.github/workflows/build_docs.yml
new file mode 100644
index 0000000..13efaab
--- /dev/null
+++ b/.github/workflows/build_docs.yml
@@ -0,0 +1,101 @@
+---
+# yamllint disable rule:line-length
+name: Convert README.md to HTML and push to docs branch
+on: # yamllint disable-line rule:truthy
+ push:
+ branches:
+ - main
+ paths:
+ - README.md
+ release:
+ types:
+ - published
+permissions:
+ contents: read
+jobs:
+ build_docs:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: write
+ steps:
+ - name: Update pip, git
+ run: |
+ set -euxo pipefail
+ sudo apt update
+ sudo apt install -y git
+
+ - name: Check out code
+ uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+ - name: Ensure the docs branch
+ run: |
+ set -euxo pipefail
+ branch=docs
+ existed_in_remote=$(git ls-remote --heads origin $branch)
+
+ if [ -z "${existed_in_remote}" ]; then
+ echo "Creating $branch branch"
+ git config --global user.name "${{ github.actor }}"
+ git config --global user.email "${{ github.actor }}@users.noreply.github.com"
+ git checkout --orphan $branch
+ git reset --hard
+ git commit --allow-empty -m "Initializing $branch branch"
+ git push origin $branch
+ echo "Created $branch branch"
+ else
+ echo "Branch $branch already exists"
+ fi
+
+ - name: Checkout the docs branch
+ uses: actions/checkout@v3
+ with:
+ ref: docs
+
+ - name: Fetch README.md and .pandoc_template.html5 template from the workflow branch
+ uses: actions/checkout@v3
+ with:
+ sparse-checkout: |
+ README.md
+ .pandoc_template.html5
+ sparse-checkout-cone-mode: false
+ path: ref_branch
+ - name: Set RELEASE_VERSION based on whether run on release or on push
+ run: |
+ set -euxo pipefail
+ if [ ${{ github.event_name }} = release ]; then
+ echo "RELEASE_VERSION=${{ github.event.release.tag_name }}" >> $GITHUB_ENV
+ elif [ ${{ github.event_name }} = push ]; then
+ echo "RELEASE_VERSION=latest" >> $GITHUB_ENV
+ else
+ echo Unsupported event
+ exit 1
+ fi
+
+ - name: Ensure that version and docs directories exist
+ run: mkdir -p ${{ env.RELEASE_VERSION }} docs
+
+ - name: Convert README.md to HTML and save to the version directory
+ uses: docker://pandoc/core:latest
+ with:
+ args: >-
+ --from gfm --to html5 --toc --shift-heading-level-by=-1
+ --template ref_branch/.pandoc_template.html5
+ --output ${{ env.RELEASE_VERSION }}/README.html ref_branch/README.md
+
+ - name: Copy latest README.html to docs/index.html for GitHub pages
+ if: env.RELEASE_VERSION == 'latest'
+ run: cp ${{ env.RELEASE_VERSION }}/README.html docs/index.html
+
+ - name: Commit changes
+ run: |
+ git config --global user.name "${{ github.actor }}"
+ git config --global user.email "${{ github.actor }}@users.noreply.github.com"
+ git add ${{ env.RELEASE_VERSION }}/README.html docs/index.html
+ git commit -m "Update README.html for ${{ env.RELEASE_VERSION }}"
+
+ - name: Push changes
+ uses: ad-m/github-push-action@master
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ branch: docs
diff --git a/.github/workflows/markdownlint.yml b/.github/workflows/markdownlint.yml
new file mode 100644
index 0000000..98e3c4c
--- /dev/null
+++ b/.github/workflows/markdownlint.yml
@@ -0,0 +1,34 @@
+---
+# yamllint disable rule:line-length
+name: Markdown Lint
+on: # yamllint disable-line rule:truthy
+ pull_request:
+ merge_group:
+ branches:
+ - main
+ types:
+ - checks_requested
+ push:
+ branches:
+ - main
+ workflow_dispatch:
+permissions:
+ contents: read
+jobs:
+ markdownlint:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Update pip, git
+ run: |
+ set -euxo pipefail
+ sudo apt update
+ sudo apt install -y git
+
+ - name: Check out code
+ uses: actions/checkout@v3
+
+ - name: Lint README.md
+ uses: docker://avtodev/markdown-lint:master
+ with:
+ args: README.md
+ config: .markdownlint.yaml
diff --git a/.github/workflows/test_converting_readme.yml b/.github/workflows/test_converting_readme.yml
new file mode 100644
index 0000000..e545613
--- /dev/null
+++ b/.github/workflows/test_converting_readme.yml
@@ -0,0 +1,43 @@
+---
+# yamllint disable rule:line-length
+name: Test converting README.md to README.html
+on: # yamllint disable-line rule:truthy
+ pull_request:
+ merge_group:
+ branches:
+ - main
+ types:
+ - checks_requested
+ push:
+ branches:
+ - main
+permissions:
+ contents: read
+jobs:
+ test_converting_readme:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: write
+ steps:
+ - name: Update pip, git
+ run: |
+ set -euxo pipefail
+ sudo apt update
+ sudo apt install -y git
+
+ - name: Check out code
+ uses: actions/checkout@v3
+
+ - name: Convert README.md to HTML and save to the version directory
+ uses: docker://pandoc/core:latest
+ with:
+ args: >-
+ --from gfm --to html5 --toc --shift-heading-level-by=-1
+ --template .pandoc_template.html5
+ --output README.html README.md
+
+ - name: Upload README.html as an artifact
+ uses: actions/upload-artifact@master
+ with:
+ name: README.html
+ path: README.html
diff --git a/.markdownlint.yaml b/.markdownlint.yaml
new file mode 100644
index 0000000..4f8a979
--- /dev/null
+++ b/.markdownlint.yaml
@@ -0,0 +1,260 @@
+# Default state for all rules
+default: true
+
+# Path to configuration file to extend
+extends: null
+
+# MD001/heading-increment/header-increment - Heading levels should only increment by one level at a time
+MD001: true
+
+# MD002/first-heading-h1/first-header-h1 - First heading should be a top-level heading
+MD002:
+ # Heading level
+ level: 1
+
+# MD003/heading-style/header-style - Heading style
+MD003:
+ # Heading style
+ style: "consistent"
+
+# MD004/ul-style - Unordered list style
+MD004:
+ # List style
+ style: "consistent"
+
+# MD005/list-indent - Inconsistent indentation for list items at the same level
+MD005: true
+
+# MD006/ul-start-left - Consider starting bulleted lists at the beginning of the line
+MD006: true
+
+# MD007/ul-indent - Unordered list indentation
+MD007:
+ # Spaces for indent
+ indent: 2
+ # Whether to indent the first level of the list
+ start_indented: false
+ # Spaces for first level indent (when start_indented is set)
+ start_indent: 2
+
+# MD009/no-trailing-spaces - Trailing spaces
+MD009:
+ # Spaces for line break
+ br_spaces: 2
+ # Allow spaces for empty lines in list items
+ list_item_empty_lines: false
+ # Include unnecessary breaks
+ strict: false
+
+# MD010/no-hard-tabs - Hard tabs
+MD010:
+ # Include code blocks
+ code_blocks: true
+ # Fenced code languages to ignore
+ ignore_code_languages: []
+ # Number of spaces for each hard tab
+ spaces_per_tab: 1
+
+# MD011/no-reversed-links - Reversed link syntax
+MD011: true
+
+# MD012/no-multiple-blanks - Multiple consecutive blank lines
+MD012:
+ # Consecutive blank lines
+ maximum: 1
+
+# Modified for LSR
+# GFM does not limit line length
+# MD013/line-length - Line length
+MD013: false
+ # # Number of characters
+ # # line_length: 80
+ # line_length: 999
+ # # Number of characters for headings
+ # heading_line_length: 80
+ # # Number of characters for code blocks
+ # code_block_line_length: 80
+ # # Include code blocks
+ # code_blocks: true
+ # # Include tables
+ # tables: true
+ # # Include headings
+ # headings: true
+ # # Include headings
+ # headers: true
+ # # Strict length checking
+ # strict: false
+ # # Stern length checking
+ # stern: false
+
+# MD014/commands-show-output - Dollar signs used before commands without showing output
+MD014: true
+
+# MD018/no-missing-space-atx - No space after hash on atx style heading
+MD018: true
+
+# MD019/no-multiple-space-atx - Multiple spaces after hash on atx style heading
+MD019: true
+
+# MD020/no-missing-space-closed-atx - No space inside hashes on closed atx style heading
+MD020: true
+
+# MD021/no-multiple-space-closed-atx - Multiple spaces inside hashes on closed atx style heading
+MD021: true
+
+# MD022/blanks-around-headings/blanks-around-headers - Headings should be surrounded by blank lines
+MD022:
+ # Blank lines above heading
+ lines_above: 1
+ # Blank lines below heading
+ lines_below: 1
+
+# MD023/heading-start-left/header-start-left - Headings must start at the beginning of the line
+MD023: true
+
+# MD024/no-duplicate-heading/no-duplicate-header - Multiple headings with the same content
+MD024: true
+
+# MD025/single-title/single-h1 - Multiple top-level headings in the same document
+MD025:
+ # Heading level
+ level: 1
+ # RegExp for matching title in front matter
+ front_matter_title: "^\\s*title\\s*[:=]"
+
+# MD026/no-trailing-punctuation - Trailing punctuation in heading
+MD026:
+ # Punctuation characters not allowed at end of headings
+ punctuation: ".,;:!。,;:!"
+
+# MD027/no-multiple-space-blockquote - Multiple spaces after blockquote symbol
+MD027: true
+
+# MD028/no-blanks-blockquote - Blank line inside blockquote
+MD028: true
+
+# MD029/ol-prefix - Ordered list item prefix
+MD029:
+ # List style
+ style: "one_or_ordered"
+
+# MD030/list-marker-space - Spaces after list markers
+MD030:
+ # Spaces for single-line unordered list items
+ ul_single: 1
+ # Spaces for single-line ordered list items
+ ol_single: 1
+ # Spaces for multi-line unordered list items
+ ul_multi: 1
+ # Spaces for multi-line ordered list items
+ ol_multi: 1
+
+# MD031/blanks-around-fences - Fenced code blocks should be surrounded by blank lines
+MD031:
+ # Include list items
+ list_items: true
+
+# MD032/blanks-around-lists - Lists should be surrounded by blank lines
+MD032: true
+
+# MD033/no-inline-html - Inline HTML
+MD033:
+ # Allowed elements
+ allowed_elements: []
+
+# MD034/no-bare-urls - Bare URL used
+MD034: true
+
+# MD035/hr-style - Horizontal rule style
+MD035:
+ # Horizontal rule style
+ style: "consistent"
+
+# MD036/no-emphasis-as-heading/no-emphasis-as-header - Emphasis used instead of a heading
+MD036:
+ # Punctuation characters
+ punctuation: ".,;:!?。,;:!?"
+
+# MD037/no-space-in-emphasis - Spaces inside emphasis markers
+MD037: true
+
+# MD038/no-space-in-code - Spaces inside code span elements
+MD038: true
+
+# MD039/no-space-in-links - Spaces inside link text
+MD039: true
+
+# MD040/fenced-code-language - Fenced code blocks should have a language specified
+MD040:
+ # List of languages
+ allowed_languages: []
+ # Require language only
+ language_only: false
+
+# MD041/first-line-heading/first-line-h1 - First line in a file should be a top-level heading
+MD041:
+ # Heading level
+ level: 1
+ # RegExp for matching title in front matter
+ front_matter_title: "^\\s*title\\s*[:=]"
+
+# MD042/no-empty-links - No empty links
+MD042: true
+
+# Modified for LSR
+# Disabling, we do not need this
+# MD043/required-headings/required-headers - Required heading structure
+MD043: false
+ # # List of headings
+ # headings: []
+ # # List of headings
+ # headers: []
+ # # Match case of headings
+ # match_case: false
+
+# MD044/proper-names - Proper names should have the correct capitalization
+MD044:
+ # List of proper names
+ names: []
+ # Include code blocks
+ code_blocks: true
+ # Include HTML elements
+ html_elements: true
+
+# MD045/no-alt-text - Images should have alternate text (alt text)
+MD045: true
+
+# MD046/code-block-style - Code block style
+MD046:
+ # Block style
+ style: "consistent"
+
+# MD047/single-trailing-newline - Files should end with a single newline character
+MD047: true
+
+# MD048/code-fence-style - Code fence style
+MD048:
+ # Code fence style
+ style: "consistent"
+
+# MD049/emphasis-style - Emphasis style should be consistent
+MD049:
+ # Emphasis style should be consistent
+ style: "consistent"
+
+# MD050/strong-style - Strong style should be consistent
+MD050:
+ # Strong style should be consistent
+ style: "consistent"
+
+# MD051/link-fragments - Link fragments should be valid
+MD051: true
+
+# MD052/reference-links-images - Reference links and images should use a label that is defined
+MD052: true
+
+# MD053/link-image-reference-definitions - Link and image reference definitions should be needed
+MD053:
+ # Ignored definitions
+ ignored_definitions:
+ - "//"
diff --git a/.pandoc_template.html5 b/.pandoc_template.html5
new file mode 100644
index 0000000..f214661
--- /dev/null
+++ b/.pandoc_template.html5
@@ -0,0 +1,166 @@
+$--| GitHub HTML5 Pandoc Template" v2.2 | 2020/08/12 | pandoc v2.1.1
+
+
+$-------------------------------------------------------------------------> lang
+
+
+$--=============================================================================
+$-- METADATA
+$--=============================================================================
+
+
+
+$-----------------------------------------------------------------------> author
+$for(author-meta)$
+
+$endfor$
+$-------------------------------------------------------------------------> date
+$if(date-meta)$
+
+$endif$
+$---------------------------------------------------------------------> keywords
+$if(keywords)$
+
+$endif$
+$------------------------------------------------------------------> description
+$if(description)$
+
+$endif$
+$------------------------------------------------------------------------> title
+ $if(title-prefix)$$title-prefix$ – $endif$$pagetitle$
+$--===========================================================================
+$-- CSS STYLESHEETS
+$--===========================================================================
+$-- Here comes the placeholder (within double braces) that will be replaced
+$-- by the CSS file in the finalized template:
+
+$-------------------------------------------------------------------------------
+
+$-------------------------------------------------------------------------------
+$if(quotes)$
+
+$endif$
+$-------------------------------------------------------------> highlighting-css
+$if(highlighting-css)$
+
+$endif$
+$--------------------------------------------------------------------------> css
+$for(css)$
+
+$endfor$
+$-------------------------------------------------------------------------> math
+$if(math)$
+ $math$
+$endif$
+$-------------------------------------------------------------------------------
+
+$--------------------------------------------------------------> header-includes
+$for(header-includes)$
+ $header-includes$
+$endfor$
+$-------------------------------------------------------------------------------
+
+
+
+$---------------------------------------------------------------> include-before
+$for(include-before)$
+$include-before$
+$endfor$
+$-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> IF: title
+$if(title)$
+
+$title$
+$---------------------------------------------------------------------> subtitle
+$if(subtitle)$
+$subtitle$
+$endif$
+$-----------------------------------------------------------------------> author
+$for(author)$
+$author$
+$endfor$
+$-------------------------------------------------------------------------> date
+$if(date)$
+$date$
+$endif$
+$----------------------------------------------------------------------> summary
+$if(summary)$
+
+$summary$
+
+$endif$
+$-------------------------------------------------------------------------------
+
+$endif$
+$--<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< END IF: title
+$--------------------------------------------------------------------------> toc
+$if(toc)$
+
+
+$if(toc-title)$$toc-title$$else$Contents$endif$
+$table-of-contents$
+
+
+$endif$
+$-------------------------------------------------------------------------> body
+$body$
+$----------------------------------------------------------------> include-after
+$for(include-after)$
+$include-after$
+$endfor$
+$-------------------------------------------------------------------------------
+
+
+
diff --git a/README.md b/README.md
index 180ede3..8150437 100644
--- a/README.md
+++ b/README.md
@@ -24,7 +24,7 @@ The role requires modules from `community.general`. If you are using
`ansible-core`, you must install the `community.general` collection. Use the
file `meta/collection-requirements.yml` to install it:
-```
+```bash
ansible-galaxy collection install -vv -r meta/collection-requirements.yml
```