<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.christophchamp.com/index.php?action=history&amp;feed=atom&amp;title=Pulumi</id>
		<title>Pulumi - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.christophchamp.com/index.php?action=history&amp;feed=atom&amp;title=Pulumi"/>
		<link rel="alternate" type="text/html" href="http://wiki.christophchamp.com/index.php?title=Pulumi&amp;action=history"/>
		<updated>2026-04-30T10:55:33Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>http://wiki.christophchamp.com/index.php?title=Pulumi&amp;diff=8109&amp;oldid=prev</id>
		<title>Christoph: Created page with &quot;'''Pulumi''' is an Infrastructure as Code tool that is similar to Terraform, except that it uses Python instead of HCL.  ==Install Pulumi==  See [https://www.pulumi.co...&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.christophchamp.com/index.php?title=Pulumi&amp;diff=8109&amp;oldid=prev"/>
				<updated>2021-10-01T19:11:31Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Pulumi&amp;#039;&amp;#039;&amp;#039; is an Infrastructure as Code tool that is similar to &lt;a href=&quot;/index.php?title=Terraform&quot; title=&quot;Terraform&quot;&gt;Terraform&lt;/a&gt;, except that it uses &lt;a href=&quot;/index.php?title=Python&quot; title=&quot;Python&quot;&gt;Python&lt;/a&gt; instead of HCL.  ==Install Pulumi==  See [https://www.pulumi.co...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''Pulumi''' is an Infrastructure as Code tool that is similar to [[Terraform]], except that it uses [[Python]] instead of HCL.&lt;br /&gt;
&lt;br /&gt;
==Install Pulumi==&lt;br /&gt;
&lt;br /&gt;
See [https://www.pulumi.com/docs/get-started/install/ here] for details.&lt;br /&gt;
&lt;br /&gt;
* Install the Pulumi binaries:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ curl -fsSL https://get.pulumi.com | sh&lt;br /&gt;
$ pulumi version&lt;br /&gt;
v3.2.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==AWS==&lt;br /&gt;
&lt;br /&gt;
===Basic example===&lt;br /&gt;
&lt;br /&gt;
* Set up environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ export AWS_ACCESS_KEY_ID=&amp;lt;change me&amp;gt;&lt;br /&gt;
$ export AWS_SECRET_ACCESS_KEY=&amp;quot;&amp;lt;change me&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# NOTE: The following is not needed:&lt;br /&gt;
#$ cat requirements.txt&lt;br /&gt;
#$ sudo -H python3 -m pip install -r requirements.txt --ignore-installed PyYAML&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Create a new Pulumi Stack&lt;br /&gt;
&lt;br /&gt;
* Create a new Pulumi Stack:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ pulumi new aws-python&lt;br /&gt;
This command will walk you through creating a new Pulumi project.&lt;br /&gt;
&lt;br /&gt;
Enter a value or leave blank to accept the (default), and press &amp;lt;ENTER&amp;gt;.&lt;br /&gt;
Press ^C at any time to quit.&lt;br /&gt;
&lt;br /&gt;
project name: (demo) &lt;br /&gt;
project description: (A minimal AWS Python Pulumi program) &lt;br /&gt;
Created project 'demo'&lt;br /&gt;
&lt;br /&gt;
Please enter your desired stack name.&lt;br /&gt;
To create a stack in an organization, use the format &amp;lt;org-name&amp;gt;/&amp;lt;stack-name&amp;gt; (e.g. `acmecorp/dev`).&lt;br /&gt;
stack name: (dev) &lt;br /&gt;
Created stack 'dev'&lt;br /&gt;
&lt;br /&gt;
aws:region: The AWS region to deploy into: (us-east-1) us-west-2&lt;br /&gt;
Saved config&lt;br /&gt;
&lt;br /&gt;
Creating virtual environment...&lt;br /&gt;
Finished creating virtual environment&lt;br /&gt;
Updating pip, setuptools, and wheel in virtual environment...&lt;br /&gt;
&lt;br /&gt;
Finished installing dependencies&lt;br /&gt;
Your new project is ready to go! &lt;br /&gt;
&lt;br /&gt;
To perform an initial deployment, run 'pulumi up'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run the code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ pulumi up&lt;br /&gt;
&lt;br /&gt;
View Live: https://app.pulumi.com/xtof/demo/dev/updates/1&lt;br /&gt;
&lt;br /&gt;
     Type                 Name                Status      Info&lt;br /&gt;
 +   pulumi:pulumi:Stack  demo-dev            created     114 messages&lt;br /&gt;
 +   └─ aws:s3:Bucket     xtof-pulumi-bucket  created&lt;br /&gt;
&lt;br /&gt;
Outputs:&lt;br /&gt;
    bucket_name: &amp;quot;xtof-pulumi-bucket-aaaaaaa&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Resources:&lt;br /&gt;
    + 2 created&lt;br /&gt;
&lt;br /&gt;
Duration: 1m11s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
real	1m34.351s&lt;br /&gt;
user	0m0.723s&lt;br /&gt;
sys	0m0.294s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Print the name of the bucket we just created:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ pulumi stack output bucket_name&lt;br /&gt;
xtof-pulumi-bucket-aaaaaaa&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Check that the bucket exists in AWS:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ aws s3 ls $(pulumi stack output bucket_name)&lt;br /&gt;
2021-05-11 15:24:49         70 index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run the code again:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ pulumi up&lt;br /&gt;
&lt;br /&gt;
Do you want to perform this update? details&lt;br /&gt;
  pulumi:pulumi:Stack: (same)&lt;br /&gt;
    [urn=urn:pulumi:dev::demo::pulumi:pulumi:Stack::demo-dev]&lt;br /&gt;
    ~ aws:s3/bucket:Bucket: (update)&lt;br /&gt;
        [id=xtof-pulumi-bucket-aaaaaaa]&lt;br /&gt;
        [urn=urn:pulumi:dev::demo::aws:s3/bucket:Bucket::xtof-pulumi-bucket]&lt;br /&gt;
        [provider=urn:pulumi:dev::demo::pulumi:providers:aws::default_4_3_0::aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee]&lt;br /&gt;
      + website: {&lt;br /&gt;
          + indexDocument: &amp;quot;index.html&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    --outputs:--&lt;br /&gt;
  + bucket_endpoint: output&amp;lt;string&amp;gt;&lt;br /&gt;
    ~ aws:s3/bucketObject:BucketObject: (update)&lt;br /&gt;
        [id=index.html]&lt;br /&gt;
        [urn=urn:pulumi:dev::demo::aws:s3/bucketObject:BucketObject::index.html]&lt;br /&gt;
        [provider=urn:pulumi:dev::demo::pulumi:providers:aws::default_4_3_0::aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee]&lt;br /&gt;
      ~ acl        : &amp;quot;private&amp;quot; =&amp;gt; &amp;quot;public-read&amp;quot;&lt;br /&gt;
      ~ contentType: &amp;quot;binary/octet-stream&amp;quot; =&amp;gt; &amp;quot;text/html&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Do you want to perform this update? yes&lt;br /&gt;
Updating (dev)&lt;br /&gt;
&lt;br /&gt;
View Live: https://app.pulumi.com/xtof/demo/dev/updates/3&lt;br /&gt;
&lt;br /&gt;
     Type                    Name                Status      Info&lt;br /&gt;
     pulumi:pulumi:Stack     demo-dev                        114 messages&lt;br /&gt;
 ~   ├─ aws:s3:Bucket        xtof-pulumi-bucket  updated     [diff: +website]&lt;br /&gt;
 ~   └─ aws:s3:BucketObject  index.html          updated     [diff: ~acl,contentType]&lt;br /&gt;
&lt;br /&gt;
Outputs:&lt;br /&gt;
  + bucket_endpoint: &amp;quot;http://xtof-pulumi-bucket-aaaaaaa.s3-website-us-west-2.amazonaws.com&amp;quot;&lt;br /&gt;
    bucket_name    : &amp;quot;xtof-pulumi-bucket-aaaaaaa&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Resources:&lt;br /&gt;
    ~ 2 updated&lt;br /&gt;
    1 unchanged&lt;br /&gt;
&lt;br /&gt;
Duration: 8s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Check the API endpoint:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ curl http://xtof-pulumi-bucket-aaaaaaa.s3-website-us-west-2.amazonaws.com&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Hello, Pulumi!&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Azure==&lt;br /&gt;
&lt;br /&gt;
; The following Pulumi code will create an Azure Kubernetes Service (AKS) cluster in Azure&lt;br /&gt;
&lt;br /&gt;
* Create a configuration file to store all variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat &amp;lt;&amp;lt; EOF &amp;gt; Pulumi.dev.yaml&lt;br /&gt;
config:&lt;br /&gt;
  aks:prefix_name: xtof-aks-dev&lt;br /&gt;
  aks:subscription_id: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee&lt;br /&gt;
  aks:clientId: ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj&lt;br /&gt;
  aks:clientSecret:&lt;br /&gt;
    secure: AAA...&lt;br /&gt;
  aks:location: westus2&lt;br /&gt;
  aks:kubernetes_version: 1.19.11&lt;br /&gt;
  aks:aks_admin_username: k8sadmin&lt;br /&gt;
  aks:system_pool_profile:&lt;br /&gt;
    name: agentpool&lt;br /&gt;
    count: 2&lt;br /&gt;
    max_pods: 110&lt;br /&gt;
    mode: System&lt;br /&gt;
    node_labels: {}&lt;br /&gt;
    os_disk_size_gb: 200&lt;br /&gt;
    os_type: Linux&lt;br /&gt;
    type: VirtualMachineScaleSets&lt;br /&gt;
    vm_size: Standard_DS3_v2&lt;br /&gt;
  aks:user_pool_profile:&lt;br /&gt;
    name: standardpool&lt;br /&gt;
    count: 15&lt;br /&gt;
    max_pods: 110&lt;br /&gt;
    mode: User&lt;br /&gt;
    node_labels: {}&lt;br /&gt;
    os_disk_size_gb: 200&lt;br /&gt;
    os_disk_type: Managed&lt;br /&gt;
    os_type: Linux&lt;br /&gt;
    type: VirtualMachineScaleSets&lt;br /&gt;
    vm_size: Standard_D3_v2 # https://docs.microsoft.com/en-us/azure/virtual-machines/dv2-dsv2-series&lt;br /&gt;
  aks:aks_network_profile:&lt;br /&gt;
    pod_cidr: 10.231.0.0/18&lt;br /&gt;
    service_cidr: 10.231.64.0/19&lt;br /&gt;
    dns_service_ip: 10.231.64.10&lt;br /&gt;
    docker_bridge_cidr: 172.17.0.1/16&lt;br /&gt;
  aks:subnet_id: &amp;quot;/subscriptions/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/resourceGroups/xtof-aks-dev-rg/providers/Microsoft.Network/virtualNetworks/xtof-aks-dev-vnet/subnets/xtof-aks-dev-subnet&amp;quot;&lt;br /&gt;
  aks:private_endpoint_name: &amp;quot;dev.xtof.privatelink.uswest2.azmk8s.io&amp;quot;&lt;br /&gt;
  azure-native:location: westus2&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Create a &amp;quot;tags&amp;quot; module:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat &amp;lt;&amp;lt; EOF &amp;gt; tags.py&lt;br /&gt;
# NOTE: Service returned an error. Status=400 Code=&amp;quot;InvalidTagNameCharacters&amp;quot;&lt;br /&gt;
# Message=&amp;quot;The tag names 'kubernetes.io/cluster/test' have reserved characters&lt;br /&gt;
# '&amp;lt;,&amp;gt;,%,&amp;amp;,\\,?,/' or control characters. These characters are only allowed for&lt;br /&gt;
# tags that start with the prefix 'hidden, link'.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
standard_tags = {&lt;br /&gt;
    &amp;quot;BusinessValue&amp;quot;: &amp;quot;R&amp;amp;D&amp;quot;,&lt;br /&gt;
    &amp;quot;CostCenter&amp;quot;: &amp;quot;Foobar&amp;quot;,&lt;br /&gt;
    &amp;quot;Customer&amp;quot;: &amp;quot;MySelf&amp;quot;,&lt;br /&gt;
    &amp;quot;Environment&amp;quot;: &amp;quot;dev&amp;quot;,&lt;br /&gt;
    &amp;quot;Owner&amp;quot;: &amp;quot;xtof&amp;quot;,&lt;br /&gt;
    &amp;quot;CreatedBy&amp;quot;: &amp;quot;Pulumi&amp;quot;,&lt;br /&gt;
    &amp;quot;Created&amp;quot;: &amp;quot;2021-05-13&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Create an Azure Resource Group module:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat &amp;lt;&amp;lt; EOF &amp;gt; resource_group.py&lt;br /&gt;
from pulumi import Config&lt;br /&gt;
from pulumi_azure_native import resources&lt;br /&gt;
import tags&lt;br /&gt;
&lt;br /&gt;
config = Config()&lt;br /&gt;
location = config.get(&amp;quot;location&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# SEE: https://www.pulumi.com/docs/reference/pkg/azure-native/resources/resourcegroup/&lt;br /&gt;
def create_resource(rg_name):&lt;br /&gt;
    resource_group = resources.ResourceGroup(&lt;br /&gt;
        rg_name,&lt;br /&gt;
        resource_group_name=rg_name,&lt;br /&gt;
        location=location,&lt;br /&gt;
        tags={&lt;br /&gt;
            'CostTech': 'aks',&lt;br /&gt;
            **tags.standard_tags&lt;br /&gt;
        }&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    return resource_group&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Create the &amp;quot;main&amp;quot; module:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat &amp;lt;&amp;lt; EOF &amp;gt; __main__.py&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;An Azure RM Python Pulumi program&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
import base64&lt;br /&gt;
import pulumi&lt;br /&gt;
from pulumi_azure_native import resources, containerservice, storage&lt;br /&gt;
import pulumi_azure_native as azure_native&lt;br /&gt;
import pulumi_azuread as azuread&lt;br /&gt;
import pulumi_random as random&lt;br /&gt;
import pulumi_tls as tls&lt;br /&gt;
import tags&lt;br /&gt;
import resource_group&lt;br /&gt;
&lt;br /&gt;
# Set variables&lt;br /&gt;
config = pulumi.Config()&lt;br /&gt;
prefix_name = config.get(&amp;quot;prefix_name&amp;quot;)&lt;br /&gt;
subscription_id = config.get(&amp;quot;subscription_id&amp;quot;)&lt;br /&gt;
location = config.get(&amp;quot;location&amp;quot;)&lt;br /&gt;
subnet_id = config.get(&amp;quot;subnet_id&amp;quot;)&lt;br /&gt;
private_endpoint_name = config.get(&amp;quot;private_endpoint_name&amp;quot;)&lt;br /&gt;
system_pool_profile = config.require_object(&amp;quot;system_pool_profile&amp;quot;)&lt;br /&gt;
user_pool_profile = config.require_object(&amp;quot;user_pool_profile&amp;quot;)&lt;br /&gt;
aks_network_profile = config.require_object(&amp;quot;aks_network_profile&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
resource_group_obj = resource_group.create_resource(prefix_name + &amp;quot;-rg&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Generate an SSH key&lt;br /&gt;
ssh_key = tls.PrivateKey(&amp;quot;ssh-key&amp;quot;, algorithm=&amp;quot;RSA&amp;quot;, rsa_bits=4096)&lt;br /&gt;
&lt;br /&gt;
managed_cluster_name = config.get(&amp;quot;managedClusterName&amp;quot;)&lt;br /&gt;
if managed_cluster_name is None:&lt;br /&gt;
    managed_cluster_name = prefix_name&lt;br /&gt;
&lt;br /&gt;
# Create AKS cluster&lt;br /&gt;
# SEE: https://www.pulumi.com/docs/reference/pkg/azure-native/containerservice/managedcluster/&lt;br /&gt;
# TODO: https://www.pulumi.com/docs/reference/pkg/azure-native/containerservice/managedcluster/#createupdate-aad-managed-cluster-with-enableazurerbac&lt;br /&gt;
# TODO: https://www.pulumi.com/docs/reference/pkg/azure-native/network/azurefirewall/&lt;br /&gt;
# TODO: https://www.pulumi.com/docs/reference/pkg/azure-native/containerservice/managedcluster/#managedclusteraadprofile&lt;br /&gt;
managed_cluster = containerservice.ManagedCluster(&lt;br /&gt;
    managed_cluster_name,&lt;br /&gt;
    resource_group_name=resource_group_obj.name,&lt;br /&gt;
    addon_profiles={},&lt;br /&gt;
    agent_pool_profiles=[containerservice.ManagedClusterAgentPoolProfileArgs(&lt;br /&gt;
        enable_node_public_ip=False,&lt;br /&gt;
        name=system_pool_profile.get(&amp;quot;name&amp;quot;),&lt;br /&gt;
        count=system_pool_profile.get(&amp;quot;count&amp;quot;),&lt;br /&gt;
        max_pods=system_pool_profile.get(&amp;quot;max_pods&amp;quot;),&lt;br /&gt;
        mode=system_pool_profile.get(&amp;quot;mode&amp;quot;),&lt;br /&gt;
        node_labels=system_pool_profile.get(&amp;quot;node_labels&amp;quot;),&lt;br /&gt;
        os_disk_size_gb=system_pool_profile.get(&amp;quot;os_disk_size_gb&amp;quot;),&lt;br /&gt;
        os_type=system_pool_profile.get(&amp;quot;os_type&amp;quot;),&lt;br /&gt;
        type=system_pool_profile.get(&amp;quot;type&amp;quot;),&lt;br /&gt;
        vm_size=system_pool_profile.get(&amp;quot;vm_size&amp;quot;),&lt;br /&gt;
        vnet_subnet_id=config.get(&amp;quot;subnet_id&amp;quot;),&lt;br /&gt;
    )],&lt;br /&gt;
    api_server_access_profile=containerservice.ManagedClusterAPIServerAccessProfileArgs(&lt;br /&gt;
        enable_private_cluster=True,&lt;br /&gt;
    ),&lt;br /&gt;
    enable_rbac=True,&lt;br /&gt;
    kubernetes_version=config.get(&amp;quot;kubernetes_version&amp;quot;),&lt;br /&gt;
    linux_profile={&lt;br /&gt;
        &amp;quot;admin_username&amp;quot;: config.get(&amp;quot;aks_admin_username&amp;quot;),&lt;br /&gt;
        &amp;quot;ssh&amp;quot;: {&lt;br /&gt;
            &amp;quot;public_keys&amp;quot;: [{&lt;br /&gt;
                &amp;quot;key_data&amp;quot;: ssh_key.public_key_openssh,&lt;br /&gt;
            }],&lt;br /&gt;
        },&lt;br /&gt;
    },&lt;br /&gt;
    identity=containerservice.ManagedClusterIdentityArgs(&lt;br /&gt;
        type=containerservice.ResourceIdentityType.SYSTEM_ASSIGNED),&lt;br /&gt;
    dns_prefix=resource_group_obj.name,&lt;br /&gt;
    network_profile=containerservice.ContainerServiceNetworkProfileArgs(&lt;br /&gt;
        network_plugin=&amp;quot;azure&amp;quot;,&lt;br /&gt;
        pod_cidr=aks_network_profile.get(&amp;quot;pod_cidr&amp;quot;),&lt;br /&gt;
        service_cidr=aks_network_profile.get(&amp;quot;service_cidr&amp;quot;),&lt;br /&gt;
        docker_bridge_cidr=aks_network_profile.get(&amp;quot;docker_bridge_cidr&amp;quot;),&lt;br /&gt;
        dns_service_ip=aks_network_profile.get(&amp;quot;dns_service_ip&amp;quot;),&lt;br /&gt;
        outbound_type=&amp;quot;userDefinedRouting&amp;quot;,&lt;br /&gt;
    ),&lt;br /&gt;
    node_resource_group=f&amp;quot;MC_{managed_cluster_name}_westus&amp;quot;,&lt;br /&gt;
    service_principal_profile={&lt;br /&gt;
        &amp;quot;client_id&amp;quot;: config.get(&amp;quot;clientId&amp;quot;),&lt;br /&gt;
        &amp;quot;secret&amp;quot;: config.get(&amp;quot;clientSecret&amp;quot;)&lt;br /&gt;
    },&lt;br /&gt;
    tags={&lt;br /&gt;
        'CostTech': 'aks',&lt;br /&gt;
        **tags.standard_tags&lt;br /&gt;
    }&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
# SEE: https://www.pulumi.com/docs/reference/pkg/azure-native/containerservice/agentpool/#agentpoolmode&lt;br /&gt;
user_agent_pool = containerservice.AgentPool(&lt;br /&gt;
    &amp;quot;userPool&amp;quot;,&lt;br /&gt;
    agent_pool_name=user_pool_profile.get(&amp;quot;name&amp;quot;),&lt;br /&gt;
    count=user_pool_profile.get(&amp;quot;count&amp;quot;),&lt;br /&gt;
    max_pods=user_pool_profile.get(&amp;quot;max_pods&amp;quot;),&lt;br /&gt;
    mode=user_pool_profile.get(&amp;quot;mode&amp;quot;),&lt;br /&gt;
    node_labels=user_pool_profile.get(&amp;quot;node_labels&amp;quot;),&lt;br /&gt;
    enable_node_public_ip=False,&lt;br /&gt;
    # enable_encryption_at_host=True,&lt;br /&gt;
    os_type=user_pool_profile.get(&amp;quot;os_type&amp;quot;),&lt;br /&gt;
    os_disk_size_gb=user_pool_profile.get(&amp;quot;os_disk_size_gb&amp;quot;),&lt;br /&gt;
    os_disk_type=user_pool_profile.get(&amp;quot;os_disk_type&amp;quot;),&lt;br /&gt;
    resource_group_name=prefix_name + &amp;quot;-rg&amp;quot;,&lt;br /&gt;
    resource_name_=&amp;quot;primerai-aks-dev-aks7f632331&amp;quot;,&lt;br /&gt;
    type=user_pool_profile.get(&amp;quot;type&amp;quot;),&lt;br /&gt;
    vm_size=user_pool_profile.get(&amp;quot;vm_size&amp;quot;),&lt;br /&gt;
    vnet_subnet_id=config.get(&amp;quot;subnet_id&amp;quot;)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
# SEE: https://www.pulumi.com/docs/reference/pkg/azure-native/storage/storageaccount/#storageaccountcreate&lt;br /&gt;
minio_account = storage.StorageAccount(&lt;br /&gt;
    &amp;quot;minio&amp;quot;,&lt;br /&gt;
    account_name=&amp;quot;aksminiorandomname&amp;quot;,&lt;br /&gt;
    resource_group_name=f&amp;quot;MC_{managed_cluster_name}_westus&amp;quot;,&lt;br /&gt;
    location=location,&lt;br /&gt;
    # kind=&amp;quot;StorageV2&amp;quot;,&lt;br /&gt;
    kind=&amp;quot;Storage&amp;quot;,&lt;br /&gt;
    minimum_tls_version=&amp;quot;TLS1_2&amp;quot;,&lt;br /&gt;
    sku=storage.SkuArgs(&lt;br /&gt;
        name=&amp;quot;Standard_LRS&amp;quot;,&lt;br /&gt;
    ),&lt;br /&gt;
    network_rule_set=storage.NetworkRuleSetArgs(&lt;br /&gt;
        bypass=&amp;quot;AzureServices&amp;quot;,&lt;br /&gt;
        default_action=&amp;quot;Deny&amp;quot;,&lt;br /&gt;
        ip_rules=[],&lt;br /&gt;
        virtual_network_rules=[storage.VirtualNetworkRuleArgs(&lt;br /&gt;
            virtual_network_resource_id=config.get(&amp;quot;subnet_id&amp;quot;),&lt;br /&gt;
        )],&lt;br /&gt;
    ),&lt;br /&gt;
    tags={&lt;br /&gt;
        'CostTech': 'aks',&lt;br /&gt;
        **tags.standard_tags&lt;br /&gt;
    }&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
creds = pulumi.Output.all(resource_group_obj.name, managed_cluster.name).apply(&lt;br /&gt;
    lambda args:&lt;br /&gt;
    containerservice.list_managed_cluster_user_credentials(&lt;br /&gt;
        resource_group_name=args[0],&lt;br /&gt;
        resource_name=args[1])&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
output_private_ssh_key = pulumi.Output.all(ssh_key.private_key_pem)&lt;br /&gt;
&lt;br /&gt;
# Export kubeconfig&lt;br /&gt;
encoded = creds.kubeconfigs[0].value&lt;br /&gt;
kubeconfig = encoded.apply(&lt;br /&gt;
    lambda enc: base64.b64decode(enc).decode())&lt;br /&gt;
pulumi.export(&amp;quot;kubeconfig&amp;quot;, kubeconfig)&lt;br /&gt;
pulumi.export(&amp;quot;private_ssh_key&amp;quot;, output_private_ssh_key)&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Terraform]]&lt;br /&gt;
* [[Ansible]]&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [https://www.pulumi.com/ Official website]&lt;br /&gt;
* [https://www.pulumi.com/docs/reference/pkg/ Pulumi API Reference]&lt;br /&gt;
&lt;br /&gt;
[[Category:DevOps]]&lt;/div&gt;</summary>
		<author><name>Christoph</name></author>	</entry>

	</feed>