From 6f26d144bc7a14797447e9bd54186a7e4c49f2ec Mon Sep 17 00:00:00 2001 From: Ian Wahbe Date: Wed, 4 May 2022 08:59:17 -0700 Subject: [PATCH 1/2] Add YAML examples --- aws-yaml-eks/Pulumi.yaml | 28 +++++ aws-yaml-eks/README.md | 49 +++++++++ aws-yaml-static-website/Pulumi.yaml | 44 ++++++++ aws-yaml-static-website/README.md | 99 +++++++++++++++++ aws-yaml-static-website/www/favicon.png | Bin 0 -> 13731 bytes aws-yaml-static-website/www/index.html | 15 +++ azure-yaml-app-service/Pulumi.yaml | 103 ++++++++++++++++++ azure-yaml-app-service/README.md | 89 +++++++++++++++ azure-yaml-app-service/www/404.html | 14 +++ azure-yaml-app-service/www/favicon.png | Bin 0 -> 13731 bytes azure-yaml-app-service/www/index.html | 15 +++ azure-yaml-container-apps/Pulumi.yaml | 93 ++++++++++++++++ azure-yaml-container-apps/README.md | 49 +++++++++ .../node-app/.dockerignore | 2 + azure-yaml-container-apps/node-app/Dockerfile | 6 + .../node-app/app/index.html | 6 + .../node-app/app/index.js | 13 +++ azure-yaml-static-website/Pulumi.yaml | 51 +++++++++ azure-yaml-static-website/README.md | 70 ++++++++++++ azure-yaml-static-website/www/404.html | 14 +++ azure-yaml-static-website/www/favicon.png | Bin 0 -> 13731 bytes azure-yaml-static-website/www/index.html | 15 +++ kubernetes-yaml/Pulumi.yaml | 54 +++++++++ random-yaml/Pulumi.yaml | 11 ++ random-yaml/README.md | 49 +++++++++ webserver-yaml-json/Main.json | 61 +++++++++++ webserver-yaml-json/Pulumi.yaml | 3 + webserver-yaml/Pulumi.yaml | 50 +++++++++ 28 files changed, 1003 insertions(+) create mode 100644 aws-yaml-eks/Pulumi.yaml create mode 100644 aws-yaml-eks/README.md create mode 100644 aws-yaml-static-website/Pulumi.yaml create mode 100644 aws-yaml-static-website/README.md create mode 100644 aws-yaml-static-website/www/favicon.png create mode 100644 aws-yaml-static-website/www/index.html create mode 100644 azure-yaml-app-service/Pulumi.yaml create mode 100644 azure-yaml-app-service/README.md create mode 100644 azure-yaml-app-service/www/404.html create mode 100644 azure-yaml-app-service/www/favicon.png create mode 100644 azure-yaml-app-service/www/index.html create mode 100644 azure-yaml-container-apps/Pulumi.yaml create mode 100644 azure-yaml-container-apps/README.md create mode 100644 azure-yaml-container-apps/node-app/.dockerignore create mode 100644 azure-yaml-container-apps/node-app/Dockerfile create mode 100644 azure-yaml-container-apps/node-app/app/index.html create mode 100644 azure-yaml-container-apps/node-app/app/index.js create mode 100644 azure-yaml-static-website/Pulumi.yaml create mode 100644 azure-yaml-static-website/README.md create mode 100644 azure-yaml-static-website/www/404.html create mode 100644 azure-yaml-static-website/www/favicon.png create mode 100644 azure-yaml-static-website/www/index.html create mode 100644 kubernetes-yaml/Pulumi.yaml create mode 100644 random-yaml/Pulumi.yaml create mode 100644 random-yaml/README.md create mode 100644 webserver-yaml-json/Main.json create mode 100755 webserver-yaml-json/Pulumi.yaml create mode 100755 webserver-yaml/Pulumi.yaml diff --git a/aws-yaml-eks/Pulumi.yaml b/aws-yaml-eks/Pulumi.yaml new file mode 100644 index 000000000..aa87f9b15 --- /dev/null +++ b/aws-yaml-eks/Pulumi.yaml @@ -0,0 +1,28 @@ +name: aws-eks +runtime: yaml +description: An EKS cluster +variables: + vpcId: + Fn::Invoke: + Function: aws:ec2:getVpc + Arguments: + default: true + Return: id + subnetIds: + Fn::Invoke: + Function: aws:ec2:getSubnetIds + Arguments: + vpcId: ${vpcId} + Return: ids +resources: + cluster: + type: eks:Cluster + properties: + vpcId: ${vpcId} + subnetIds: ${subnetIds} + instanceType: "t2.medium" + desiredCapacity: 2 + minSize: 1 + maxSize: 2 +outputs: + kubeconfig: ${cluster.kubeconfig} diff --git a/aws-yaml-eks/README.md b/aws-yaml-eks/README.md new file mode 100644 index 000000000..b211f6f12 --- /dev/null +++ b/aws-yaml-eks/README.md @@ -0,0 +1,49 @@ + +# Amazon EKS Cluster + +This example deploys an EKS Kubernetes cluster inside the default AWS VPC. + +## Deploying the App + +To deploy your infrastructure, follow the below steps. + +## Prerequisites + +1. [Install Pulumi](https://www.pulumi.com/docs/get-started/install/) +1. [Configure Pulumi for AWS](https://www.pulumi.com/docs/intro/cloud-providers/aws/setup/) + +## Deploying and running the program + +1. Create a new stack: + + ``` + $ pulumi stack init dev + ``` + +1. Set the AWS region: + + ``` + $ pulumi config set aws:region us-east-2 + ``` + +1. Run `pulumi up` to preview and deploy changes: + + ``` + $ pulumi up + Previewing changes: + ... + + Performing changes: + ... + Resources: + + 28 created + + Duration: 10m0s + ``` + +1. Check the deployed kubeconfig: + + ``` + $ pulumi stack output kubeconfig + {"apiVersion":"v1","clusters":[{"cluster":{"certificate-authority-data":"LS0tLS1CRUdJTiBDR... + ``` diff --git a/aws-yaml-static-website/Pulumi.yaml b/aws-yaml-static-website/Pulumi.yaml new file mode 100644 index 000000000..00f832d11 --- /dev/null +++ b/aws-yaml-static-website/Pulumi.yaml @@ -0,0 +1,44 @@ +name: aws-native-static-website +runtime: yaml +description: A static website hosted on AWS S3 +resources: + site-bucket: + type: aws-native:s3:Bucket + properties: + websiteConfiguration: + indexDocument: index.html + index.html: + type: aws:s3:BucketObject + properties: + bucket: ${site-bucket} + source: + Fn::FileAsset: ./www/index.html + acl: public-read + contentType: text/html + favicon.png: + type: aws:s3:BucketObject + properties: + bucket: ${site-bucket} + source: + Fn::FileAsset: ./www/favicon.png + acl: public-read + contentType: image/png + bucketPolicy: + type: aws:s3:BucketPolicy + properties: + bucket: ${site-bucket} + policy: | + { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": "*", + "Action": ["s3:GetObject"], + "Resource": ["${site-bucket.arn}/*"] + } + ] + } +outputs: + bucketName: ${site-bucket.bucketName} + websiteUrl: ${site-bucket.websiteURL} diff --git a/aws-yaml-static-website/README.md b/aws-yaml-static-website/README.md new file mode 100644 index 000000000..cf88a305b --- /dev/null +++ b/aws-yaml-static-website/README.md @@ -0,0 +1,99 @@ +[![Deploy](https://get.pulumi.com/new/button.svg)](https://app.pulumi.com/new?template=https://github.com/pulumi/examples/blob/master/aws-native-ts-s3-folder/README.md) + +# Host a Static Website on Amazon S3 with the AWS Native Provider + +A static website that uses [S3's website support](https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html). +For a detailed walkthrough of this example, see the tutorial [Static Website on AWS S3](https://www.pulumi.com/docs/tutorials/aws/s3-website/). + +Note: Some resources are not yet supported by the Native AWS provider, so we are using both the Native +and Classic provider in this example. The resources will be updated to use native resources as they are +available in AWS's Cloud Control API. + +## Deploying and running the program + +Note: some values in this example will be different from run to run. These values are indicated +with `***`. + +1. Install required plugins: + + ```bash + $ pulumi plugin install resource aws 4.37.3 + $ pulumi plugin install resource aws-native 0.11.0 + ``` + +1. Create a new stack: + + ```bash + $ pulumi stack init dev + ``` + +1. Set the AWS region: + + Either using an environment variable + ```bash + $ export AWS_REGION=us-west-2 + ``` + + Or with the stack config + ```bash + $ pulumi config set aws:region us-west-2 + $ pulumi config set aws-native:region us-west-2 + ``` + +1. Run `pulumi up` to preview and deploy changes. After the preview is shown you will be + prompted if you want to continue or not. + + ```bash + $ pulumi up + Previewing update (dev) + ... + + Updating (dev) + + View Live: https://app.pulumi.com/***/aws-native-ts-s3-folder/dev/updates/1 + + Type Name Status + + pulumi:pulumi:Stack aws-native-ts-s3-folder-dev created + + ├─ aws-native:s3:Bucket s3-website-bucket created + + ├─ aws:s3:BucketPolicy bucketPolicy created + + ├─ aws:s3:BucketObject index.html created + + └─ aws:s3:BucketObject favicon.png created + + Outputs: + bucketName: "***" + websiteUrl: "http://***.s3-website-us-west-2.amazonaws.com" + + Resources: + + 5 created + + Duration: *** + ``` + +1. To see the resources that were created, run `pulumi stack output`: + + ```bash + $ pulumi stack output + Current stack outputs (2): + OUTPUT VALUE + bucketName *** + websiteUrl http://***.s3-website-us-west-2.amazonaws.com + ``` + +1. To see that the S3 objects exist, you can either use the AWS Console or the AWS CLI: + + ```bash + $ aws s3 ls $(pulumi stack output bucketName) + 2021-09-30 15:27:58 13731 favicon.png + 2021-09-30 15:27:58 198 index.html + ``` + +1. Open the site URL in a browser to see both the rendered HTML and the favicon: + + ```bash + $ pulumi stack output websiteUrl + ***.s3-website-us-west-2.amazonaws.com + ``` + + ![Hello S3 example](https://user-images.githubusercontent.com/274700/116912066-9384e300-abfc-11eb-8130-dbcff512a9de.png) + +1. To clean up resources, run `pulumi destroy` and answer the confirmation question at the prompt. diff --git a/aws-yaml-static-website/www/favicon.png b/aws-yaml-static-website/www/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..ad4baeb6fd3df3a99e06099e7a94b2715eaad419 GIT binary patch literal 13731 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 literal 0 HcmV?d00001 diff --git a/aws-yaml-static-website/www/index.html b/aws-yaml-static-website/www/index.html new file mode 100644 index 000000000..80793df17 --- /dev/null +++ b/aws-yaml-static-website/www/index.html @@ -0,0 +1,15 @@ + + + + + Hello, Pulumi! + + + + +

Hello, S3!

+

Made with ❤️ with Pulumi

+

This file is served from Amazon S3.

+ + + diff --git a/azure-yaml-app-service/Pulumi.yaml b/azure-yaml-app-service/Pulumi.yaml new file mode 100644 index 000000000..a55b4d75c --- /dev/null +++ b/azure-yaml-app-service/Pulumi.yaml @@ -0,0 +1,103 @@ +name: azure-app-service +runtime: yaml +description: A static website hosted on AWS S3 +configuration: + sqlAdmin: + type: String + default: pulumi +variables: + blobAccessToken: + Fn::Invoke: + Function: azure-native:storage:listStorageAccountServiceSAS + Arguments: + accountName: ${sa.name} + protocols: https + sharedAccessStartTime: '2022-01-01' + sharedAccessExpiryTime: '2030-01-01' + resource: c + resourceGroupName: ${appservicegroup.name} + permissions: r + canonicalizedResource: /blob/${sa.name}/${container.name} + contentType: application/json + cacheControl: max-age=5 + contentDisposition: inline + contentEncoding: deflate + Return: serviceSasToken +resources: + appservicegroup: + type: azure-native:resources:ResourceGroup + sa: + type: azure-native:storage:StorageAccount + properties: + resourceGroupName: ${appservicegroup.name} + kind: 'StorageV2' + sku: { name: 'Standard_LRS' } + appserviceplan: + type: azure-native:web:AppServicePlan + properties: + resourceGroupName: ${appservicegroup.name} + kind: App + sku: + name: B1 + tier: Basic + container: + type: azure-native:storage:BlobContainer + properties: + resourceGroupName: ${appservicegroup.name} + accountName: ${sa.name} + publicAccess: None + blob: + type: azure-native:storage:Blob + properties: + resourceGroupName: ${appservicegroup.name} + accountName: ${sa.name} + containerName: ${container.name} + type: 'Block' + source: + Fn::FileArchive: ./www + appInsights: + type: azure-native:insights:Component + properties: + resourceGroupName: ${appservicegroup.name} + applicationType: web + kind: web + sqlPassword: + type: random:RandomPassword + properties: + length: 16 + special: true + sqlServer: + type: azure-native:sql:Server + properties: + resourceGroupName: ${appservicegroup.name} + administratorLogin: ${sqlAdmin} + administratorLoginPassword: ${sqlPassword.result} + version: '12.0' + db: + type: azure-native:sql:Database + properties: + resourceGroupName: ${appservicegroup.name} + serverName: ${sqlServer.name} + sku: { name: 'S0' } + + app: + type: azure-native:web:WebApp + properties: + resourceGroupName: ${appservicegroup.name} + serverFarmId: ${appserviceplan} + siteConfig: + appSettings: + - name: WEBSITE_RUN_FROM_PACKAGE + value: https://${sa.name}.blob.core.windows.net/${container.name}/${blob.name}?${blobAccessToken} + - name: APPINSIGHTS_INSTRUMENTATIONKEY + value: ${appInsights.instrumentationKey} + - name: APPLICATIONINSIGHTS_CONNECTION_STRING + value: InstrumentationKey=${appInsights.instrumentationKey} + - name: ApplicationInsightsAgent_EXTENSION_VERSION + value: ~2 + connectionStrings: + - name: db + type: SQLAzure + connectionString: Server= tcp:${sqlServer.name}.database.windows.net;initial catalog=${db.name};userID=${sqlAdmin};password=${sqlPassword.result};Min Pool Size=0;Max Pool Size=30;Persist Security Info=true; +outputs: + endpoint: ${app.defaultHostName} diff --git a/azure-yaml-app-service/README.md b/azure-yaml-app-service/README.md new file mode 100644 index 000000000..a4d7fa0fd --- /dev/null +++ b/azure-yaml-app-service/README.md @@ -0,0 +1,89 @@ +[![Deploy](https://get.pulumi.com/new/button.svg)](https://app.pulumi.com/new?template=https://github.com/pulumi/examples/blob/master/azure-cs-appservice/README.md) + +# Azure App Service with SQL Database and Application Insights + +Starting point for building web application hosted in Azure App Service. + +Provisions Azure SQL Database and Azure Application Insights to be used in combination +with App Service. + +## Deploying the App + +To deploy your infrastructure, follow the below steps. + +### Prerequisites + +1. [Install Pulumi](https://www.pulumi.com/docs/get-started/install/) + +### Steps + +1. Install required plugins: + + ```bash + $ pulumi plugin install resource azure-native 1.56.0 + $ pulumi plugin install resource random 4.3.1 + ``` + +1. Create a new stack: + + ``` + $ pulumi stack init dev + ``` + +1. Login to Azure CLI (you will be prompted to do this during deployment if you forget this step): + + ``` + $ az login + ``` + +1. Configure the location to deploy the resources to: + + ``` + $ pulumi config set azure-native:location centralus + ``` + +1. Run `pulumi up` to preview and deploy changes: + + ``` + $ pulumi up + Previewing changes: + ... + + Performing changes: + ... + info: 11 changes performed: + + 11 resources created + Update duration: 1m14.59910109s + ``` + +1. Check the deployed website endpoint: + + ``` + $ pulumi stack output Endpoint + https://azpulumi-as0ef47193.azurewebsites.net + $ curl "$(pulumi stack output endpoint)" + + + + + Hello, Pulumi! + + + + +

Hello, Azure!

+

Made with ❤️ with Pulumi

+

This file is served from Azure App Service, via Blob Storage.

+ + + + ``` + +6. From there, feel free to experiment. Simply making edits and running `pulumi up` will incrementally update your stack. + +7. Once you've finished experimenting, tear down your stack's resources by destroying and removing it: + + ```bash + $ pulumi destroy --yes + $ pulumi stack rm --yes + ``` diff --git a/azure-yaml-app-service/www/404.html b/azure-yaml-app-service/www/404.html new file mode 100644 index 000000000..ccf077d86 --- /dev/null +++ b/azure-yaml-app-service/www/404.html @@ -0,0 +1,14 @@ + + + + + Oops, 404 + + + + +

That's a 404! Still, from the Blob Storage.

+

Made with ❤️ with Pulumi

+ + + diff --git a/azure-yaml-app-service/www/favicon.png b/azure-yaml-app-service/www/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..ad4baeb6fd3df3a99e06099e7a94b2715eaad419 GIT binary patch literal 13731 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 literal 0 HcmV?d00001 diff --git a/azure-yaml-app-service/www/index.html b/azure-yaml-app-service/www/index.html new file mode 100644 index 000000000..850ade127 --- /dev/null +++ b/azure-yaml-app-service/www/index.html @@ -0,0 +1,15 @@ + + + + + Hello, Pulumi! + + + + +

Hello, Azure!

+

Made with ❤️ with Pulumi

+

This file is served from Azure App Service, via Blob Storage.

+ + + diff --git a/azure-yaml-container-apps/Pulumi.yaml b/azure-yaml-container-apps/Pulumi.yaml new file mode 100644 index 000000000..d101bff3c --- /dev/null +++ b/azure-yaml-container-apps/Pulumi.yaml @@ -0,0 +1,93 @@ +name: azure-container-apps +runtime: yaml +description: Azure Container Apps example +configuration: + sqlAdmin: + type: String + default: pulumi +variables: + sharedKey: + Fn::Invoke: + Function: azure-native:operationalinsights:getSharedKeys + Arguments: + resourceGroupName: ${resourceGroup.name} + workspaceName: ${workspace.name} + Return: primarySharedKey + adminUsername: + Fn::Invoke: + Function: azure-native:containerregistry:listRegistryCredentials + Arguments: + resourceGroupName: ${resourceGroup.name} + registryName: ${registry.name} + Return: username + adminPasswords: + Fn::Invoke: + Function: azure-native:containerregistry:listRegistryCredentials + Arguments: + resourceGroupName: ${resourceGroup.name} + registryName: ${registry.name} + Return: passwords +resources: + resourceGroup: + type: azure-native:resources:ResourceGroup + workspace: + type: azure-native:operationalinsights:Workspace + properties: + resourceGroupName: ${resourceGroup.name} + sku: + name: "PerGB2018" + retentionInDays: 30 + kubeEnv: + type: azure-native:web:KubeEnvironment + properties: + resourceGroupName: ${resourceGroup.name} + environmentType: Managed + appLogsConfiguration: + destination: "log-analytics" + logAnalyticsConfiguration: + customerId: ${workspace.customerId} + sharedKey: ${sharedKey} + registry: + type: azure-native:containerregistry:Registry + properties: + resourceGroupName: ${resourceGroup.name} + sku: + name: "Basic" + adminUserEnabled: true + provider: + type: pulumi:providers:docker + properties: + registryAuth: + - address: ${registry.loginServer} + username: ${adminUsername} + password: ${adminPasswords[0].value} + myImage: + type: docker:RegistryImage + properties: + name: ${registry.loginServer}/node-app:v1.0.0 + build: + context: ${pulumi.cwd}/node-app + options: + provider: ${provider} + containerapp: + type: azure-native:web:ContainerApp + properties: + resourceGroupName: ${resourceGroup.name} + kubeEnvironmentId: ${kubeEnv} + configuration: + ingress: + external: true + targetPort: 80 + registries: + - server: ${registry.loginServer} + username: ${adminUsername} + passwordSecretRef: "pwd" + secrets: + - name: "pwd" + value: ${adminPasswords[0].value} + template: + containers: + - name: "myapp" + image: ${myImage.name} +outputs: + endpoint: https://${containerapp.configuration.ingress.fqdn} diff --git a/azure-yaml-container-apps/README.md b/azure-yaml-container-apps/README.md new file mode 100644 index 000000000..1bfe0b26e --- /dev/null +++ b/azure-yaml-container-apps/README.md @@ -0,0 +1,49 @@ +# Azure Container Apps + +Starting point for building web application hosted in Azure Container Apps. + +## Running the App + +1. Create a new stack: + + ``` + $ pulumi stack init dev + ``` + +1. Login to Azure CLI (you will be prompted to do this during deployment if you forget this step): + + ``` + $ az login + ``` + +1. Set the Azure region location to use: + + ``` + $ pulumi config set azure-native:location westus2 + ``` + +1. Run `pulumi up` to preview and deploy changes: + + ``` + $ pulumi up + Previewing changes: + ... + + Performing changes: + ... + Resources: + + 7 created + + Duration: 4m18s + ``` + +1. Check the deployed endpoint: + + ``` + $ curl "$(pulumi stack output url)" + + +

Your custom docker image is running in Azure Container Apps!

+ + + ``` diff --git a/azure-yaml-container-apps/node-app/.dockerignore b/azure-yaml-container-apps/node-app/.dockerignore new file mode 100644 index 000000000..93f136199 --- /dev/null +++ b/azure-yaml-container-apps/node-app/.dockerignore @@ -0,0 +1,2 @@ +node_modules +npm-debug.log diff --git a/azure-yaml-container-apps/node-app/Dockerfile b/azure-yaml-container-apps/node-app/Dockerfile new file mode 100644 index 000000000..53bbea666 --- /dev/null +++ b/azure-yaml-container-apps/node-app/Dockerfile @@ -0,0 +1,6 @@ +FROM node:8.9.3-alpine +RUN mkdir -p /usr/src/app +COPY ./app/* /usr/src/app/ +WORKDIR /usr/src/app +RUN npm install +CMD node /usr/src/app/index.js diff --git a/azure-yaml-container-apps/node-app/app/index.html b/azure-yaml-container-apps/node-app/app/index.html new file mode 100644 index 000000000..1ca449104 --- /dev/null +++ b/azure-yaml-container-apps/node-app/app/index.html @@ -0,0 +1,6 @@ + + + +

Your custom docker image is running in Azure Container Apps!

+ + diff --git a/azure-yaml-container-apps/node-app/app/index.js b/azure-yaml-container-apps/node-app/app/index.js new file mode 100644 index 000000000..7d87fba91 --- /dev/null +++ b/azure-yaml-container-apps/node-app/app/index.js @@ -0,0 +1,13 @@ +const express = require('express'); +const morgan = require('morgan'); + +const app = express(); +app.use(morgan('combined')); + +app.get('/', (req, res) => { + res.sendFile(__dirname + '/index.html') +}); + +var listener = app.listen(process.env.PORT || 80, function() { + console.log('listening on port ' + listener.address().port); +}); diff --git a/azure-yaml-static-website/Pulumi.yaml b/azure-yaml-static-website/Pulumi.yaml new file mode 100644 index 000000000..dbf6d663c --- /dev/null +++ b/azure-yaml-static-website/Pulumi.yaml @@ -0,0 +1,51 @@ +name: azure-static-website +runtime: yaml +description: A static website hosted on AWS S3 +resources: + staticsitegroup: + type: azure-native:resources:ResourceGroup + storageaccount: + type: azure-native:storage:StorageAccount + properties: + resourceGroupName: ${staticsitegroup.name} + kind: "StorageV2" + sku: { name: "Standard_LRS" } + staticwebsite: + type: azure-native:storage:StorageAccountStaticWebsite + properties: + resourceGroupName: ${staticsitegroup.name} + accountName: ${storageaccount.name} + indexDocument: index.html + error404Document: 404.html + index.html: + type: azure-native:storage:Blob + properties: + resourceGroupName: ${staticsitegroup.name} + accountName: ${storageaccount.name} + containerName: ${staticwebsite.containerName} + contentType: text/html + type: 'Block' + source: + Fn::FileAsset: ./www/index.html + favicon.png: + type: azure-native:storage:Blob + properties: + resourceGroupName: ${staticsitegroup.name} + accountName: ${storageaccount.name} + containerName: ${staticwebsite.containerName} + contentType: image/png + type: 'Block' + source: + Fn::FileAsset: ./www/favicon.png + 404.html: + type: azure-native:storage:Blob + properties: + resourceGroupName: ${staticsitegroup.name} + accountName: ${storageaccount.name} + containerName: ${staticwebsite.containerName} + contentType: text/html + type: 'Block' + source: + Fn::FileAsset: ./www/404.html +outputs: + endpoint: ${storageaccount.primaryEndpoints.web} diff --git a/azure-yaml-static-website/README.md b/azure-yaml-static-website/README.md new file mode 100644 index 000000000..39211a4b0 --- /dev/null +++ b/azure-yaml-static-website/README.md @@ -0,0 +1,70 @@ +[![Deploy](https://get.pulumi.com/new/button.svg)](https://app.pulumi.com/new?template=https://github.com/pulumi/examples/blob/master/azure-cs-static-website/README.md) + +# Static Website Using Azure Blob Storage and CDN + +This example configures [Static website hosting in Azure Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-static-website). + +In addition to the Storage itself, a CDN is configured to serve files from the Blob container origin. This may be useful if you need to serve files via HTTPS from a custom domain (not shown in the example). + +## Running the App + +1. Install required plugins: + + ```bash + $ pulumi plugin install resource azure-native 1.56.0 + ``` + +1. Create a new stack: + + ``` + $ pulumi stack init dev + ``` + +1. Login to Azure CLI (you will be prompted to do this during deployment if you forget this step): + + ``` + $ az login + ``` + +1. Set the Azure region location to use: + + ``` + $ pulumi config set azure-native:location westus + ``` + +1. Run `pulumi up` to preview and deploy changes: + + ``` + $ pulumi up + Previewing changes: + ... + + Performing changes: + ... + Resources: + + 9 created + Duration: 2m52s + ``` + +1. Check the deployed website endpoint: + + ``` + $ pulumi stack output endpoint + https://websitesbc90978a1.z20.web.core.windows.net/ + $ curl "$(pulumi stack output endpoint)" + + + + + Hello, Pulumi! + + + + +

Hello, Azure!

+

Made with ❤️ with Pulumi

+

This file is served from Azure Blob Storage.

+ + + + ``` diff --git a/azure-yaml-static-website/www/404.html b/azure-yaml-static-website/www/404.html new file mode 100644 index 000000000..ccf077d86 --- /dev/null +++ b/azure-yaml-static-website/www/404.html @@ -0,0 +1,14 @@ + + + + + Oops, 404 + + + + +

That's a 404! Still, from the Blob Storage.

+

Made with ❤️ with Pulumi

+ + + diff --git a/azure-yaml-static-website/www/favicon.png b/azure-yaml-static-website/www/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..ad4baeb6fd3df3a99e06099e7a94b2715eaad419 GIT binary patch literal 13731 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 literal 0 HcmV?d00001 diff --git a/azure-yaml-static-website/www/index.html b/azure-yaml-static-website/www/index.html new file mode 100644 index 000000000..ef3fefaef --- /dev/null +++ b/azure-yaml-static-website/www/index.html @@ -0,0 +1,15 @@ + + + + + Hello, Pulumi! + + + + +

Hello, Azure!

+

Made with ❤️ with Pulumi

+

This file is served from Azure Blob Storage.

+ + + diff --git a/kubernetes-yaml/Pulumi.yaml b/kubernetes-yaml/Pulumi.yaml new file mode 100644 index 000000000..7964b1bc0 --- /dev/null +++ b/kubernetes-yaml/Pulumi.yaml @@ -0,0 +1,54 @@ +name: simple-kubernetes +runtime: yaml +configuration: + hostname: + default: example.com + type: String +resources: + nginx-demo: # namespace name generated based on resource name + type: kubernetes:core/v1:Namespace + app: + type: kubernetes:apps/v1:Deployment + properties: + metadata: + namespace: ${nginx-demo.metadata.name} + spec: + selector: + matchLabels: + app.kubernetes.io/name: nginx-demo + replicas: 1 + template: + metadata: + labels: + app.kubernetes.io/name: nginx-demo + spec: + containers: [{ name: app, image: "nginx:1.15-alpine" }] + service: + type: kubernetes:core/v1:Service + properties: + metadata: + namespace: ${nginx-demo.metadata.name} + labels: + app.kubernetes.io/name: nginx-demo + spec: + type: ClusterIP + ports: [{ port: 80, targetPort: 80, protocol: "TCP" }] + selector: + app.kubernetes.io/name: nginx-demo + ingress: + type: kubernetes:networking.k8s.io/v1:Ingress + properties: + metadata: + namespace: ${nginx-demo.metadata.name} + spec: + rules: + - host: ${hostname} + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: ${service.metadata.name} + port: + number: 80 diff --git a/random-yaml/Pulumi.yaml b/random-yaml/Pulumi.yaml new file mode 100644 index 000000000..3f8e87ac0 --- /dev/null +++ b/random-yaml/Pulumi.yaml @@ -0,0 +1,11 @@ +name: random +runtime: yaml +resources: + randomPassword: + type: random:RandomPassword + properties: + length: 16 + special: true + overrideSpecial: "_%@" +outputs: + password: ${randomPassword.result} diff --git a/random-yaml/README.md b/random-yaml/README.md new file mode 100644 index 000000000..d67e42ca2 --- /dev/null +++ b/random-yaml/README.md @@ -0,0 +1,49 @@ +# Generate secure random passwords to use in deployments + +The [Random package](https://www.pulumi.com/registry/packages/random/api-docs/) provides resources with outputs that are random IDs, passwords, or other data. + +## Deploying and running the program + +1. Create a new stack: + + ```bash + $ pulumi stack init dev + ``` + +1. Install required plugins: + + ```bash + $ pulumi plugin install resource random 4.3.1 + ``` + +1. Run `pulumi up` to preview and deploy changes. After the preview is shown you will be + prompted if you want to continue or not. + + ```bash + $ pulumi up + Previewing update (dev) + ... + + Updating (dev) + + View Live: https://app.pulumi.com/.../random/dev/updates/1 + + Type Name Status + + pulumi:pulumi:Stack random-dev created + + └─ random:index:RandomPassword randomPassword created + + Outputs: + password: "[secret]" + + Resources: + + 2 created + ``` + +1. To see the resources that were created, run `pulumi stack output`: + + ```bash + $ pulumi stack output --show-secrets + Current stack outputs (1): + OUTPUT VALUE + password ... + ``` diff --git a/webserver-yaml-json/Main.json b/webserver-yaml-json/Main.json new file mode 100644 index 000000000..5387fbfd0 --- /dev/null +++ b/webserver-yaml-json/Main.json @@ -0,0 +1,61 @@ +{ + "Configuration": { + "InstanceType": { + "type": "String", + "default": "t3.micro" + } + }, + "Resources": { + "WebSecGrp": { + "Type": "aws:ec2:SecurityGroup", + "Properties": { + "ingress": [ + { + "protocol": "tcp", + "fromPort": 80, + "toPort": 80, + "cidrBlocks": ["0.0.0.0/0"] + } + ] + }, + "Options": { + "Version": "4.37.1" + } + }, + "WebServer": { + "Type": "aws:ec2:Instance", + "Properties": { + "instanceType": "${InstanceType}", + "ami": { + "Fn::Invoke": { + "Function": "aws:getAmi", + "Arguments": { + "filters": [ + { "name": "name", "values": ["amzn-ami-hvm-*-x86_64-ebs"] } + ], + "owners": ["137112412989"], + "mostRecent": true + }, + "Return": "id" + } + }, + "userData": { + "Fn::Join": [ + "\n", + [ + "#!/bin/bash", + "echo 'Hello, World from ${WebSecGrp.arn}!' > index.html", + "nohup python -m SimpleHTTPServer 80 &" + ] + ] + }, + "vpcSecurityGroupIds": ["${WebSecGrp.id}"] + } + } + }, + "Outputs": { + "InstanceId": "${WebServer.id}", + "PublicIp": "${WebServer.publicIp}", + "PublicHostName": "${WebServer.publicDns}" + } +} diff --git a/webserver-yaml-json/Pulumi.yaml b/webserver-yaml-json/Pulumi.yaml new file mode 100755 index 000000000..f86777619 --- /dev/null +++ b/webserver-yaml-json/Pulumi.yaml @@ -0,0 +1,3 @@ +name: webserver-json +runtime: yaml +description: Basic example of an AWS web server accessible over HTTP diff --git a/webserver-yaml/Pulumi.yaml b/webserver-yaml/Pulumi.yaml new file mode 100755 index 000000000..a0002793c --- /dev/null +++ b/webserver-yaml/Pulumi.yaml @@ -0,0 +1,50 @@ +name: webserver +runtime: yaml +description: Basic example of an AWS web server accessible over HTTP +configuration: + InstanceType: + type: String + default: t3.micro +variables: + ec2ami: + Fn::Invoke: + Function: aws:getAmi + Arguments: + filters: + - name: name + values: ["amzn-ami-hvm-*-x86_64-ebs"] + owners: ["137112412989"] + mostRecent: true + Return: id +resources: + WebSecGrp: + type: aws:ec2:SecurityGroup + properties: + ingress: + - protocol: tcp + fromPort: 80 + toPort: 80 + cidrBlocks: ["0.0.0.0/0"] + WebServer: + type: aws:ec2:Instance + properties: + instanceType: ${InstanceType} + ami: ${ec2ami} + userData: |- + #!/bin/bash + echo 'Hello, World from ${WebSecGrp.arn}!' > index.html + nohup python -m SimpleHTTPServer 80 & + vpcSecurityGroupIds: + - ${WebSecGrp} + UsEast2Provider: + type: pulumi:providers:aws + properties: + region: us-east-2 + MyBucket: + type: aws:s3:Bucket + options: + provider: ${UsEast2Provider} +outputs: + InstanceId: ${WebServer.id} + PublicIp: ${WebServer.publicIp} + PublicHostName: ${WebServer.publicDns} From f8f44c4a8f825ec91d26314b88df9838e935f981 Mon Sep 17 00:00:00 2001 From: Ian Wahbe Date: Wed, 4 May 2022 09:03:47 -0700 Subject: [PATCH 2/2] Add cue examples --- aws-yaml-cue-eks/Pulumi.yaml | 6 ++ aws-yaml-cue-eks/aws/eks.cue | 11 +++ aws-yaml-cue-eks/cue.mod/module.cue | 1 + aws-yaml-cue-eks/main.cue | 14 ++++ azure-yaml-cue-static-web-app/Pulumi.yaml | 6 ++ azure-yaml-cue-static-web-app/app.cue | 68 ++++++++++++++++++ .../website/404.html | 14 ++++ .../website/favicon.png | Bin 0 -> 13731 bytes .../website/index.html | 15 ++++ random-yaml-cue/Pulumi.yaml | 6 ++ random-yaml-cue/infra.cue | 14 ++++ 11 files changed, 155 insertions(+) create mode 100644 aws-yaml-cue-eks/Pulumi.yaml create mode 100644 aws-yaml-cue-eks/aws/eks.cue create mode 100644 aws-yaml-cue-eks/cue.mod/module.cue create mode 100644 aws-yaml-cue-eks/main.cue create mode 100644 azure-yaml-cue-static-web-app/Pulumi.yaml create mode 100644 azure-yaml-cue-static-web-app/app.cue create mode 100644 azure-yaml-cue-static-web-app/website/404.html create mode 100644 azure-yaml-cue-static-web-app/website/favicon.png create mode 100644 azure-yaml-cue-static-web-app/website/index.html create mode 100644 random-yaml-cue/Pulumi.yaml create mode 100644 random-yaml-cue/infra.cue diff --git a/aws-yaml-cue-eks/Pulumi.yaml b/aws-yaml-cue-eks/Pulumi.yaml new file mode 100644 index 000000000..b2ecff5b3 --- /dev/null +++ b/aws-yaml-cue-eks/Pulumi.yaml @@ -0,0 +1,6 @@ +name: cue +runtime: + name: yaml + options: + compiler: cue export +description: CUE Example diff --git a/aws-yaml-cue-eks/aws/eks.cue b/aws-yaml-cue-eks/aws/eks.cue new file mode 100644 index 000000000..b440979fb --- /dev/null +++ b/aws-yaml-cue-eks/aws/eks.cue @@ -0,0 +1,11 @@ +package eks + +#EksCluster: { + type: "eks:Cluster" + properties: { + instanceType: *"t2.medium" | "t3.medium" + desiredCapacity: int | *2 + minSize: int | *1 + maxSize: int | *2 + } +} diff --git a/aws-yaml-cue-eks/cue.mod/module.cue b/aws-yaml-cue-eks/cue.mod/module.cue new file mode 100644 index 000000000..f7f845cfc --- /dev/null +++ b/aws-yaml-cue-eks/cue.mod/module.cue @@ -0,0 +1 @@ +module: "examples.pulumi.com/yaml-eks" diff --git a/aws-yaml-cue-eks/main.cue b/aws-yaml-cue-eks/main.cue new file mode 100644 index 000000000..55f71a384 --- /dev/null +++ b/aws-yaml-cue-eks/main.cue @@ -0,0 +1,14 @@ +package main + +import "examples.pulumi.com/yaml-eks/aws:eks" + +resources: { + rawkode: eks.#EksCluster + stack72: eks.#EksCluster & { + properties: { + instanceType: "t2.medium" + desiredCapacity: 4 + maxSize: 8 + } + } +} diff --git a/azure-yaml-cue-static-web-app/Pulumi.yaml b/azure-yaml-cue-static-web-app/Pulumi.yaml new file mode 100644 index 000000000..b2ecff5b3 --- /dev/null +++ b/azure-yaml-cue-static-web-app/Pulumi.yaml @@ -0,0 +1,6 @@ +name: cue +runtime: + name: yaml + options: + compiler: cue export +description: CUE Example diff --git a/azure-yaml-cue-static-web-app/app.cue b/azure-yaml-cue-static-web-app/app.cue new file mode 100644 index 000000000..6592f8c0e --- /dev/null +++ b/azure-yaml-cue-static-web-app/app.cue @@ -0,0 +1,68 @@ +package main + +resources: { + (#StaticWebApp & { + _name: "rawkode" + }).resources + + (#StaticWebApp & { + _name: "stack72" + _documents: { + root: "website" + index: "index.html" + } + }).resources +} + +#StaticWebApp: { + _name: string + _documents: { + root: string | *"website" + index: string | *"index.html" + error404: string | *"404.html" + } + + resources: { + "\(_name)-group": { + type: "azure-native:resources:ResourceGroup" + properties: { + location: "WestUs" + } + } + + "\(_name)-storage": { + type: "azure-native:storage:StorageAccount" + properties: { + resourceGroupName: "${\(_name)-group.name}" + kind: "StorageV2" + sku: { + name: "Standard_LRS" + } + } + } + + "\(_name)-website": { + type: "azure-native:storage:StorageAccountStaticWebsite" + properties: { + resourceGroupName: "${\(_name)-group.name}" + accountName: "${\(_name)-storage.name}" + indexDocument: "\(_documents.index)" + error404Document: "\(_documents.error404)" + } + } + + "\(_name)-\(_documents.index)": { + type: "azure-native:storage:Blob" + properties: { + resourceGroupName: "${\(_name)-group.name}" + accountName: "${\(_name)-storage.name}" + containerName: "${\(_name)-website.containerName}" + contentType: "text/html" + type: "Block" + source: { + "Fn::FileAsset": "./\(_documents.root)/\(_documents.index)" + } + } + } + } +} diff --git a/azure-yaml-cue-static-web-app/website/404.html b/azure-yaml-cue-static-web-app/website/404.html new file mode 100644 index 000000000..ccf077d86 --- /dev/null +++ b/azure-yaml-cue-static-web-app/website/404.html @@ -0,0 +1,14 @@ + + + + + Oops, 404 + + + + +

That's a 404! Still, from the Blob Storage.

+

Made with ❤️ with Pulumi

+ + + diff --git a/azure-yaml-cue-static-web-app/website/favicon.png b/azure-yaml-cue-static-web-app/website/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..ad4baeb6fd3df3a99e06099e7a94b2715eaad419 GIT binary patch literal 13731 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 literal 0 HcmV?d00001 diff --git a/azure-yaml-cue-static-web-app/website/index.html b/azure-yaml-cue-static-web-app/website/index.html new file mode 100644 index 000000000..ef3fefaef --- /dev/null +++ b/azure-yaml-cue-static-web-app/website/index.html @@ -0,0 +1,15 @@ + + + + + Hello, Pulumi! + + + + +

Hello, Azure!

+

Made with ❤️ with Pulumi

+

This file is served from Azure Blob Storage.

+ + + diff --git a/random-yaml-cue/Pulumi.yaml b/random-yaml-cue/Pulumi.yaml new file mode 100644 index 000000000..b2ecff5b3 --- /dev/null +++ b/random-yaml-cue/Pulumi.yaml @@ -0,0 +1,6 @@ +name: cue +runtime: + name: yaml + options: + compiler: cue export +description: CUE Example diff --git a/random-yaml-cue/infra.cue b/random-yaml-cue/infra.cue new file mode 100644 index 000000000..b515f0221 --- /dev/null +++ b/random-yaml-cue/infra.cue @@ -0,0 +1,14 @@ +package pulumi + +resources: + randomPassword: { + type: "random:RandomPassword" + properties: { + length: 16 + special: true + overrideSpecial: "_%@" + } + } + +outputs: + password: "${randomPassword.result}"