microsoft / PSRule

Validate infrastructure as code (IaC) and objects using PowerShell rules.
https://microsoft.github.io/PSRule/v2/
MIT License
375 stars 49 forks source link
allof anyof concept devops devops-tools hacktoberfest infrastructure-as-code powershell powershell-module psrule rule rule-engine testing-tools typeof

PSRule

A cross-platform module to validate infrastructure as code (IaC) and objects using PowerShell rules. PSRule works great and integrates with popular continuous integration (CI) systems.

Open in vscode.dev

Summary

Features of PSRule include

Project objectives

  1. Extensible:
    • Provide an execution environment (tools and language) to validate infrastructure code.
    • Handling of common concerns such as input/ output/ reporting should be handled by the engine.
    • Language must be flexible enough to support a wide range of use cases.
  2. DevOps:
    • Validation should support and enhance DevOps workflows by providing fast feedback in pull requests.
    • Allow quality gates to be implemented between environments such development, test, and production.
  3. Cross-platform:
    • A wide range of platforms can be used to author and deploy infrastructure code. PSRule must support rule validation and authoring on Linux, MacOS, and Windows.
    • Runs in a Linux container. For continuous integration (CI) systems that do not support PowerShell, run in a container.
  4. Reusable:
    • Validation should plug and play, reusable across teams and organizations.
    • Any reusable validation will have exceptions. Rules must be able to be disabled where they are not applicable.

Continue reading the PSRule design specification.

Back to the summary

Support

This project uses GitHub Issues to track bugs and feature requests. Please search the existing issues before filing new issues to avoid duplicates.

Support for this project/ product is limited to the resources listed above.

Back to the summary

Getting the module

You can download and install the PSRule module from the PowerShell Gallery.

Module Description Downloads / instructions
PSRule Validate infrastructure as code (IaC) and objects using PowerShell rules. latest / instructions

For rule and integration modules see related projects.

Back to the summary

Getting extensions

Companion extensions are available for the following platforms.

Platform Description Downloads / instructions
Azure Pipelines Validate infrastructure as code (IaC) and DevOps repositories using Azure Pipelines. latest / instructions
GitHub Actions Validate infrastructure as code (IaC) and DevOps repositories using GitHub Actions. latest / instructions
Visual Studio Code Visual Studio Code extension for PSRule. latest / instructions

Back to the summary

Getting started

For an quickstart example of using PSRule see Create a standalone rule. For specific use cases see scenarios.

For frequently asked questions, see the FAQ.

Back to the summary

Scenarios

For walk through examples of PSRule usage see:

Back to the summary

Language reference

PSRule extends PowerShell with domain specific language (DSL) keywords, cmdlets and automatic variables.

Keywords

The following language keywords are used by the PSRule module:

Back to the summary

Commands

The following commands exist in the PSRule module:

Back to the summary

Concepts

The following conceptual topics exist in the PSRule module:

Back to the summary

Schemas

PSRule uses the following schemas:

Back to the summary

Related projects

For a list of projects and integrations see Related projects.

Changes and versioning

This repository uses semantic versioning to declare breaking changes. For details please see the changes and versioning.

Contributing

This project welcomes contributions and suggestions. If you are ready to contribute, please visit the contribution guide.

Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Maintainers

License

This project is licensed under the MIT License.

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.

Back to the summary