Skip to content

Commit

Permalink
Module implementation (#608)
Browse files Browse the repository at this point in the history
* Module implementation - first pass

* Allow modules in example tests

* Move path resolution logic around

* Add some tests for CycleDetector

* Additional tests for module resolution

* Switch back to manifest resource streams for examples

* Enforce forward slash rather than backslash

* Add FileResolver tests

* Update implementation based on #614

* Fix example

* Params declarational should be optional if all params are optional

* Address PR feedback

* Address PR feedback
  • Loading branch information
anthony-c-martin authored Oct 16, 2020
1 parent bf88474 commit 23bd4ca
Show file tree
Hide file tree
Showing 214 changed files with 5,065 additions and 599 deletions.
2 changes: 1 addition & 1 deletion .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
"name": "Bicep CLI",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"preLaunchTask": "build-cli",
"program": "${workspaceFolder}/src/Bicep.Cli/bin/Debug/netcoreapp3.1/Bicep.dll",
"args": [],
"cwd": "${workspaceFolder}/src/Bicep.Cli",
Expand Down
36 changes: 25 additions & 11 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,30 @@
],
"problemMatcher": "$msCompile"
},
{
"label": "build-cli",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/src/Bicep.Cli/Bicep.Cli.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "build-langserver",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/src/Bicep.LangServer/Bicep.LangServer.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "vscodeext-build",
"command": "npm",
Expand All @@ -23,19 +47,9 @@
"cwd": "${workspaceFolder}/src/vscode-bicep"
},
"dependsOn": [
"build",
"vscodeext-install"
"build-langserver"
]
},
{
"label": "vscodeext-install",
"command": "npm",
"args": ["install"],
"type": "shell",
"options": {
"cwd": "${workspaceFolder}/src/vscode-bicep"
}
},
{
"label": "playground-build-wasm",
"command": "npm",
Expand Down
155 changes: 155 additions & 0 deletions docs/examples/modules/1vm-2nics-2subnets-1vnet/main.bicep
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
param virtualMachineSize string
param adminUsername string
param adminPassword string {
secure: true
}
param storageAccountType string
param location string = resourceGroup().location

var nic1Name = 'nic-1'
var nic2Name = 'nic-2'
var virtualNetworkName = 'virtualNetwork'
var subnet1Name = 'subnet-1'
var subnet2Name = 'subnet-2'
var publicIPAddressName = 'publicIp'
var diagStorageAccountName = concat('diags', uniqueString(resourceGroup().id))
var networkSecurityGroupName = 'NSG'
var networkSecurityGroupName2 = concat(subnet2Name, '-nsg')

module vmMod './vm.bicep' = {
name: 'vmMod'
params: {
adminUsername: adminUsername
adminPassword: adminPassword
virtualMachineSize: virtualMachineSize
virtualMachineName: 'VM-MultiNic'
nic1Id: nic1.id
nic2Id: nic2.id
diagsStorageUri: diagsAccount.properties.primaryEndpoints.blob
}
}

resource diagsAccount 'Microsoft.Storage/storageAccounts@2017-06-01' = {
name: diagStorageAccountName
location: location
sku: {
name: storageAccountType
}
kind: 'Storage'
}

// Simple Network Security Group for subnet2
resource nsg2 'Microsoft.Network/networkSecurityGroups@2019-08-01' = {
name: networkSecurityGroupName2
location: location
properties: {
}
}

// This will build a Virtual Network.
resource vnet 'Microsoft.Network/virtualNetworks@2017-06-01' = {
name: virtualNetworkName
location: location
properties: {
addressSpace: {
addressPrefixes: [
'10.0.0.0/16'
]
}
subnets: [
{
name: subnet1Name
properties: {
addressPrefix: '10.0.0.0/24'
}
}
{
name: subnet2Name
properties: {
addressPrefix: '10.0.1.0/24'
networkSecurityGroup: {
id: nsg2.id
}
}
}
]
}
}

// This will be your Primary NIC
resource nic1 'Microsoft.Network/networkInterfaces@2017-06-01' = {
name: nic1Name
location: location
properties: {
ipConfigurations: [
{
name: 'ipconfig1'
properties: {
subnet: {
id: '${vnet.id}/subnets/${subnet1Name}'
}
privateIPAllocationMethod: 'Dynamic'
publicIPAddress: {
id: pip.id
}
}
}
]
networkSecurityGroup: {
id: nsg.id
}
}
}

// This will be your Secondary NIC
resource nic2 'Microsoft.Network/networkInterfaces@2017-06-01' = {
name: nic2Name
location: location
properties: {
ipConfigurations: [
{
name: 'ipconfig1'
properties: {
subnet: {
id: '${vnet.id}/subnets/${subnet2Name}'
}
privateIPAllocationMethod: 'Dynamic'
}
}
]
}
}

// Public IP for your Primary NIC
resource pip 'Microsoft.Network/publicIPAddresses@2017-06-01' = {
name: publicIPAddressName
location: location
properties: {
publicIPAllocationMethod: 'Dynamic'
}
}

// Network Security Group (NSG) for your Primary NIC
resource nsg 'Microsoft.Network/networkSecurityGroups@2016-09-01' = {
name: networkSecurityGroupName
location: location
properties: {
securityRules: [
{
name: 'default-allow-rdp'
properties: {
priority: 1000
sourceAddressPrefix: '*'
protocol: 'Tcp'
destinationPortRange: '3389'
access: 'Allow'
direction: 'Inbound'
sourcePortRange: '*'
destinationAddressPrefix: '*'
}
}
]
}
}

output publicIp string = pip.properties.ipAddress
Loading

0 comments on commit 23bd4ca

Please sign in to comment.