Skip to content

Commit abc1bd8

Browse files
authored
Merge pull request microsoft#66 from TomArcherMsft/tarcher-move-sample-code-to-github
Move documentation sample code to GitHub
2 parents 92dacc7 + bd3972c commit abc1bd8

File tree

29 files changed

+1900
-1
lines changed

29 files changed

+1900
-1
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
terraform {
2+
3+
required_version = ">=0.12"
4+
5+
required_providers {
6+
azurerm = {
7+
source = "hashicorp/azurerm"
8+
version = "~>2.0"
9+
}
10+
}
11+
}
12+
13+
provider "azurerm" {
14+
features {}
15+
}
16+
17+
resource "azurerm_resource_group" "rg" {
18+
name = var.resource_group_name
19+
location = var.resource_group_location
20+
}
21+
22+
resource "azurerm_attestation_provider" "corpAttestation" {
23+
name = var.attestation_provider_name
24+
resource_group_name = azurerm_resource_group.rg.name
25+
location = azurerm_resource_group.rg.location
26+
27+
policy_signing_certificate_data = file(var.policy_file)
28+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
variable "resource_group_name" {
2+
default = "myResourceGroup"
3+
}
4+
5+
variable "resource_group_location" {
6+
default = "eastus"
7+
}
8+
9+
variable "policy_file" {
10+
default = "~/.certs/cert.pem"
11+
}
12+
13+
variable "attestation_provider_name" {
14+
default = "attestationprovider007"
15+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
terraform {
2+
3+
required_version = ">=0.12"
4+
5+
required_providers {
6+
azurerm = {
7+
source = "hashicorp/azurerm"
8+
version = "~>2.0"
9+
}
10+
}
11+
}
12+
13+
provider "azurerm" {
14+
features {}
15+
}
16+
17+
resource "azurerm_resource_group" "rg" {
18+
name = var.resource_group_name
19+
location = var.resource_group_location
20+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Azure resource group
2+
3+
This template deploys an Azure resource group.
4+
5+
## Resources
6+
7+
| Terraform Resource Type | Description |
8+
| - | - |
9+
| `azurerm_resource_group` | The resource group all resources are deployed into |
10+
11+
## Variables
12+
13+
| Name | Description |
14+
|-|-|
15+
| `name` | Name of the deployment |
16+
| `environment` | The depolyment environment name (used for postfixing resource names) |
17+
| `location` | The Azure Region to deploy these resources in |
18+
19+
## Example
20+
21+
To see how to run this example, see [Create an Azure resource group using Terraform](https://docs.microsoft.com/azure/developer/terraform/create-resource-group).
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
variable "resource_group_name" {
2+
default = "myResourceGroup"
3+
}
4+
5+
variable "resource_group_location" {
6+
default = "eastus"
7+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
terraform {
2+
3+
required_version = ">=0.12"
4+
5+
required_providers {
6+
azurerm = {
7+
source = "hashicorp/azurerm"
8+
version = "~>2.0"
9+
}
10+
}
11+
backend "azurerm" {
12+
resource_group_name = var.resource_group_name
13+
storage_account_name = var.storage_account_name
14+
container_name = "tfstate"
15+
key = "codelab.microsoft.tfstate"
16+
}
17+
}
18+
19+
provider "azurerm" {
20+
features {}
21+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
output "client_key" {
2+
value = azurerm_kubernetes_cluster.k8s.kube_config.0.client_key
3+
}
4+
5+
output "client_certificate" {
6+
value = azurerm_kubernetes_cluster.k8s.kube_config.0.client_certificate
7+
}
8+
9+
output "cluster_ca_certificate" {
10+
value = azurerm_kubernetes_cluster.k8s.kube_config.0.cluster_ca_certificate
11+
}
12+
13+
output "cluster_username" {
14+
value = azurerm_kubernetes_cluster.k8s.kube_config.0.username
15+
}
16+
17+
output "cluster_password" {
18+
value = azurerm_kubernetes_cluster.k8s.kube_config.0.password
19+
}
20+
21+
output "kube_config" {
22+
value = azurerm_kubernetes_cluster.k8s.kube_config_raw
23+
sensitive = true
24+
}
25+
26+
output "host" {
27+
value = azurerm_kubernetes_cluster.k8s.kube_config.0.host
28+
}
29+
30+
output "identity_resource_id" {
31+
value = azurerm_user_assigned_identity.testIdentity.id
32+
}
33+
34+
output "identity_client_id" {
35+
value = azurerm_user_assigned_identity.testIdentity.client_id
36+
}
Lines changed: 211 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,211 @@
1+
# # Locals block for hardcoded names.
2+
locals {
3+
backend_address_pool_name = "${azurerm_virtual_network.test.name}-beap"
4+
frontend_port_name = "${azurerm_virtual_network.test.name}-feport"
5+
frontend_ip_configuration_name = "${azurerm_virtual_network.test.name}-feip"
6+
http_setting_name = "${azurerm_virtual_network.test.name}-be-htst"
7+
listener_name = "${azurerm_virtual_network.test.name}-httplstn"
8+
request_routing_rule_name = "${azurerm_virtual_network.test.name}-rqrt"
9+
app_gateway_subnet_name = "appgwsubnet"
10+
}
11+
12+
data "azurerm_resource_group" "rg" {
13+
name = var.resource_group_name
14+
}
15+
16+
# User Assigned Identities
17+
resource "azurerm_user_assigned_identity" "testIdentity" {
18+
resource_group_name = data.azurerm_resource_group.rg.name
19+
location = data.azurerm_resource_group.rg.location
20+
21+
name = "identity1"
22+
23+
tags = var.tags
24+
}
25+
26+
resource "azurerm_virtual_network" "test" {
27+
name = var.virtual_network_name
28+
location = data.azurerm_resource_group.rg.location
29+
resource_group_name = data.azurerm_resource_group.rg.name
30+
address_space = [var.virtual_network_address_prefix]
31+
32+
subnet {
33+
name = var.aks_subnet_name
34+
address_prefix = var.aks_subnet_address_prefix
35+
}
36+
37+
subnet {
38+
name = "appgwsubnet"
39+
address_prefix = var.app_gateway_subnet_address_prefix
40+
}
41+
42+
tags = var.tags
43+
}
44+
45+
data "azurerm_subnet" "kubesubnet" {
46+
name = var.aks_subnet_name
47+
virtual_network_name = azurerm_virtual_network.test.name
48+
resource_group_name = data.azurerm_resource_group.rg.name
49+
depends_on = [azurerm_virtual_network.test]
50+
}
51+
52+
data "azurerm_subnet" "appgwsubnet" {
53+
name = "appgwsubnet"
54+
virtual_network_name = azurerm_virtual_network.test.name
55+
resource_group_name = data.azurerm_resource_group.rg.name
56+
depends_on = [azurerm_virtual_network.test]
57+
}
58+
59+
# Public Ip
60+
resource "azurerm_public_ip" "test" {
61+
name = "publicIp1"
62+
location = data.azurerm_resource_group.rg.location
63+
resource_group_name = data.azurerm_resource_group.rg.name
64+
allocation_method = "Static"
65+
sku = "Standard"
66+
67+
tags = var.tags
68+
}
69+
70+
resource "azurerm_application_gateway" "network" {
71+
name = var.app_gateway_name
72+
resource_group_name = data.azurerm_resource_group.rg.name
73+
location = data.azurerm_resource_group.rg.location
74+
75+
sku {
76+
name = var.app_gateway_sku
77+
tier = "Standard_v2"
78+
capacity = 2
79+
}
80+
81+
gateway_ip_configuration {
82+
name = "appGatewayIpConfig"
83+
subnet_id = data.azurerm_subnet.appgwsubnet.id
84+
}
85+
86+
frontend_port {
87+
name = local.frontend_port_name
88+
port = 80
89+
}
90+
91+
frontend_port {
92+
name = "httpsPort"
93+
port = 443
94+
}
95+
96+
frontend_ip_configuration {
97+
name = local.frontend_ip_configuration_name
98+
public_ip_address_id = azurerm_public_ip.test.id
99+
}
100+
101+
backend_address_pool {
102+
name = local.backend_address_pool_name
103+
}
104+
105+
backend_http_settings {
106+
name = local.http_setting_name
107+
cookie_based_affinity = "Disabled"
108+
port = 80
109+
protocol = "Http"
110+
request_timeout = 1
111+
}
112+
113+
http_listener {
114+
name = local.listener_name
115+
frontend_ip_configuration_name = local.frontend_ip_configuration_name
116+
frontend_port_name = local.frontend_port_name
117+
protocol = "Http"
118+
}
119+
120+
request_routing_rule {
121+
name = local.request_routing_rule_name
122+
rule_type = "Basic"
123+
http_listener_name = local.listener_name
124+
backend_address_pool_name = local.backend_address_pool_name
125+
backend_http_settings_name = local.http_setting_name
126+
}
127+
128+
tags = var.tags
129+
130+
depends_on = [azurerm_virtual_network.test, azurerm_public_ip.test]
131+
}
132+
133+
```hcl
134+
resource "azurerm_role_assignment" "ra1" {
135+
scope = data.azurerm_subnet.kubesubnet.id
136+
role_definition_name = "Network Contributor"
137+
principal_id = var.aks_service_principal_object_id
138+
139+
depends_on = [azurerm_virtual_network.test]
140+
}
141+
142+
resource "azurerm_role_assignment" "ra2" {
143+
scope = azurerm_user_assigned_identity.testIdentity.id
144+
role_definition_name = "Managed Identity Operator"
145+
principal_id = var.aks_service_principal_object_id
146+
depends_on = [azurerm_user_assigned_identity.testIdentity]
147+
}
148+
149+
resource "azurerm_role_assignment" "ra3" {
150+
scope = azurerm_application_gateway.network.id
151+
role_definition_name = "Contributor"
152+
principal_id = azurerm_user_assigned_identity.testIdentity.principal_id
153+
depends_on = [azurerm_user_assigned_identity.testIdentity, azurerm_application_gateway.network]
154+
}
155+
156+
resource "azurerm_role_assignment" "ra4" {
157+
scope = data.azurerm_resource_group.rg.id
158+
role_definition_name = "Reader"
159+
principal_id = azurerm_user_assigned_identity.testIdentity.principal_id
160+
depends_on = [azurerm_user_assigned_identity.testIdentity, azurerm_application_gateway.network]
161+
}
162+
```
163+
164+
resource "azurerm_kubernetes_cluster" "k8s" {
165+
name = var.aks_name
166+
location = data.azurerm_resource_group.rg.location
167+
dns_prefix = var.aks_dns_prefix
168+
169+
resource_group_name = data.azurerm_resource_group.rg.name
170+
171+
linux_profile {
172+
admin_username = var.vm_user_name
173+
174+
ssh_key {
175+
key_data = file(var.public_ssh_key_path)
176+
}
177+
}
178+
179+
addon_profile {
180+
http_application_routing {
181+
enabled = false
182+
}
183+
}
184+
185+
default_node_pool {
186+
name = "agentpool"
187+
node_count = var.aks_agent_count
188+
vm_size = var.aks_agent_vm_size
189+
os_disk_size_gb = var.aks_agent_os_disk_size
190+
vnet_subnet_id = data.azurerm_subnet.kubesubnet.id
191+
}
192+
193+
service_principal {
194+
client_id = var.aks_service_principal_app_id
195+
client_secret = var.aks_service_principal_client_secret
196+
}
197+
198+
network_profile {
199+
network_plugin = "azure"
200+
dns_service_ip = var.aks_dns_service_ip
201+
docker_bridge_cidr = var.aks_docker_bridge_cidr
202+
service_cidr = var.aks_service_cidr
203+
}
204+
205+
role_based_access_control {
206+
enabled = var.aks_enable_rbac
207+
}
208+
209+
depends_on = [azurerm_virtual_network.test, azurerm_application_gateway.network]
210+
tags = var.tags
211+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
resource_group_name = "<Name of the Resource Group already created>"
2+
3+
location = "<Location of the Resource Group>"
4+
5+
aks_service_principal_app_id = "<Service Principal AppId>"
6+
7+
aks_service_principal_client_secret = "<Service Principal Client Secret>"
8+
9+
aks_service_principal_object_id = "<Service Principal Object Id>"

0 commit comments

Comments
 (0)