Skip to content

feature: allow choosing download host for all roles using _common#754

Open
ftwrobert wants to merge 6 commits into
prometheus-community:mainfrom
ftwrobert:ephemeral_controller_idempotence
Open

feature: allow choosing download host for all roles using _common#754
ftwrobert wants to merge 6 commits into
prometheus-community:mainfrom
ftwrobert:ephemeral_controller_idempotence

Conversation

@ftwrobert

Copy link
Copy Markdown
Contributor

Following up on PR-633 and PR-499, add the ability to delegate binary downloads to a remote host to address idempotency issues when the ansible controller is ephemeral.

@github-actions

github-actions Bot commented Mar 11, 2026

Copy link
Copy Markdown
Contributor

Docs Build 📝

Thank you for contributing!✨

The docs for this PR have been published here:
https://prometheus-community.github.io/ansible/pr/754

You can compare to the docs for the main branch here:
https://prometheus-community.github.io/ansible/branch/main

The docsite for this PR is also available for download as an artifact from this run:
https://github.com/prometheus-community/ansible/actions/runs/24899780831

File changes:

Click to see the diff comparison.

NOTE: only file modifications are shown here. New and deleted files are excluded.
See the file list and check the published docs to see those files.

The diff output was truncated because it exceeded the maximum size.

diff --git a/home/runner/work/ansible/ansible/docsbuild/base/_common_role.html b/home/runner/work/ansible/ansible/docsbuild/head/_common_role.html
index 02615b0..34dc5cb 100644
--- a/home/runner/work/ansible/ansible/docsbuild/base/_common_role.html
+++ b/home/runner/work/ansible/ansible/docsbuild/head/_common_role.html
@@ -357,6 +357,14 @@ To check whether it is installed, run <code class="code docutils literal notrans
 </div></td>
 </tr>
 <tr class="row-odd"><td><div class="ansible-option-cell">
+<div class="ansibleOptionAnchor" id="parameter-install--_common_download_host"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-common-role-parameter-install-common-download-host"><strong>_common_download_host</strong></p>
+<a class="ansibleOptionLink" href="#parameter-install--_common_download_host" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
+</div></td>
+<td><div class="ansible-option-cell"><p>Host that performs the download and extraction of the binary archive</p>
+<p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;localhost&quot;</span></code></p>
+</div></td>
+</tr>
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-install--_common_local_cache_path"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-common-role-parameter-install-common-local-cache-path"><strong>_common_local_cache_path</strong></p>
 <a class="ansibleOptionLink" href="#parameter-install--_common_local_cache_path" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -364,7 +372,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-install--_common_system_group"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-common-role-parameter-install-common-system-group"><strong>_common_system_group</strong></p>
 <a class="ansibleOptionLink" href="#parameter-install--_common_system_group" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -372,7 +380,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-install--_common_system_user"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-common-role-parameter-install-common-system-user"><strong>_common_system_user</strong></p>
 <a class="ansibleOptionLink" href="#parameter-install--_common_system_user" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
diff --git a/home/runner/work/ansible/ansible/docsbuild/base/alertmanager_role.html b/home/runner/work/ansible/ansible/docsbuild/head/alertmanager_role.html
index 2afafa8..7362777 100644
--- a/home/runner/work/ansible/ansible/docsbuild/base/alertmanager_role.html
+++ b/home/runner/work/ansible/ansible/docsbuild/head/alertmanager_role.html
@@ -267,34 +267,42 @@ To check whether it is installed, run <code class="code docutils literal notrans
 </div></td>
 </tr>
 <tr class="row-odd"><td><div class="ansible-option-cell">
+<div class="ansibleOptionAnchor" id="parameter-main--alertmanager_download_host"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-download-host"><strong>alertmanager_download_host</strong></p>
+<a class="ansibleOptionLink" href="#parameter-main--alertmanager_download_host" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
+</div></td>
+<td><div class="ansible-option-cell"><p>Host that downloads and extracts the archive (localhost by default). Set to the target host to avoid controller temp usage.</p>
+<p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;localhost&quot;</span></code></p>
+</div></td>
+</tr>
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_hipchat_api_url"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-hipchat-api-url"><strong>alertmanager_hipchat_api_url</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_hipchat_api_url" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
 <td><div class="ansible-option-cell"><p>Hipchat webhook url</p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_hipchat_auth_token"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-hipchat-auth-token"><strong>alertmanager_hipchat_auth_token</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_hipchat_auth_token" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
 <td><div class="ansible-option-cell"><p>Hipchat authentication token</p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_http_config"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-http-config"><strong>alertmanager_http_config</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_http_config" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">dictionary</span></p>
 </div></td>
 <td><div class="ansible-option-cell"><p>Http config for using custom webhooks</p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_inhibit_rules"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-inhibit-rules"><strong>alertmanager_inhibit_rules</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_inhibit_rules" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p>
 </div></td>
 <td><div class="ansible-option-cell"><p>List of inhibition rules. Same as in <a class="reference external" href="https://prometheus.io/docs/alerting/configuration/#inhibit_rule">official docs</a></p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_local_cache_path"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-local-cache-path"><strong>alertmanager_local_cache_path</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_local_cache_path" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -302,35 +310,35 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;/tmp/alertmanager-{{</span> <span class="pre">ansible_facts['system']</span> <span class="pre">|</span> <span class="pre">lower</span> <span class="pre">}}-{{</span> <span class="pre">_alertmanager_go_ansible_arch</span> <span class="pre">}}/{{</span> <span class="pre">alertmanager_version</span> <span class="pre">}}&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_opsgenie_api_key"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-opsgenie-api-key"><strong>alertmanager_opsgenie_api_key</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_opsgenie_api_key" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
 <td><div class="ansible-option-cell"><p>Opsgenie webhook key</p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_opsgenie_api_url"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-opsgenie-api-url"><strong>alertmanager_opsgenie_api_url</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_opsgenie_api_url" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
 <td><div class="ansible-option-cell"><p>Opsgenie webhook url</p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_pagerduty_url"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-pagerduty-url"><strong>alertmanager_pagerduty_url</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_pagerduty_url" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
 <td><div class="ansible-option-cell"><p>Pagerduty webhook url</p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_receivers"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-receivers"><strong>alertmanager_receivers</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_receivers" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p>
 </div></td>
 <td><div class="ansible-option-cell"><p>A list of notification receivers. Configuration same as in <a class="reference external" href="https://prometheus.io/docs/alerting/configuration/#receiver">official docs</a></p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_resolve_timeout"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-resolve-timeout"><strong>alertmanager_resolve_timeout</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_resolve_timeout" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -338,28 +346,28 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;3m&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_route"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-route"><strong>alertmanager_route</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_route" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">dictionary</span></p>
 </div></td>
 <td><div class="ansible-option-cell"><p>Alert routing. More in <a class="reference external" href="https://prometheus.io/docs/alerting/configuration/#route">official docs</a></p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_slack_api_url"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-slack-api-url"><strong>alertmanager_slack_api_url</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_slack_api_url" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
 <td><div class="ansible-option-cell"><p>Slack webhook url</p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_smtp"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-smtp"><strong>alertmanager_smtp</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_smtp" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">dictionary</span></p>
 </div></td>
 <td><div class="ansible-option-cell"><p>SMTP (email) configuration</p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_system_group"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-system-group"><strong>alertmanager_system_group</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_system_group" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -368,7 +376,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;alertmanager&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_system_user"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-system-user"><strong>alertmanager_system_user</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_system_user" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -377,7 +385,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;alertmanager&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_template_files"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-template-files"><strong>alertmanager_template_files</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_template_files" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p>
 </div></td>
@@ -386,14 +394,14 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">[&quot;alertmanager/templates/*.tmpl&quot;]</span></code></p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_time_intervals"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-time-intervals"><strong>alertmanager_time_intervals</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_time_intervals" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p>
 </div></td>
 <td><div class="ansible-option-cell"><p>A list of time intervals. Configuration same as in <a class="reference external" href="https://prometheus.io/docs/alerting/latest/configuration/#time_interval">official docs</a></p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_version"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-version"><strong>alertmanager_version</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_version" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -401,28 +409,28 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;0.32.0&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_victorops_api_key"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-victorops-api-key"><strong>alertmanager_victorops_api_key</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_victorops_api_key" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
 <td><div class="ansible-option-cell"><p>VictorOps webhook key</p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_victorops_api_url"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-victorops-api-url"><strong>alertmanager_victorops_api_url</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_victorops_api_url" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
 <td><div class="ansible-option-cell"><p>VictorOps webhook url</p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_web_config"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-web-config"><strong>alertmanager_web_config</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_web_config" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">dictionary</span></p>
 </div></td>
 <td><div class="ansible-option-cell"><p>Alertmanager web config for configuring TLS and auth</p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_web_external_url"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-web-external-url"><strong>alertmanager_web_external_url</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_web_external_url" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -430,7 +438,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;http://localhost:9093/&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_web_listen_address"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-web-listen-address"><strong>alertmanager_web_listen_address</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_web_listen_address" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -438,21 +446,21 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;0.0.0.0:9093&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_wechat_corp_id"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-wechat-corp-id"><strong>alertmanager_wechat_corp_id</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_wechat_corp_id" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
 <td><div class="ansible-option-cell"><p>Enterprise WeChat corporation id</p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_wechat_secret"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-wechat-secret"><strong>alertmanager_wechat_secret</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_wechat_secret" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
 <td><div class="ansible-option-cell"><p>Enterprise WeChat secret token</p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--alertmanager_wechat_url"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-alertmanager-role-parameter-main-alertmanager-wechat-url"><strong>alertmanager_wechat_url</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--alertmanager_wechat_url" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
diff --git a/home/runner/work/ansible/ansible/docsbuild/base/apache_exporter_role.html b/home/runner/work/ansible/ansible/docsbuild/head/apache_exporter_role.html
index 98ed924..9c1469e 100644
--- a/home/runner/work/ansible/ansible/docsbuild/base/apache_exporter_role.html
+++ b/home/runner/work/ansible/ansible/docsbuild/head/apache_exporter_role.html
@@ -219,6 +219,14 @@ To check whether it is installed, run <code class="code docutils literal notrans
 </div></td>
 </tr>
 <tr class="row-odd"><td><div class="ansible-option-cell">
+<div class="ansibleOptionAnchor" id="parameter-main--apache_exporter_download_host"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-apache-exporter-role-parameter-main-apache-exporter-download-host"><strong>apache_exporter_download_host</strong></p>
+<a class="ansibleOptionLink" href="#parameter-main--apache_exporter_download_host" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
+</div></td>
+<td><div class="ansible-option-cell"><p>Host that downloads and extracts the archive (localhost by default). Set to the target host to avoid controller temp usage.</p>
+<p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;localhost&quot;</span></code></p>
+</div></td>
+</tr>
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--apache_exporter_http_server_config"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-apache-exporter-role-parameter-main-apache-exporter-http-server-config"><strong>apache_exporter_http_server_config</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--apache_exporter_http_server_config" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">dictionary</span></p>
 </div></td>
@@ -226,7 +234,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p>Keys and values are the same as in <a class="reference external" href="https://github.com/prometheus/exporter-toolkit/blob/master/docs/web-configuration.md">apache_exporter docs</a>.</p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--apache_exporter_local_cache_path"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-apache-exporter-role-parameter-main-apache-exporter-local-cache-path"><strong>apache_exporter_local_cache_path</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--apache_exporter_local_cache_path" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -235,7 +243,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;/tmp/apache_exporter-{{</span> <span class="pre">ansible_facts['system']</span> <span class="pre">|</span> <span class="pre">lower</span> <span class="pre">}}-{{</span> <span class="pre">_apache_exporter_go_ansible_arch</span> <span class="pre">}}/{{</span> <span class="pre">apache_exporter_version</span> <span class="pre">}}&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--apache_exporter_log_level"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-apache-exporter-role-parameter-main-apache-exporter-log-level"><strong>apache_exporter_log_level</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--apache_exporter_log_level" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -243,7 +251,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;error&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--apache_exporter_system_group"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-apache-exporter-role-parameter-main-apache-exporter-system-group"><strong>apache_exporter_system_group</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--apache_exporter_system_group" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -252,7 +260,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;apache-exp&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--apache_exporter_system_user"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-apache-exporter-role-parameter-main-apache-exporter-system-user"><strong>apache_exporter_system_user</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--apache_exporter_system_user" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -261,7 +269,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;apache-exp&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--apache_exporter_timeout_offset"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-apache-exporter-role-parameter-main-apache-exporter-timeout-offset"><strong>apache_exporter_timeout_offset</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--apache_exporter_timeout_offset" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -269,7 +277,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">1</span></code></p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--apache_exporter_tls_server_config"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-apache-exporter-role-parameter-main-apache-exporter-tls-server-config"><strong>apache_exporter_tls_server_config</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--apache_exporter_tls_server_config" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">dictionary</span></p>
 </div></td>
@@ -277,7 +285,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p>Keys and values are the same as in <a class="reference external" href="https://github.com/prometheus/exporter-toolkit/blob/master/docs/web-configuration.md">apache_exporter docs</a>.</p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--apache_exporter_uri"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-apache-exporter-role-parameter-main-apache-exporter-uri"><strong>apache_exporter_uri</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--apache_exporter_uri" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -285,7 +293,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;http://localhost/server-status/?auto&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--apache_exporter_version"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-apache-exporter-role-parameter-main-apache-exporter-version"><strong>apache_exporter_version</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--apache_exporter_version" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -293,7 +301,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;1.0.12&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--apache_exporter_web_listen_address"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-apache-exporter-role-parameter-main-apache-exporter-web-listen-address"><strong>apache_exporter_web_listen_address</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--apache_exporter_web_listen_address" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -301,7 +309,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;0.0.0.0:9117&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--apache_exporter_web_telemetry_path"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-apache-exporter-role-parameter-main-apache-exporter-web-telemetry-path"><strong>apache_exporter_web_telemetry_path</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--apache_exporter_web_telemetry_path" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
diff --git a/home/runner/work/ansible/ansible/docsbuild/base/bind_exporter_role.html b/home/runner/work/ansible/ansible/docsbuild/head/bind_exporter_role.html
index 7ad39ad..c81727a 100644
--- a/home/runner/work/ansible/ansible/docsbuild/base/bind_exporter_role.html
+++ b/home/runner/work/ansible/ansible/docsbuild/head/bind_exporter_role.html
@@ -218,6 +218,14 @@ To check whether it is installed, run <code class="code docutils literal notrans
 </div></td>
 </tr>
 <tr class="row-odd"><td><div class="ansible-option-cell">
+<div class="ansibleOptionAnchor" id="parameter-main--bind_exporter_download_host"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-bind-exporter-role-parameter-main-bind-exporter-download-host"><strong>bind_exporter_download_host</strong></p>
+<a class="ansibleOptionLink" href="#parameter-main--bind_exporter_download_host" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
+</div></td>
+<td><div class="ansible-option-cell"><p>Host that downloads and extracts the archive (localhost by default). Set to the target host to avoid controller temp usage.</p>
+<p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;localhost&quot;</span></code></p>
+</div></td>
+</tr>
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--bind_exporter_http_server_config"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-bind-exporter-role-parameter-main-bind-exporter-http-server-config"><strong>bind_exporter_http_server_config</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--bind_exporter_http_server_config" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">dictionary</span></p>
 </div></td>
@@ -225,7 +233,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p>Keys and values are the same as in <a class="reference external" href="https://github.com/prometheus/exporter-toolkit/blob/master/docs/web-configuration.md">prometheus docs</a>.</p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--bind_exporter_local_cache_path"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-bind-exporter-role-parameter-main-bind-exporter-local-cache-path"><strong>bind_exporter_local_cache_path</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--bind_exporter_local_cache_path" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -233,7 +241,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;/tmp/bind_exporter-{{</span> <span class="pre">ansible_facts['system']</span> <span class="pre">|</span> <span class="pre">lower</span> <span class="pre">}}-{{</span> <span class="pre">_bind_exporter_go_ansible_arch</span> <span class="pre">}}/{{</span> <span class="pre">bind_exporter_version</span> <span class="pre">}}&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--bind_exporter_pid_file"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-bind-exporter-role-parameter-main-bind-exporter-pid-file"><strong>bind_exporter_pid_file</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--bind_exporter_pid_file" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -241,7 +249,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;/run/named/named.pid&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--bind_exporter_stats_groups"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-bind-exporter-role-parameter-main-bind-exporter-stats-groups"><strong>bind_exporter_stats_groups</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--bind_exporter_stats_groups" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p>
 </div></td>
@@ -255,7 +263,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">[]</span></code></p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--bind_exporter_stats_url"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-bind-exporter-role-parameter-main-bind-exporter-stats-url"><strong>bind_exporter_stats_url</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--bind_exporter_stats_url" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -263,7 +271,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;http://localhost:8053/&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--bind_exporter_stats_version"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-bind-exporter-role-parameter-main-bind-exporter-stats-version"><strong>bind_exporter_stats_version</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--bind_exporter_stats_version" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -277,7 +285,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 </ul>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--bind_exporter_system_group"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-bind-exporter-role-parameter-main-bind-exporter-system-group"><strong>bind_exporter_system_group</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--bind_exporter_system_group" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -286,7 +294,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;bind-exp&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--bind_exporter_system_user"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-bind-exporter-role-parameter-main-bind-exporter-system-user"><strong>bind_exporter_system_user</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--bind_exporter_system_user" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -295,7 +303,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;bind-exp&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--bind_exporter_timeout"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-bind-exporter-role-parameter-main-bind-exporter-timeout"><strong>bind_exporter_timeout</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--bind_exporter_timeout" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -303,7 +311,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;10s&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--bind_exporter_tls_server_config"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-bind-exporter-role-parameter-main-bind-exporter-tls-server-config"><strong>bind_exporter_tls_server_config</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--bind_exporter_tls_server_config" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">dictionary</span></p>
 </div></td>
@@ -311,7 +319,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p>Keys and values are the same as in <a class="reference external" href="https://github.com/prometheus/exporter-toolkit/blob/master/docs/web-configuration.md">prometheus docs</a>.</p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--bind_exporter_version"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-bind-exporter-role-parameter-main-bind-exporter-version"><strong>bind_exporter_version</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--bind_exporter_version" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -319,7 +327,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;0.8.0&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--bind_exporter_web_listen_address"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-bind-exporter-role-parameter-main-bind-exporter-web-listen-address"><strong>bind_exporter_web_listen_address</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--bind_exporter_web_listen_address" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -327,7 +335,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;0.0.0.0:9119&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--bind_exporter_web_telemetry_path"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-bind-exporter-role-parameter-main-bind-exporter-web-telemetry-path"><strong>bind_exporter_web_telemetry_path</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--bind_exporter_web_telemetry_path" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
diff --git a/home/runner/work/ansible/ansible/docsbuild/base/blackbox_exporter_role.html b/home/runner/work/ansible/ansible/docsbuild/head/blackbox_exporter_role.html
index f45b34b..18ce1da 100644
--- a/home/runner/work/ansible/ansible/docsbuild/base/blackbox_exporter_role.html
+++ b/home/runner/work/ansible/ansible/docsbuild/head/blackbox_exporter_role.html
@@ -226,6 +226,14 @@ To check whether it is installed, run <code class="code docutils literal notrans
 </div></td>
 </tr>
 <tr class="row-even"><td><div class="ansible-option-cell">
+<div class="ansibleOptionAnchor" id="parameter-main--blackbox_exporter_download_host"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-blackbox-exporter-role-parameter-main-blackbox-exporter-download-host"><strong>blackbox_exporter_download_host</strong></p>
+<a class="ansibleOptionLink" href="#parameter-main--blackbox_exporter_download_host" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
+</div></td>
+<td><div class="ansible-option-cell"><p>Host that downloads and extracts the archive (localhost by default). Set to the target host to avoid controller temp usage.</p>
+<p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;localhost&quot;</span></code></p>
+</div></td>
+</tr>
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--blackbox_exporter_local_cache_path"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-blackbox-exporter-role-parameter-main-blackbox-exporter-local-cache-path"><strong>blackbox_exporter_local_cache_path</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--blackbox_exporter_local_cache_path" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -233,7 +241,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;/tmp/blackbox_exporter-{{</span> <span class="pre">ansible_facts['system']</span> <span class="pre">|</span> <span class="pre">lower</span> <span class="pre">}}-{{</span> <span class="pre">_blackbox_exporter_go_ansible_arch</span> <span class="pre">}}/{{</span> <span class="pre">blackbox_exporter_version</span> <span class="pre">}}&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--blackbox_exporter_system_group"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-blackbox-exporter-role-parameter-main-blackbox-exporter-system-group"><strong>blackbox_exporter_system_group</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--blackbox_exporter_system_group" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -241,7 +249,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;blackbox-exp&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--blackbox_exporter_system_user"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-blackbox-exporter-role-parameter-main-blackbox-exporter-system-user"><strong>blackbox_exporter_system_user</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--blackbox_exporter_system_user" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -249,7 +257,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;blackbox-exp&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--blackbox_exporter_version"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-blackbox-exporter-role-parameter-main-blackbox-exporter-version"><strong>blackbox_exporter_version</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--blackbox_exporter_version" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -257,7 +265,7 @@ To check whether it is installed, run <code class="code docutils literal notrans
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;0.28.0&quot;</span></code></p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--blackbox_exporter_web_listen_address"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-blackbox-exporter-role-parameter-main-blackbox-exporter-web-listen-address"><strong>blackbox_exporter_web_listen_address</strong></p>
 <a class="ansibleOptionLink" href="#parameter-main--blackbox_exporter_web_listen_address" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
diff --git a/home/runner/work/ansible/ansible/docsbuild/base/cadvisor_role.html b/home/runner/work/ansible/ansible/docsbuild/head/cadvisor_role.html
index a7ea37b..409289a 100644
--- a/home/runner/work/ansible/ansible/docsbuild/base/cadvisor_role.html
+++ b/home/runner/work/ansible/ansible/docsbuild/head/cadvisor_role.html
@@ -241,6 +241,14 @@ To check whether it is installed, run <code class="code docutils literal notrans
 </div></td>
 </tr>
 <tr class="row-even"><td><div class="ansible-option-cell">
+<div class="ansibleOptionAnchor" id="parameter-main--cadvisor_download_host"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-cadvisor-role-parameter-main-cadvisor-download-host"><strong>cadvisor_download_host</strong></p>
+<a class="ansibleOptionLink" href="#parameter-main--cadvisor_download_host" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
+</div></td>
+<td><div class="ansible-option-cell"><p>Host that downloads and extracts the archive (localhost by default). Set to the target host to avoid controller temp usage.</p>
+<p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;localhost&quot;</span></code></p>
+</div></td>
+</tr>
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-main--cadvisor_enable_metrics"></div><p class="ansible-option-title" id="ansible-collections-prometheus-prometheus-cadvisor-role-parameter-main-cadvisor-enable-metrics"><strong>cadvisor_enable_metrics</strong></p>
 <a class="ansibleOptionLink" href="#

Signed-off-by: Robert Rex <ftwrobert@gmail.com>
@ftwrobert ftwrobert force-pushed the ephemeral_controller_idempotence branch from 49e8369 to 21529ed Compare March 11, 2026 16:34
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Mar 11, 2026
@ftwrobert

Copy link
Copy Markdown
Contributor Author

The failure condition of the bind_exporter role (HTTP Error 403: rate limit exceeded.) suggests that a re-run of the test may pass?

@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Mar 18, 2026
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Mar 26, 2026

@SuperQ SuperQ left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems fine to me, needs a quick rebase.

Signed-off-by: Robert Rex <ftwrobert@gmail.com>
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Apr 13, 2026

@gardar gardar left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for taking this on, please add molecule tests for this so that we can confirm that the feature works as expected.

@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Apr 24, 2026
Signed-off-by: Robert Rex <ftwrobert@gmail.com>
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Apr 24, 2026
@ftwrobert

Copy link
Copy Markdown
Contributor Author

I added a scenario to the node_exporter role.

@ftwrobert

Copy link
Copy Markdown
Contributor Author

The three failing checks appear to be rate limit issues?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment