From 0b3074ed027e49634cb387ec0913bce48b7ba1e9 Mon Sep 17 00:00:00 2001 From: Sharon Katz Date: Fri, 27 Sep 2024 12:11:32 -0400 Subject: [PATCH 1/9] Initial --- articles/policy-based-run-script.md | 79 +++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 articles/policy-based-run-script.md diff --git a/articles/policy-based-run-script.md b/articles/policy-based-run-script.md new file mode 100644 index 000000000000..2dd0c5db0e6c --- /dev/null +++ b/articles/policy-based-run-script.md @@ -0,0 +1,79 @@ +# Automatic policy-based installation of software on hosts + +![Top Image](../website/assets/images/articles/automatic-software-install-top-image.png) + +Fleet [v4.57.0](https://github.com/fleetdm/fleet/releases/tag/fleet-v4.57.0) introduces the ability to automatically and remotely install software on hosts based on predefined policy failures. This guide will walk you through the process of configuring fleet for automatic installation of software on hosts using uploaded installation images and based on programmed policies. You'll learn how to configure and use this feature, as well as understand how the underlying mechanism works. + +Fleet allows its users to upload trusted software installation files to be installed and used on hosts. This installation could be conditioned on a failure of a specific Fleet Policy. + +## Prerequisites + +* Fleet premium with Admin permissions. +* Fleet [v4.57.0](https://github.com/fleetdm/fleet/releases/tag/fleet-v4.57.0) or greater. + +## Step-by-step instructions + +1. **Adding software**: Add any software to be available for installation. Follow the [deploying software](https://fleetdm.com/guides/deploy-security-agents) document with instructions how to do it. Note that all installation steps (pre-install query, install script, and post-install script) will be executed as configured, regardless of the policy that triggers the installation. + + +![Add software](../website/assets/images/articles/automatic-software-install-add-software.png) + +Current supported software deployment formats: +- macOS: .pkg +- Windows: .msi, .exe +- Linux: .deb + +Coming soon: +- VPP for iOS and iPadOS + +2. **Add a policy**: In Fleet, add a policy that failure to pass will trigger the required installation. Go to Policies tab --> Press the top right "Add policy" button. --> Click "create your own policy" --> Enter your policy SQL --> Save --> Fill in details in the Save modal and Save. + +``` +SELECT 1 FROM apps WHERE name = 'Adobe Acrobat Reader.app' AND version_compare(bundle_short_version, '23.001.20687') >= 0; +``` + +Note: In order to know the exact application name to put in the query (e.g. "Adobe Acrobat Reader.app" in the query above) you can manually install it on a canary/test host and then query SELECT * from apps; + + +3. **Manage automation**: Open Manage Automations: Policies Tab --> top right "Manage automations" --> "Install software". + +![Manage policies](../website/assets/images/articles/automatic-software-install-policies-manage.png) + +4. **Select policy**: Select (click the check box of) your newly created policy. To the right of it select from the + drop-down list the software you would like to be installed upon failure of this policy. + +![Install software modal](../website/assets/images/articles/automatic-software-install-install-software.png) + +Upon failure of the selected policy, the selected software installation will be triggered. + +## How does it work? + +* After configuring Fleet to auto-install a specific software the rest will be done automatically. +* The policy check mechanism runs on a typical 1 hour cadence on all online hosts. +* Fleet will send install requests to the hosts on the first policy failure (first "No" result for the host) or if a policy goes from "Yes" to "No". On this iteration it will not send a install request if a policy is already failing and continues to fail ("No" -> "No"). See the following flowchart for details. + +![Flowchart](../website/assets/images/articles/automatic-software-install-workflow.png) +*Detailed flowchart* + +## Using the REST API for self-service software packages + +Fleet provides a REST API for managing software packages, including self-service software packages. Learn more about Fleet's [REST API](https://fleetdm.com/docs/rest-api/rest-api#add-team-policy). + +## Managing self-service software packages with GitOps + +To manage self-service software packages using Fleet's best practice GitOps, check out the `software` key in the [GitOps reference documentation](https://fleetdm.com/docs/configuration/yaml-files#policies). + +## Conclusion + +Software deployment can be time-consuming and risky. This guide presents Fleet's ability to mass deploy software to your fleet in a simple and safe way. Starting with uploading a trusted installer and ending with deploying it to the proper set of machines answering the exact policy defined by you. + +Leveraging Fleet’s ability to install and upgrade software on your hosts, you can streamline the process of controlling your hosts, replacing old versions of software and having the up-to-date info on what's installed on your fleet. + +By automating software deployment, you can gain greater control over what's installed on your machines and have better oversight of version upgrades, ensuring old software with known issues is replaced. + + + + + + + From ec907bafbbb9543854749d7f38e3d8c29e4e088a Mon Sep 17 00:00:00 2001 From: Sharon Katz Date: Fri, 27 Sep 2024 12:18:53 -0400 Subject: [PATCH 2/9] . --- ...olicy-based-run-script.md => policy-automations-run-script.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename articles/{policy-based-run-script.md => policy-automations-run-script.md} (100%) diff --git a/articles/policy-based-run-script.md b/articles/policy-automations-run-script.md similarity index 100% rename from articles/policy-based-run-script.md rename to articles/policy-automations-run-script.md From 0ac6c11217d927b6d7f4aeb4b79e31a91e187b51 Mon Sep 17 00:00:00 2001 From: Sharon Katz Date: Fri, 27 Sep 2024 12:22:33 -0400 Subject: [PATCH 3/9] . --- ...-automations-run-script.md => policy-automation-run-script.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename articles/{policy-automations-run-script.md => policy-automation-run-script.md} (100%) diff --git a/articles/policy-automations-run-script.md b/articles/policy-automation-run-script.md similarity index 100% rename from articles/policy-automations-run-script.md rename to articles/policy-automation-run-script.md From 631e776d673ef0842965540f3dc063eb3eef1ab7 Mon Sep 17 00:00:00 2001 From: Sharon Katz Date: Fri, 27 Sep 2024 12:23:31 -0400 Subject: [PATCH 4/9] . --- website/config/routes.js | 1 + 1 file changed, 1 insertion(+) diff --git a/website/config/routes.js b/website/config/routes.js index ddbc2d07676e..f74ba3981d10 100644 --- a/website/config/routes.js +++ b/website/config/routes.js @@ -577,6 +577,7 @@ module.exports.routes = { 'GET /learn-more-about/uninstall-scripts': '/guides/deploy-software-packages#uninstall-script', 'GET /learn-more-about/read-package-version': '/guides/deploy-software-packages#add-a-software-package-to-a-team', 'GET /learn-more-about/fleetctl': '/guides/fleetctl', + 'GET /learn-more-about/policy-automation-run-script': 'guides/policy-automation-run-script', // Sitemap From 557c1d8926f1ecb218e12adf3471f5f3d83bf120 Mon Sep 17 00:00:00 2001 From: Ian Littman Date: Fri, 4 Oct 2024 10:51:18 -0500 Subject: [PATCH 5/9] Finish script policy automation guide, add note in scripts guide, fix learn-more-about redirect Also fixes a "here" link (a11y issue) I noticed in the Scripts doc --- articles/policy-automation-run-script.md | 83 ++++++++---------------- articles/scripts.md | 8 ++- website/config/routes.js | 2 +- 3 files changed, 34 insertions(+), 59 deletions(-) diff --git a/articles/policy-automation-run-script.md b/articles/policy-automation-run-script.md index 2dd0c5db0e6c..d3672f98a804 100644 --- a/articles/policy-automation-run-script.md +++ b/articles/policy-automation-run-script.md @@ -1,79 +1,50 @@ -# Automatic policy-based installation of software on hosts +# Automatic policy-based execution of scripts on hosts -![Top Image](../website/assets/images/articles/automatic-software-install-top-image.png) +Fleet [v4.58.0](https://github.com/fleetdm/fleet/releases/tag/fleet-v4.58.0) introduces the ability to automatically execute scripts on hosts based on predefined policy failures. This guide will walk you through the process of configuring fleet for automatic execution of scripts on hosts using uploaded scripts and based on programmed policies. You'll learn how to configure and use this feature, as well as understand how the underlying mechanism works. -Fleet [v4.57.0](https://github.com/fleetdm/fleet/releases/tag/fleet-v4.57.0) introduces the ability to automatically and remotely install software on hosts based on predefined policy failures. This guide will walk you through the process of configuring fleet for automatic installation of software on hosts using uploaded installation images and based on programmed policies. You'll learn how to configure and use this feature, as well as understand how the underlying mechanism works. - -Fleet allows its users to upload trusted software installation files to be installed and used on hosts. This installation could be conditioned on a failure of a specific Fleet Policy. +Fleet allows its users to upload scripts to be executed on macOS, Windows, and Linux hosts to remediate issues with those hosts. These scripts can now be automated to run when a policy fails. For more information on scripts, see [the Scripts guide](https://fleetdm.com/guides/scripts). ## Prerequisites -* Fleet premium with Admin permissions. -* Fleet [v4.57.0](https://github.com/fleetdm/fleet/releases/tag/fleet-v4.57.0) or greater. +* Fleet Premium with Admin permissions. +* Fleet [v4.58.0](https://github.com/fleetdm/fleet/releases/tag/fleet-v4.58.0) or greater. +* [Scripts enabled](https://fleetdm.com/guides/scripts#enable-scripts) on all target hosts ## Step-by-step instructions -1. **Adding software**: Add any software to be available for installation. Follow the [deploying software](https://fleetdm.com/guides/deploy-security-agents) document with instructions how to do it. Note that all installation steps (pre-install query, install script, and post-install script) will be executed as configured, regardless of the policy that triggers the installation. - - -![Add software](../website/assets/images/articles/automatic-software-install-add-software.png) - -Current supported software deployment formats: -- macOS: .pkg -- Windows: .msi, .exe -- Linux: .deb - -Coming soon: -- VPP for iOS and iPadOS - -2. **Add a policy**: In Fleet, add a policy that failure to pass will trigger the required installation. Go to Policies tab --> Press the top right "Add policy" button. --> Click "create your own policy" --> Enter your policy SQL --> Save --> Fill in details in the Save modal and Save. - -``` -SELECT 1 FROM apps WHERE name = 'Adobe Acrobat Reader.app' AND version_compare(bundle_short_version, '23.001.20687') >= 0; -``` - -Note: In order to know the exact application name to put in the query (e.g. "Adobe Acrobat Reader.app" in the query above) you can manually install it on a canary/test host and then query SELECT * from apps; +1. **Add a script**: Navigate to **Controls > Scripts**, select the team you want the script and policy to run on, then upload the script you want to run. +2. **Add a policy**: Navigate to **Policies**, select the team you want the policy to run on, and click **Add policy**. Follow the instructions to either set up a custom policy or use one that's baked into Fleet. You can also add a script automation to an existing policy. +3. **Set the automation**: In the **Policies** list view you navigated to in the previous step, click **Manage automations**, then click **Run script**. Check the box beside the policy (or policies) you want to run scripts for, then select a script in the drop-down that appears next to the policy name. When you're done associating policies to scripts, click **Save**. - -3. **Manage automation**: Open Manage Automations: Policies Tab --> top right "Manage automations" --> "Install software". - -![Manage policies](../website/assets/images/articles/automatic-software-install-policies-manage.png) - -4. **Select policy**: Select (click the check box of) your newly created policy. To the right of it select from the - drop-down list the software you would like to be installed upon failure of this policy. - -![Install software modal](../website/assets/images/articles/automatic-software-install-install-software.png) - -Upon failure of the selected policy, the selected software installation will be triggered. +The next time a fleetd host with scripts enabled fails the policy you added an automation for, Fleet will queue up the script you selected and run it on the host as if you had requested a script run manually. ## How does it work? -* After configuring Fleet to auto-install a specific software the rest will be done automatically. -* The policy check mechanism runs on a typical 1 hour cadence on all online hosts. -* Fleet will send install requests to the hosts on the first policy failure (first "No" result for the host) or if a policy goes from "Yes" to "No". On this iteration it will not send a install request if a policy is already failing and continues to fail ("No" -> "No"). See the following flowchart for details. +* Online hosts report policy status when on a configurable cadence, with a default of hourly. +* Fleet will send scripts to the hosts on the first policy failure (first "No" result for the host) or if a policy goes from "Yes" to "No". Policies that stay failed ("No") for a host in consecutive reports will not be resent the script. -![Flowchart](../website/assets/images/articles/automatic-software-install-workflow.png) -*Detailed flowchart* +> When a script automation on a policy is added or switched to a different script, the policy's status will reset for associated hosts. This allows the newly attached script to run on hosts that had already failed the policy previously. -## Using the REST API for self-service software packages +* Scripts are run once regardless of exit code. +* When used in a policy automation, Fleet does not run shell scripts on Windows hosts, nor does it run PowerShell scripts on non-Windows hosts. -Fleet provides a REST API for managing software packages, including self-service software packages. Learn more about Fleet's [REST API](https://fleetdm.com/docs/rest-api/rest-api#add-team-policy). +## Via the API -## Managing self-service software packages with GitOps +Script policy automations can be managed by setting the `script_id` field on [Add team policy](https://fleetdm.com/docs/rest-api/rest-api#add-team-policy) or [Edit team policy](https://fleetdm.com/docs/rest-api/rest-api#edit-team-policy) endpoints on the Fleet REST API. -To manage self-service software packages using Fleet's best practice GitOps, check out the `software` key in the [GitOps reference documentation](https://fleetdm.com/docs/configuration/yaml-files#policies). +## Via GitOps -## Conclusion +To configure script policy automation via GitOps, nest a `run_script` entry under the `policy` you want to automate, then make sure you have the same `path` field both there and in the same team's `controls > scripts` section. See the [GitOps reference documentation](https://fleetdm.com/docs/configuration/yaml-files#policies) for an example. -Software deployment can be time-consuming and risky. This guide presents Fleet's ability to mass deploy software to your fleet in a simple and safe way. Starting with uploading a trusted installer and ending with deploying it to the proper set of machines answering the exact policy defined by you. +## Conclusion -Leveraging Fleet’s ability to install and upgrade software on your hosts, you can streamline the process of controlling your hosts, replacing old versions of software and having the up-to-date info on what's installed on your fleet. +Fleet now supports running scripts on hosts that fail a policy check. We showed how to set up these automations via the Fleet admin UI, via our REST API, and via GitOps. -By automating software deployment, you can gain greater control over what's installed on your machines and have better oversight of version upgrades, ensuring old software with known issues is replaced. +A number of host condition related issues can be resolved by running a script on those hosts. You can now automate those resolutions right inside Fleet, allowing zero-touch remediation of policy failures on hosts running fleetd. - - - + + + - - + + diff --git a/articles/scripts.md b/articles/scripts.md index 754fdf4da9d7..2fa1bf3fd946 100644 --- a/articles/scripts.md +++ b/articles/scripts.md @@ -37,7 +37,7 @@ Fleet UI: Scripts run from the Fleet UI will run the next time your host checks in with Fleet. You can view the status of the script execution as well as the output in the target host's activity feed. -Fleet API: API documentation is [here](https://fleetdm.com/docs/rest-api/rest-api#run-script) +Fleet API: See our [REST API documentation](https://fleetdm.com/docs/rest-api/rest-api#run-script) fleetctl CLI: @@ -45,9 +45,13 @@ fleetctl CLI: fleetctl run-script --script-path=/path/to/script --host=hostname ``` +## Automate a script + +You can tell Fleet to run a script on a host when that host fails a policy. Learn more in our [script policy automations guide](https://fleetdm.com/guides/policy-automation-run-script). + - + diff --git a/website/config/routes.js b/website/config/routes.js index f74ba3981d10..7c60c46aba4b 100644 --- a/website/config/routes.js +++ b/website/config/routes.js @@ -577,7 +577,7 @@ module.exports.routes = { 'GET /learn-more-about/uninstall-scripts': '/guides/deploy-software-packages#uninstall-script', 'GET /learn-more-about/read-package-version': '/guides/deploy-software-packages#add-a-software-package-to-a-team', 'GET /learn-more-about/fleetctl': '/guides/fleetctl', - 'GET /learn-more-about/policy-automation-run-script': 'guides/policy-automation-run-script', + 'GET /learn-more-about/policy-automation-run-script': '/guides/policy-automation-run-script', // Sitemap From 767687d4a0447006a1c4382125ad4b940287d361 Mon Sep 17 00:00:00 2001 From: Ian Littman Date: Mon, 7 Oct 2024 10:07:21 -0500 Subject: [PATCH 6/9] Add header image --- articles/policy-automation-run-script.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/articles/policy-automation-run-script.md b/articles/policy-automation-run-script.md index d3672f98a804..f5260b36a500 100644 --- a/articles/policy-automation-run-script.md +++ b/articles/policy-automation-run-script.md @@ -1,5 +1,7 @@ # Automatic policy-based execution of scripts on hosts +![Fleet MDM Cover](../website/assets/images/articles/introducing-cross-platform-script-execution-800x450@2x.png) + Fleet [v4.58.0](https://github.com/fleetdm/fleet/releases/tag/fleet-v4.58.0) introduces the ability to automatically execute scripts on hosts based on predefined policy failures. This guide will walk you through the process of configuring fleet for automatic execution of scripts on hosts using uploaded scripts and based on programmed policies. You'll learn how to configure and use this feature, as well as understand how the underlying mechanism works. Fleet allows its users to upload scripts to be executed on macOS, Windows, and Linux hosts to remediate issues with those hosts. These scripts can now be automated to run when a policy fails. For more information on scripts, see [the Scripts guide](https://fleetdm.com/guides/scripts). From fc02b34d705504d45a89cb22fa933a6345c0e723 Mon Sep 17 00:00:00 2001 From: JD Date: Mon, 7 Oct 2024 08:09:53 -0700 Subject: [PATCH 7/9] Update grammar --- articles/policy-automation-run-script.md | 25 ++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/articles/policy-automation-run-script.md b/articles/policy-automation-run-script.md index f5260b36a500..61ffd6c3a930 100644 --- a/articles/policy-automation-run-script.md +++ b/articles/policy-automation-run-script.md @@ -2,9 +2,9 @@ ![Fleet MDM Cover](../website/assets/images/articles/introducing-cross-platform-script-execution-800x450@2x.png) -Fleet [v4.58.0](https://github.com/fleetdm/fleet/releases/tag/fleet-v4.58.0) introduces the ability to automatically execute scripts on hosts based on predefined policy failures. This guide will walk you through the process of configuring fleet for automatic execution of scripts on hosts using uploaded scripts and based on programmed policies. You'll learn how to configure and use this feature, as well as understand how the underlying mechanism works. +Fleet [v4.58.0](https://github.com/fleetdm/fleet/releases/tag/fleet-v4.58.0) introduces the ability to execute scripts on hosts automatically based on predefined policy failures. This guide will walk you through configuring Fleet to automatically execute scripts on hosts using uploaded scripts based on programmed policies. You'll learn how to configure and use this feature and understand how the underlying mechanism works. -Fleet allows its users to upload scripts to be executed on macOS, Windows, and Linux hosts to remediate issues with those hosts. These scripts can now be automated to run when a policy fails. For more information on scripts, see [the Scripts guide](https://fleetdm.com/guides/scripts). +Fleet allows users to upload scripts executed on macOS, Windows, and Linux hosts to remediate issues with those hosts. These scripts can now be automated to run when a policy fails. See [the Scripts guide](https://fleetdm.com/guides/scripts) for more information. ## Prerequisites @@ -14,25 +14,25 @@ Fleet allows its users to upload scripts to be executed on macOS, Windows, and L ## Step-by-step instructions -1. **Add a script**: Navigate to **Controls > Scripts**, select the team you want the script and policy to run on, then upload the script you want to run. -2. **Add a policy**: Navigate to **Policies**, select the team you want the policy to run on, and click **Add policy**. Follow the instructions to either set up a custom policy or use one that's baked into Fleet. You can also add a script automation to an existing policy. -3. **Set the automation**: In the **Policies** list view you navigated to in the previous step, click **Manage automations**, then click **Run script**. Check the box beside the policy (or policies) you want to run scripts for, then select a script in the drop-down that appears next to the policy name. When you're done associating policies to scripts, click **Save**. +1. **Add a script**: Navigate to **Controls** > **Scripts**, select the team on which you want the script and policy to run, and upload the script you want to run. +2. **Add a policy**: Navigate to **Policies**, select the team you want the policy to run on, and click **Add policy**. Follow the instructions to set up a custom policy or use one baked into Fleet. You can also add a script automation to an existing policy. +3. **Set the automation**: In the previous step's **Policies** list view you navigated to, click **Manage automations**, then click **Run script**. Check the box beside the policy (or policies) for which you want to run scripts, then select a script in the drop-down that appears next to the policy name. When you're done associating policies to scripts, click **Save**. -The next time a fleetd host with scripts enabled fails the policy you added an automation for, Fleet will queue up the script you selected and run it on the host as if you had requested a script run manually. +The next time a fleetd host fails the policy you added automation for, Fleet will queue up the script you selected and run it on the host as if you had requested a script run manually. ## How does it work? -* Online hosts report policy status when on a configurable cadence, with a default of hourly. +* Online hosts report policy status when on a configurable cadence, with hourly default. * Fleet will send scripts to the hosts on the first policy failure (first "No" result for the host) or if a policy goes from "Yes" to "No". Policies that stay failed ("No") for a host in consecutive reports will not be resent the script. -> When a script automation on a policy is added or switched to a different script, the policy's status will reset for associated hosts. This allows the newly attached script to run on hosts that had already failed the policy previously. +> When script automation on a policy is added or switched to a different script, the policy's status will reset for associated hosts. This allows the newly attached script to run on hosts that had previously failed the policy. * Scripts are run once regardless of exit code. -* When used in a policy automation, Fleet does not run shell scripts on Windows hosts, nor does it run PowerShell scripts on non-Windows hosts. +* When used in policy automation, Fleet does not run shell scripts on Windows hosts or PowerShell scripts on non-Windows hosts. ## Via the API -Script policy automations can be managed by setting the `script_id` field on [Add team policy](https://fleetdm.com/docs/rest-api/rest-api#add-team-policy) or [Edit team policy](https://fleetdm.com/docs/rest-api/rest-api#edit-team-policy) endpoints on the Fleet REST API. +Script policy automation can be managed by setting the `script_id` field on the Fleet REST API's [Add team policy](https://fleetdm.com/docs/rest-api/rest-api#add-team-policy) or [Edit team policy](https://fleetdm.com/docs/rest-api/rest-api#edit-team-policy) endpoints. ## Via GitOps @@ -40,9 +40,9 @@ To configure script policy automation via GitOps, nest a `run_script` entry unde ## Conclusion -Fleet now supports running scripts on hosts that fail a policy check. We showed how to set up these automations via the Fleet admin UI, via our REST API, and via GitOps. +Fleet now supports running scripts on hosts that fail a policy check. We showed how to set up these automations via the Fleet admin UI, our REST API, and GitOps. -A number of host condition related issues can be resolved by running a script on those hosts. You can now automate those resolutions right inside Fleet, allowing zero-touch remediation of policy failures on hosts running fleetd. +Host condition-related issues can be resolved by running a script on those hosts. You can now automate those resolutions inside Fleet, allowing zero-touch remediation of policy failures on hosts running fleetd. @@ -50,3 +50,4 @@ A number of host condition related issues can be resolved by running a script on + From 35ab8d60fe09314eef889ef1b5428f9a84d344d0 Mon Sep 17 00:00:00 2001 From: Rachael Shaw Date: Mon, 7 Oct 2024 15:06:26 -0500 Subject: [PATCH 8/9] Update articles/policy-automation-run-script.md --- articles/policy-automation-run-script.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/policy-automation-run-script.md b/articles/policy-automation-run-script.md index 61ffd6c3a930..07f931d24f77 100644 --- a/articles/policy-automation-run-script.md +++ b/articles/policy-automation-run-script.md @@ -4,7 +4,7 @@ Fleet [v4.58.0](https://github.com/fleetdm/fleet/releases/tag/fleet-v4.58.0) introduces the ability to execute scripts on hosts automatically based on predefined policy failures. This guide will walk you through configuring Fleet to automatically execute scripts on hosts using uploaded scripts based on programmed policies. You'll learn how to configure and use this feature and understand how the underlying mechanism works. -Fleet allows users to upload scripts executed on macOS, Windows, and Linux hosts to remediate issues with those hosts. These scripts can now be automated to run when a policy fails. See [the Scripts guide](https://fleetdm.com/guides/scripts) for more information. +Fleet allows users to upload scripts executed on macOS, Windows, and Linux hosts to remediate issues with those hosts. These scripts can now be automated to run when a policy fails. See [the scripts guide](https://fleetdm.com/guides/scripts) for more information. ## Prerequisites From b8f624df74abb760ca027a800fe8c3691bcc9feb Mon Sep 17 00:00:00 2001 From: Rachael Shaw Date: Mon, 7 Oct 2024 15:07:52 -0500 Subject: [PATCH 9/9] Consistent punctuation for bullet points --- articles/policy-automation-run-script.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/articles/policy-automation-run-script.md b/articles/policy-automation-run-script.md index 07f931d24f77..da97654411d4 100644 --- a/articles/policy-automation-run-script.md +++ b/articles/policy-automation-run-script.md @@ -8,8 +8,8 @@ Fleet allows users to upload scripts executed on macOS, Windows, and Linux hosts ## Prerequisites -* Fleet Premium with Admin permissions. -* Fleet [v4.58.0](https://github.com/fleetdm/fleet/releases/tag/fleet-v4.58.0) or greater. +* Fleet Premium with admin permissions +* Fleet [v4.58.0](https://github.com/fleetdm/fleet/releases/tag/fleet-v4.58.0) or greater * [Scripts enabled](https://fleetdm.com/guides/scripts#enable-scripts) on all target hosts ## Step-by-step instructions