Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Modules] Create module for Microsoft.Network/dnsForwardningRulesets #3149

Merged
merged 52 commits into from
Jul 12, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
a3a3134
init dns forwording ruleset module
JPEasier Apr 24, 2023
0753c5a
add Github workflow
JPEasier Apr 24, 2023
2d3dbbb
test workflow
JPEasier Apr 24, 2023
f967772
typo
JPEasier Apr 24, 2023
252305e
typo
JPEasier Apr 24, 2023
c4ec3f3
typo
JPEasier Apr 24, 2023
652a992
reset workflow trigger
JPEasier Apr 24, 2023
896a7e2
add readme
JPEasier Apr 24, 2023
33cafee
typo workflow
JPEasier Apr 24, 2023
39a6db3
change trigger for testing
JPEasier Apr 24, 2023
90dd4a2
typo
JPEasier Apr 24, 2023
0ab0dd8
add ADO pipeline
JPEasier Apr 24, 2023
c3c6f12
resetworkflow trigger
JPEasier Apr 24, 2023
f954197
update dependencies
JPEasier Apr 24, 2023
95ba4fe
add forwarding rule
JPEasier Apr 24, 2023
4137b85
add sub modules
JPEasier Apr 24, 2023
3328c73
Update test deployment
JPEasier Apr 24, 2023
d15e4ed
add min test
JPEasier Apr 24, 2023
23736e7
redme update and default location
JPEasier Apr 25, 2023
c953624
test deployment
JPEasier Apr 25, 2023
b7d0792
PR review
JPEasier May 4, 2023
8651715
Update modules/Microsoft.Network/dnsForwardingRulesets/readme.md
JPEasier Jun 9, 2023
0c50018
update PR comments
JPEasier Jun 9, 2023
9135b9b
Merge branch 'users/jpeasier/dnsForwardingRulesets' of https://github…
JPEasier Jun 9, 2023
bf0904a
Update modules/Microsoft.Network/dnsForwardingRulesets/deploy.bicep
JPEasier Jun 9, 2023
76f2e09
Update modules/Microsoft.Network/dnsForwardingRulesets/virtualNetwork…
JPEasier Jun 9, 2023
21e15bb
Update modules/Microsoft.Network/dnsForwardingRulesets/readme.md
JPEasier Jun 9, 2023
a0b2f51
update PR
JPEasier Jun 9, 2023
6af449e
Merge branch 'users/jpeasier/dnsForwardingRulesets' of https://github…
JPEasier Jun 9, 2023
3821b77
Merge branch 'main' of https://github.com/Azure/ResourceModules into …
JPEasier Jun 9, 2023
68f5b05
Update to new module structure
JPEasier Jun 9, 2023
3e1f9be
update to new module structure
JPEasier Jun 9, 2023
3b7caca
change pipelines to new module structure
JPEasier Jun 9, 2023
aa9fe30
update readme
JPEasier Jun 9, 2023
1ae150e
naming
JPEasier Jun 9, 2023
b7c0af0
rename readme
JPEasier Jun 9, 2023
ce8eb02
test deployment
JPEasier Jun 9, 2023
172eb4d
rename test files
JPEasier Jun 9, 2023
2db2e50
change subnet range
JPEasier Jun 9, 2023
8298d64
remove test deployment
JPEasier Jun 9, 2023
c3551e8
Update modules/Microsoft.Network/dnsForwardingRulesets/deploy.bicep
JPEasier Jun 14, 2023
038afca
Update modules/Microsoft.Network/dnsForwardingRulesets/deploy.bicep
JPEasier Jun 14, 2023
7166145
Update modules/Microsoft.Network/dnsForwardingRulesets/forwardingRule…
JPEasier Jun 14, 2023
4bfab6c
Update modules/Microsoft.Network/dnsForwardingRulesets/forwardingRule…
JPEasier Jun 14, 2023
daaac9a
remove old module
JPEasier Jun 15, 2023
05e357d
Merge branch 'main' of https://github.com/Azure/ResourceModules into …
JPEasier Jul 12, 2023
d8a2b5d
add main test file
JPEasier Jul 12, 2023
0531acd
add arm templates
JPEasier Jul 12, 2023
1daaaa4
update readme
JPEasier Jul 12, 2023
69ec70a
remove test branch
JPEasier Jul 12, 2023
2bca201
rename sub module
JPEasier Jul 12, 2023
e7856d2
update main.json
JPEasier Jul 12, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: 'Network - DNS Forwarding Rulesets'

parameters:
- name: staticValidation
displayName: Execute static validation
type: boolean
default: true
- name: deploymentValidation
displayName: Execute deployment validation
type: boolean
default: true
- name: removeDeployment
displayName: Remove deployed module
type: boolean
default: true
- name: prerelease
displayName: Publish prerelease module
type: boolean
default: false

pr: none

trigger:
batch: true
branches:
include:
- main
paths:
include:
- '/.azuredevops/modulePipelines/ms.network.dnsforwardingrulesets.yml'
- '/.azuredevops/pipelineTemplates/*.yml'
- '/modules/network/dns-forwarding-rulesets/*'
- '/utilities/pipelines/*'
exclude:
- '/utilities/pipelines/deploymentRemoval/*'
- '/**/*.md'

variables:
- template: '../../settings.yml'
- group: 'PLATFORM_VARIABLES'
- name: modulePath
value: '/modules/network/dns-forwarding-rulesets'

stages:
- template: /.azuredevops/pipelineTemplates/stages.module.yml
parameters:
staticValidation: '${{ parameters.staticValidation }}'
deploymentValidation: '${{ parameters.deploymentValidation }}'
removeDeployment: '${{ parameters.removeDeployment }}'
prerelease: '${{ parameters.prerelease }}'
84 changes: 84 additions & 0 deletions .github/workflows/ms.network.dnsforwardingrulesets.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
name: 'Network - DNS Forwarding Rulesets'

on:
workflow_dispatch:
inputs:
staticValidation:
type: boolean
description: 'Execute static validation'
required: false
default: true
deploymentValidation:
type: boolean
description: 'Execute deployment validation'
required: false
default: true
removeDeployment:
type: boolean
description: 'Remove deployed module'
required: false
default: true
prerelease:
type: boolean
description: 'Publish prerelease module'
required: false
default: false
push:
branches:
- main
paths:
- '.github/actions/templates/**'
- '.github/workflows/template.module.yml'
- '.github/workflows/ms.network.dnsforwardingrulesets.yml'
- 'modules/network/dns-forwarding-rulesets/**'
- 'utilities/pipelines/**'
- '!utilities/pipelines/deploymentRemoval/**'
- '!*/**/README.md'

env:
modulePath: 'modules/network/dns-forwarding-rulesets'
workflowPath: '.github/workflows/ms.network.dnsforwardingrulesets.yml'

concurrency:
group: ${{ github.workflow }}

jobs:
###########################
# Initialize pipeline #
###########################
job_initialize_pipeline:
runs-on: ubuntu-20.04
name: 'Initialize pipeline'
steps:
- name: 'Checkout'
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: 'Set input parameters to output variables'
id: get-workflow-param
uses: ./.github/actions/templates/getWorkflowInput
with:
workflowPath: '${{ env.workflowPath}}'
- name: 'Get parameter file paths'
id: get-module-test-file-paths
uses: ./.github/actions/templates/getModuleTestFiles
with:
modulePath: '${{ env.modulePath }}'
outputs:
workflowInput: ${{ steps.get-workflow-param.outputs.workflowInput }}
moduleTestFilePaths: ${{ steps.get-module-test-file-paths.outputs.moduleTestFilePaths }}
modulePath: '${{ env.modulePath }}'

##############################
# Call reusable workflow #
##############################
call-workflow-passing-data:
name: 'Module'
needs:
- job_initialize_pipeline
uses: ./.github/workflows/template.module.yml
with:
workflowInput: '${{ needs.job_initialize_pipeline.outputs.workflowInput }}'
moduleTestFilePaths: '${{ needs.job_initialize_pipeline.outputs.moduleTestFilePaths }}'
modulePath: '${{ needs.job_initialize_pipeline.outputs.modulePath}}'
secrets: inherit
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
@sys.description('Required. The IDs of the principals to assign the role to.')
param principalIds array

@sys.description('Required. The name of the role to assign. If it cannot be found you can specify the role definition ID instead.')
param roleDefinitionIdOrName string

@sys.description('Required. The resource ID of the resource to apply the role assignment to.')
param resourceId string

@sys.description('Optional. The principal type of the assigned principal ID.')
@allowed([
'ServicePrincipal'
'Group'
'User'
'ForeignGroup'
'Device'
''
])
param principalType string = ''

@sys.description('Optional. The description of the role assignment.')
param description string = ''

@sys.description('Optional. The conditions on the role assignment. This limits the resources it can be assigned to. e.g.: @Resource[Microsoft.Storage/storageAccounts/blobServices/containers:ContainerName] StringEqualsIgnoreCase "foo_storage_container".')
param condition string = ''

@sys.description('Optional. Version of the condition.')
@allowed([
'2.0'
])
param conditionVersion string = '2.0'

@sys.description('Optional. Id of the delegated managed identity resource.')
param delegatedManagedIdentityResourceId string = ''

var builtInRoleNames = {
'Avere Contributor': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '4f8fab4f-1852-4a58-a46a-8eaf358af14a')
'Avere Operator': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'c025889f-8102-4ebf-b32c-fc0c6f0c6bd9')
'Azure Center for SAP solutions administrator': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '7b0c7e81-271f-4c71-90bf-e30bdfdbc2f7')
'Azure Center for SAP solutions reader': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '05352d14-a920-4328-a0de-4cbe7430e26b')
'Azure Center for SAP solutions service role': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'aabbc5dd-1af0-458b-a942-81af88f9c138')
'Azure Kubernetes Service Policy Add-on Deployment': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '18ed5180-3e48-46fd-8541-4ea054d57064')
'Backup Contributor': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '5e467623-bb1f-42f4-a55d-6e525e11384b')
'Backup Operator': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '00c29273-979b-4161-815c-10b084fb9324')
Contributor: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')
'Cosmos DB Operator': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '230815da-be43-4aae-9cb4-875f7bd000aa')
'Desktop Virtualization Virtual Machine Contributor': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'a959dbd1-f747-45e3-8ba6-dd80f235f97c')
'DevTest Labs User': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '76283e04-6283-4c54-8f91-bcf1374a3c64')
'DNS Resolver Contributor': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '0f2ebee7-ffd4-4fc0-b3b7-664099fdad5d')
'DNS Zone Contributor': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'befefa01-2a29-4197-83a8-272ff33ce314')
'DocumentDB Account Contributor': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '5bd9cd88-fe45-4216-938b-f97437e15450')
'Domain Services Contributor': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'eeaeda52-9324-47f6-8069-5d5bade478b2')
'Domain Services Reader': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '361898ef-9ed1-48c2-849c-a832951106bb')
'LocalNGFirewallAdministrator role': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'a8835c7d-b5cb-47fa-b6f0-65ea10ce07a2')
'Log Analytics Contributor': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '92aaf0da-9dab-42b6-94a3-d43ce8d16293')
'Log Analytics Reader': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '73c42c96-874c-492b-b04d-ab87d138a893')
'Managed Application Contributor Role': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '641177b8-a67a-45b9-a033-47bc880bb21e')
'Managed Application Operator Role': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'c7393b34-138c-406f-901b-d8cf2b17e6ae')
'Managed Applications Reader': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b9331d33-8a36-4f8c-b097-4f54124fdb44')
'Monitoring Contributor': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '749f88d5-cbae-40b8-bcfc-e573ddc772fa')
'Monitoring Reader': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '43d0d8ad-25c7-4714-9337-8ba259a9fe05')
'Network Contributor': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '4d97b98b-1d4f-4787-a291-c67834d212e7')
Owner: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '8e3af657-a8ff-443c-a75c-2fe8c4bcb635')
'Private DNS Zone Contributor': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b12aa53e-6015-4669-85d0-8515ebb3ae7f')
Reader: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')
'Resource Policy Contributor': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '36243c78-bf99-498c-9df9-86d9f8d28608')
'Role Based Access Control Administrator (Preview)': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'f58310d9-a9f6-439a-9e8d-f62e7b41a168')
'Site Recovery Contributor': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '6670b86e-a3f7-4917-ac9b-5d6ab1be4567')
'Site Recovery Operator': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '494ae006-db33-4328-bf46-533a6560a3ca')
'SQL Managed Instance Contributor': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '4939a1f6-9ae0-4e48-a1e0-f2cbe897382d')
'SQL Security Manager': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '056cd41c-7e88-42e1-933e-88ba6a50c9c3')
'Storage Account Contributor': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '17d1049b-9a84-46fb-8f53-869881c3d3ab')
'Traffic Manager Contributor': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'a4b10055-b0c7-44c2-b00f-c7b5b3550cf7')
'User Access Administrator': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '18d7d88d-d35e-4fb5-a5c3-7773c20a72d9')
'Virtual Machine Administrator Login': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '1c0163c0-47e6-4577-8991-ea5c82e286e4')
'Virtual Machine Contributor': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '9980e02c-c2be-4d73-94e8-173b1dc7cf3c')
'Virtual Machine User Login': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'fb879df8-f326-4884-b1cf-06f3ad86be52')
'Windows Admin Center Administrator Login': subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'a6333a3e-0164-44c3-b281-7a577aff287f')
}

resource dnsForwardingRuleset 'Microsoft.Network/dnsForwardingRulesets@2022-07-01' existing = {
name: last(split(resourceId, '/'))!
}

resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = [for principalId in principalIds: {
name: guid(dnsForwardingRuleset.id, principalId, roleDefinitionIdOrName)
properties: {
description: description
roleDefinitionId: contains(builtInRoleNames, roleDefinitionIdOrName) ? builtInRoleNames[roleDefinitionIdOrName] : roleDefinitionIdOrName
principalId: principalId
principalType: !empty(principalType) ? any(principalType) : null
condition: !empty(condition) ? condition : null
conditionVersion: !empty(conditionVersion) && !empty(condition) ? conditionVersion : null
delegatedManagedIdentityResourceId: !empty(delegatedManagedIdentityResourceId) ? delegatedManagedIdentityResourceId : null
}
scope: dnsForwardingRuleset
}]
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
@description('Required. The name of the Virtual Network to create.')
param virtualNetworkName string

@description('Required. The name of the DNS Resolver to create.')
param dnsResolverName string

@description('Optional. The location to deploy resources to.')
param location string = resourceGroup().location

@description('Required. The name of the Managed Identity to create.')
param managedIdentityName string

var addressPrefix = '10.0.0.0/16'
var pdnsinSnetAddressPrefix = '10.0.100.0/25'
var pdnsoutSnetAddressPrefix = '10.0.100.128/25'

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2022-01-01' = {
name: virtualNetworkName
location: location
properties: {
addressSpace: {
addressPrefixes: [
addressPrefix
]
}
subnets: [
{
name: 'pdnsin'
properties: {
addressPrefix: pdnsinSnetAddressPrefix
delegations: [
{
name: 'dnsdel'
properties: {
serviceName: 'Microsoft.Network/dnsResolvers'
}
}
]
}
}
{
name: 'pdnsout'
properties: {
addressPrefix: pdnsoutSnetAddressPrefix
delegations: [
{
name: 'dnsdel'
properties: {
serviceName: 'Microsoft.Network/dnsResolvers'
}
}
]
}
}
]
}
}

resource dnsResolver 'Microsoft.Network/dnsResolvers@2022-07-01' = {
name: dnsResolverName
location: location
properties: {
virtualNetwork: {
id: virtualNetwork.id
}

}
}

resource outboundEndpoints 'Microsoft.Network/dnsResolvers/outboundEndpoints@2022-07-01' = {
name: 'pdnsout'
location: location
parent: dnsResolver
properties: {
subnet: {
id: virtualNetwork.properties.subnets[1].id
}
}
}

resource managedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2018-11-30' = {
name: managedIdentityName
location: location
}

@description('The resource ID of the created Virtual Network.')
output virtualNetworkResourceId string = virtualNetwork.id

@description('The resource ID of the created inbound endpoint Virtual Network Subnet.')
output subnetResourceId_dnsIn string = virtualNetwork.properties.subnets[0].id

@description('The resource ID of the created outbound endpoint Virtual Network Subnet.')
output subnetResourceId_dnsOut string = virtualNetwork.properties.subnets[1].id

@description('The resource ID of the created DNS Resolver.')
output dnsResolverOutboundEndpointsId string = outboundEndpoints.id

@description('The principal ID of the created Managed Identity.')
output managedIdentityPrincipalId string = managedIdentity.properties.principalId
Loading