从零开始贡献 Azure Community-Policy:开发者必知的贡献指南
【免费下载链接】Community-PolicyThis repo is for Microsoft Azure customers and Microsoft teams to collaborate in making custom policies.项目地址: https://gitcode.com/gh_mirrors/co/Community-Policy
Azure Community-Policy 是一个由微软 Azure 用户和内部团队共同维护的开源项目,旨在分享和协作开发自定义策略。这些策略由社区构建,虽然不是微软官方内置策略,但为 Azure 资源治理提供了丰富的自定义解决方案。本文将详细介绍如何从零开始贡献你的第一个 Azure Policy,帮助开发者快速掌握贡献流程和规范。
准备工作:了解项目结构与规范
在开始贡献前,首先需要了解项目的文件结构和命名规范。Community-Policy 采用严格的目录层次结构,所有策略定义都位于policyDefinitions文件夹下,遵循两级子目录结构:
一级目录:根据
metadata.category命名,对应 Azure 资源提供程序,如Compute(计算)、Storage(存储)、Key Vault(密钥保管库)等。完整的有效类别列表可参考 Scripts/Format-PolicyDefinition.ps1。二级目录:以策略显示名称命名,将空格和特殊字符替换为连字符,所有字母转换为小写,例如
deny-vm-storage-account或allowed-network-locations。
每个策略必须包含三个文件,且文件名固定:
azurepolicy.json:完整的策略定义 JSON,包含参数和规则。azurepolicy.rules.json:仅包含策略规则的 JSON。azurepolicy.parameters.json:仅包含参数定义的 JSON。
注意:不要嵌套文件夹超过两级,且所有文件和二级文件夹名称必须使用小写字母,以确保 GitHub 上的一致性排序。
核心步骤:贡献策略的完整流程
1. 克隆项目仓库
首先,将项目仓库克隆到本地开发环境:
git clone https://gitcode.com/gh_mirrors/co/Community-Policy cd Community-Policy2. 创建策略文件
根据上述结构,在policyDefinitions下创建对应目录,并编写三个必要的 JSON 文件。以下是策略文件的核心要求:
必备元素
- 顶层属性:
name必须是 GUID(确保策略可更新),type必须为"Microsoft.Authorization/policyDefinitions"。 - 嵌套属性:
displayName(策略名称)、description(策略描述)、metadata(元数据,含version和category)、mode(策略模式)均为必填项。 - 参数定义:参数名称需使用 camelCase,提供
allowedValues(允许值)、defaultValue(默认值)和displayName(参数显示名称)。
效果参数化
策略的effect必须参数化,名称固定为effect,类型为String,且必须包含allowedValues和defaultValue。例如:
{ "parameters": { "effect": { "type": "String", "metadata": { "displayName": "Effect", "description": "DeployIfNotExists, AuditIfNotExists or Disabled the execution of the Policy" }, "allowedValues": ["DeployIfNotExists", "AuditIfNotExists", "Disabled"], "defaultValue": "DeployIfNotExists" } } }3. 验证与格式化策略
在提交 PR 前,必须使用项目提供的脚本验证和格式化策略文件,确保符合规范:
验证脚本:Scripts/Confirm-PolicyDefinitionIsValid.ps1
检查策略文件的必填元素和格式是否正确。格式化脚本:Scripts/Out-FormattedPolicyDefinition.ps1
自动修复格式问题(如 GUID 生成、版本号标准化),并将完整策略拆分为三个 required 文件。
运行示例:
.\Scripts\Out-FormattedPolicyDefinition.ps1 -InputFile .\policyDefinitions\Compute\your-policy\azurepolicy.json4. 提交 Pull Request
提交 PR 时需满足以下条件:
- 每个 PR 仅包含一个策略,且位于独立文件夹中。
- 响应 PR 评审意见的时间不超过 10 天,否则 PR 将被关闭。
- 确保已签署 Contributor License Agreement (CLA),提交 PR 时会由 CLA 机器人自动检测。
常见问题与支持资源
如何获取帮助?
- 一般问题:访问 Azure Governance 社区论坛 或 StackOverflow。
- 文档反馈:直接在 Azure Policy 文档页面底部提交反馈。
- 新策略建议:通过 Azure Governance Ideas 提交建议。
必备学习资源
- Azure Policy 概述
- 策略定义结构
- 策略效果详解
- 使用 GitHub 管理策略即代码
总结
贡献 Azure Community-Policy 不仅能帮助你深入理解 Azure 资源治理,还能为全球开发者社区提供有价值的解决方案。只需遵循本文介绍的步骤,从了解项目规范、编写策略文件,到使用脚本验证和提交 PR,即可完成你的第一次贡献。开始行动吧,让你的策略成为社区的一部分! 🚀
【免费下载链接】Community-PolicyThis repo is for Microsoft Azure customers and Microsoft teams to collaborate in making custom policies.项目地址: https://gitcode.com/gh_mirrors/co/Community-Policy
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考