Git Product home page Git Product logo

cdktf-provider-azurerm's Introduction

CDKTF prebuilt bindings for hashicorp/azurerm provider version 3.103.1

This repo builds and publishes the Terraform azurerm provider bindings for CDK for Terraform.

Available Packages

NPM

The npm package is available at https://www.npmjs.com/package/@cdktf/provider-azurerm.

npm install @cdktf/provider-azurerm

PyPI

The PyPI package is available at https://pypi.org/project/cdktf-cdktf-provider-azurerm.

pipenv install cdktf-cdktf-provider-azurerm

Nuget

The Nuget package is available at https://www.nuget.org/packages/HashiCorp.Cdktf.Providers.Azurerm.

dotnet add package HashiCorp.Cdktf.Providers.Azurerm

Maven

The Maven package is available at https://mvnrepository.com/artifact/com.hashicorp/cdktf-provider-azurerm.

<dependency>
    <groupId>com.hashicorp</groupId>
    <artifactId>cdktf-provider-azurerm</artifactId>
    <version>[REPLACE WITH DESIRED VERSION]</version>
</dependency>

Go

The go package is generated into the github.com/cdktf/cdktf-provider-azurerm-go package.

go get github.com/cdktf/cdktf-provider-azurerm-go/azurerm/<version>

Where <version> is the version of the prebuilt provider you would like to use e.g. v11. The full module name can be found within the go.mod file.

Docs

Find auto-generated docs for this provider here:

You can also visit a hosted version of the documentation on constructs.dev.

Versioning

This project is explicitly not tracking the Terraform azurerm provider version 1:1. In fact, it always tracks latest of ~> 3.10 with every release. If there are scenarios where you explicitly have to pin your provider version, you can do so by generating the provider constructs manually.

These are the upstream dependencies:

If there are breaking changes (backward incompatible) in any of the above, the major version of this project will be bumped.

Features / Issues / Bugs

Please report bugs and issues to the CDK for Terraform project:

Contributing

Projen

This is mostly based on Projen, which takes care of generating the entire repository.

cdktf-provider-project based on Projen

There's a custom project builder which encapsulate the common settings for all cdktf prebuilt providers.

Provider Version

The provider version can be adjusted in ./.projenrc.js.

Repository Management

The repository is managed by CDKTF Repository Manager.

cdktf-provider-azurerm's People

Contributors

ansgarm avatar danielmschmidt avatar dependabot[bot] avatar mergify[bot] avatar skorfmann avatar team-tf-cdk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

cdktf-provider-azurerm's Issues

Cannot downgrade or pin the terraform provider version

This might rather be a question or starting point for discussion instead of an issue, but I hope it's still the right place to address it.

Issue description

When using the prebuilt providers, such as the azurerm provider, cdktf generates the required_providers section like this:

"azurerm": {
  "version": "~> 2.0",
  "source": "azurerm"
},

This essentially causes terraform to always fetch the latest 2.0 provider, no matter what the prebuilt provider package was built against. Currently there seems to be no way to manually change that value to downgrade or pin the provider.

Background

This is especially problematic for environments where you need reproducible builds. I.e., in our application we deliberately use a yarn.lock (as probably many other teams do as well; same with package-lock.json) to pin working configurations in order for CI/CD pipelines to "replay" them consistently. Pinning there currently still does not pin the actual provider that is used.

To give a real example with impact: our pipelines started to fail last friday due to a bug in the 2.86 release, although we didn't change anything in the configuration. As a temporary workaround, we now had to revert back to the generated provider instead of the prebuilt one to pin it to version 2.85, which, unfortunately, also required quite some code changes in the import statements.

Fix / Suggestion

It would be great if either:

  • One could somehow override the required_providers field to a custom version, or
  • The prebuilt provider always pins to the exact terraform provider it was built against, e.g. 0.2.10 to 2.78.0. This would allow the users to control the provider version via package.json and the corresponding lock files. But one downside is that it would also tightly couple the release cycle of the prebuilt provider to the upstream terraform provider (if that's not already the case?).

Looking forward to hear feedback and opinions on that.

PrivateEndpoint with "privateServiceConnection.isManualConnection: false" errors out

Trying to deploy a stack with a PrivateEndpoint that has privateServiceConnection.isManualConnection set to false, fails to deploy. The generated terraform template doesn't have the is_manual_connection field, and then terraform fails to run the deployment, saying it's mandatory.

If I flip the flag to true, only then it appears in the generated terraform template.

Example code snippet:

new PrivateEndpoint(this, "endpoint", {
  name: "endpoint",
  resourceGroupName: rg.name,
  location: rg.location,
  subnetId: subnet.id,

  privateDnsZoneGroup: {
    name: "privatednszonegroup",
    privateDnsZoneIds: [dns.id],
  },

  privateServiceConnection: {
    name: "appservice-privateconnection",
    privateConnectionResourceId: app.id,
    subresourceNames: ["sites"],
    isManualConnection: false,
  },
});

The generated terraform template, doesn't have the is_manual_connection field:

    "azurerm_private_endpoint": {
      "endpoint": {
        "location": "${azurerm_resource_group.rg.location}",
        "name": "endpoint",
        "resource_group_name": "${azurerm_resource_group.rg.name}",
        "subnet_id": "${azurerm_subnet.subnet.id}",
        "private_dns_zone_group": {
          "name": "privatednszonegroup",
          "private_dns_zone_ids": [
            "${azurerm_private_dns_zone.private-dns-zone.id}"
          ]
        },
        "private_service_connection": {
          "name": "appservice-privateconnection",
          "private_connection_resource_id": "${azurerm_app_service.app-service.id}",
          "subresource_names": [
            "sites"
          ]
        },

dependencies installed (package.json):

  "dependencies": {
    "@cdktf/provider-azurerm": "^0.3.74",
    "cdktf": "^0.8.1",
    "constructs": "^10.0.12"
  },

Missing prebuilt provider for `azuread`

Prebuilt support for azurerm is great, but, given how much of Azure's identity is built on top of Azure Active Directory, it'd be great to have a prebuilt for azuread as well.

Thanks!

AzurermProviderFeatures missing "api_management" purge_soft_delete_on_destroy

The provider is not in sync with latest version 2.77 release

https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs#features

It's missing

The api_management block supports the following:

purge_soft_delete_on_destroy - (Optional) Should the azurerm_api_management resources be permanently deleted (e.g. purged) when destroyed? Defaults to false.

https://github.com/hashicorp/cdktf-provider-azurerm/blob/main/src/azurerm-provider.ts

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.