Terraform Algolia Provider

Terraform Provider Algolia

License: MPL-2.0 Tests Workflow codecov Go Report Card

Terraform Provider for Algolia.

Documentation

Full, comprehensive documentation is available on the Terraform website:

https://registry.terraform.io/providers/k-yomo/algolia/latest/docs

Using the provider

Set an environment variable ALGOLIA_API_KEY to store your Algolia API key.

$ export ALGOLIA_API_KEY=<your api key>

The example below demonstrates the following operations:

  • create index
  • create rule for the index
  • create api key to search the index
terraform {
  required_providers {
    algolia = {
      source = "k-yomo/algolia"
      version = ">= 0.1.0, < 1.0.0"
    }
  }
}

provider "algolia" {
  app_id = "XXXXXXXXXX"
}

resource "algolia_index" "example" {
  name = "example"
  attributes_config {
    searchable_attributes = [
      "title",
      "category,tag",
      "unordered(description)",
    ]
    attributes_for_faceting = [
      "category"
    ]
    unretrievable_attributes = [
      "author_email"
    ]
    attributes_to_retrieve = [
      "title",
      "category",
      "tag",
      "description",
      "body"
    ]
  }

  ranking_config {
    ranking = [
      "words",
      "proximity"
    ]
  }

  faceting_config {
    max_values_per_facet = 50
    sort_facet_values_by = "alpha"
  }

  languages_config {
    remove_stop_words_for = ["en"]
  }
}

resource "algolia_rule" "example" {
  index_name = algolia_index.example.name
  object_id = "example-rule"

  conditions {
    pattern = "{facet:category}"
    anchoring = "contains"
  }

  consequence {
    params {
      automatic_facet_filters {
        facet = "category"
        disjunctive = true
      }
    }
  }
}


resource "algolia_api_key" "example" {
  acl = [
    "search",
    "browse"
  ]
  expires_at = "2030-01-01T00:00:00Z"
  max_hits_per_query = 100
  max_queries_per_ip_per_hour = 10000
  description = "This is a example api key"
  indexes = [algolia_index.example.name]
  referers = ["https://algolia.com/\\*"]
}

Supported resources

Contributing

I appreciate your help!

To contribute, please read the Contributing to Terraform - Algolia Provider

Comments
  • No Task ID in output

    No Task ID in output

    Terraform Version

    • Terraform version: v0.14.6
    • Provider version: v0.5.3

    Expected Behavior

    When using TF_LOG=TRACE (or even DEBUG), I should see polling requests to Algolia, as well as taskid

    Actual Behavior

    grep -i task infra/terraform/int/apply.txt|grep id returns nothing

    Steps to Reproduce

    Use TF_LOG=TRACE with any plan

    Important factoids

    I can see some requests, just not the polling ones.

  • Terraforming virtual indices is not idempotent

    Terraforming virtual indices is not idempotent

    Terraform Version

    • Terraform version: v0.14.6
    • Provider version: v0.3.0

    Affected Resource(s)

    • algolia_index

    Terraform Configuration Files

    Copy-paste your Terraform configurations here

    terraform {
      required_providers {
        algolia = {
          source  = "k-yomo/algolia"
          version = "0.3.0"
        }
      }
    }
    
    resource "algolia_index" "product_index" {
      name = var.index_name
    
      typos_config {
        min_word_size_for_1_typo      = 4
        min_word_size_for_2_typos     = 8
        typo_tolerance = "min"
      }
    
      pagination_config {
        hits_per_page         = 60
        pagination_limited_to = 20000
      }
    
      faceting_config {
        max_values_per_facet = 1000
      }
    
      languages_config {
        ignore_plurals_for = [var.language]
        remove_stop_words_for = [var.language]
        query_languages       = [var.language]
      }
    
      advanced_config {
        response_fields                              = ["*"]
        attribute_criteria_computed_by_min_proximity = true
        distinct                                     = 1
        attribute_for_distinct                       = "article_id" # this will probably be ignored, but is mandatory when you specify "distinct"
      }
    
      highlight_and_snippet_config {
        attributes_to_highlight = []
        highlight_pre_tag       = "<em>"
        highlight_post_tag      = "</em>"
      }
    
      attributes_config {
        attributes_to_retrieve = ["*"]
    
        unretrievable_attributes = [
          "document_update_time",
          "ean",
          "has_ranking_malus",
          "model_titles",
          "mpn",
          "rating_rounded_down",
          "rating_weighted",
        ]
      }
    
      query_strategy_config {
        remove_words_if_no_results = "allOptional"
        query_type                 = "prefixLast"
        alternatives_as_exact = [
          "ignorePlurals",
          "singleWordSynonym"
        ]
        advanced_syntax_features = [
          "exactPhrase",
          "excludeWords",
        ]
      }
    
      ranking_config {
        custom_ranking       = var.custom_ranking
        relevancy_strictness = 0
      }
    
      virtual = true
    }
    
    

    Expected Behavior

    Terraforming this should be idempotent

    Actual Behavior

    Planning and applying works, but planning again results in the following plan:

      # module.it-b2c-pprod-app.module.rating_desc_replica_alternate.algolia_index.product_index will be updated in-place
      ~ resource "algolia_index" "product_index" {
            id                     = "pprod_products_it_rating_desc_alternate"
            name                   = "pprod_products_it_rating_desc_alternate"
            # (4 unchanged attributes hidden)
    
    
          ~ attributes_config {
              ~ attributes_for_faceting  = [
                  - "banner.alternate.categories",
                  - "banner.categories",
                  - "catalog_attribute",
                  - "catalog_attribute_facet",
                  - "categories.l1.id",
                  - "categories.l2",
                  - "categories.l2.id",
                  - "categories.l3",
                  - "categories.l3.id",
                  - "category_last",
                  - "filterOnly(categories.l0.id)",
                  - "filterOnly(commercial_operation_ids)",
                  - "filterOnly(model_id)",
                  - "has_1day_delivery",
                  - "has_3x_payment",
                  - "has_free_delivery",
                  - "has_pro_conditions",
                  - "has_relay_delivery",
                  - "is_eco_responsible",
                  - "is_local",
                  - "is_mmf",
                  - "prices.per_item.actual_price.with_vat.as_float",
                  - "prices.per_item.actual_price.without_vat.as_float",
                  - "prices.per_m2.actual_price.with_vat.as_float",
                  - "prices.per_m2.actual_price.without_vat.as_float",
                  - "rating_rounded_down",
                  - "searchable(brand_name)",
                  - "searchable(categories.l0)",
                  - "searchable(categories.last)",
                  - "searchable(categories.last_id)",
                  - "searchable(price)",
                  - "searchable(seller_name)",
                ]
              ~ searchable_attributes    = [
                  - "model_titles",
                  - "default_title",
                  - "brand_name",
                  - "categories.last",
                  - "unordered(model_descriptions)",
                  - "unordered(catalog_attribute)",
                  - "model_id",
                  - "me_id",
                  - "sku",
                  - "categories.l2.id",
                  - "categories.l3.id",
                  - "mpn",
                  - "ean",
                ]
                # (2 unchanged attributes hidden)
            }
    
    
    
    
    
    
    
          ~ ranking_config {
              ~ ranking              = [
                  - "typo",
                  - "geo",
                  - "words",
                  - "filters",
                  - "proximity",
                  - "attribute",
                  - "exact",
                  - "custom",
                ]
                # (3 unchanged attributes hidden)
            }
    
          ~ typos_config {
              ~ disable_typo_tolerance_on_attributes = [
                  - "ean",
                  - "me_id",
                  - "model_descriptions",
                  - "model_id",
                  - "mpn",
                  - "sku",
                ]
                # (5 unchanged attributes hidden)
            }
            # (7 unchanged blocks hidden)
        }
    

    Applying this is fast and does not result in errors, so this is slightly different from #59

    Steps to Reproduce

    Terraform a virtual index as described in the documentation

    Important Factoids

    Nothing comes to mind.

    References

    #59 looks similar

  • Facet changes not applied

    Facet changes not applied

    Terraform Version

    • Terraform version: v0.14.6
    • Provider version: v0.2.9

    Affected Resource(s)

    • algolia_index

    Terraform Configuration Files

    Copy-paste your Terraform configurations here

      ~ resource "algolia_index" "product_index" {
            id                     = "int_products_gb_rating_desc"
            name                   = "int_products_gb_rating_desc"
            # (4 unchanged attributes hidden)
          ~ attributes_config {
              ~ attributes_for_faceting  = [
                  - "filterOnly(private_sale_ids)",
                    # (31 unchanged elements hidden)
                ]
                # (3 unchanged attributes hidden)
            }
            # (9 unchanged blocks hidden)
        }
    

    Expected Behavior

    The facets should change (private_sale_ids)

    Actual Behavior

    Terraform keeps polling, but the change does not appear to happen. Using TF_LOG=DEBUG, I see this:

    ---[ REQUEST ]---------------------------------------
    PUT /1/indexes/int_products_gb_rating_desc/settings HTTP/1.1
    Host: MLNQXJQTYA.algolia.net
    User-Agent: Terraform/0.14.6 (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-algolia/0.2.9;Algolia for Go (3.23.0);Go (go1.17.7)
    Transfer-Encoding: chunked
    Connection: Keep-Alive
    Content-Type: application/json; charset=utf-8
    X-Algolia-Api-Key: *********************************
    X-Algolia-Application-Id: ***********
    Accept-Encoding: gzip
    
    5ea
    {
     "advancedSyntax": false,
     "advancedSyntaxFeatures": [
      "exactPhrase",
      "excludeWords"
     ],
     "allowTyposOnNumericTokens": false,
     "alternativesAsExact": [
      "ignorePlurals",
      "singleWordSynonym"
     ],
     "attributeCriteriaComputedByMinProximity": true,
     "attributesToHighlight": null,
     "attributesToRetrieve": [
      "*"
     ],
     "attributesToSnippet": null,
     "customRanking": [
      "desc(has_ranking_malus)",
      "desc(score_a)",
      "asc(price)",
      "desc(has_free_delivery)",
      "desc(rating)",
      "desc(rating_count)"
     ],
     "decompoundQuery": true,
     "distinct": 1,
     "enableRules": true,
     "exactOnSingleWordQuery": "attribute",
     "highlightPostTag": "\u003c/em\u003e",
     "highlightPreTag": "\u003cem\u003e",
     "hitsPerPage": 60,
     "ignorePlurals": [
      "en"
     ],
     "maxFacetHits": 10,
     "maxValuesPerFacet": 1000,
     "minProximity": 1,
     "minWordSizefor1Typo": 4,
     "minWordSizefor2Typos": 8,
     "paginationLimitedTo": 20000,
     "queryLanguages": [
      "en"
     ],
     "queryType": "prefixLast",
     "ranking": [
      "desc(rating_weighted)",
      "typo",
      "geo",
      "words",
      "filters",
      "proximity",
      "attribute",
      "exact",
      "custom"
     ],
     "removeStopWords": [
      "en"
     ],
     "removeWordsIfNoResults": "allOptional",
     "replaceSynonymsInHighlight": false,
     "replicas": null,
     "responseFields": [
      "*"
     ],
     "restrictHighlightAndSnippetArrays": false,
     "snippetEllipsisText": "",
     "sortFacetValuesBy": "count",
    
     "unretrievableAttributes": [
      "prices.per_item.legacy_unit",
      "unit_price",
      "has_ranking_malus",
      "rating_rounded_down",
      "retail_price",
      "best_offer",
      "unit_type",
      "ean",
      "is_sample",
      "detail_price",
      "rating_weighted",
      "has_sample",
      "model_titles",
      "product_update_time",
      "legacy_unit",
      "article_update_time",
      "document_update_time",
      "mpn"
     ]
    }
    
    0
    
    
    -----------------------------------------------------: timestamp=2022-04-05T15:10:14.474+0200
    2022-04-05T15:10:14.560+0200 [INFO]  plugin.terraform-provider-datadog_v3.6.0: 2022/04/05 15:10:14 [DEBUG] Datadog API Response Details:
    ---[ RESPONSE ]--------------------------------------
    HTTP/2.0 200 OK
    Content-Length: 14
    Alt-Svc: clear
    Cache-Control: no-cache
    Content-Security-Policy: frame-ancestors 'self'; report-uri https://logs.browser-intake-datadoghq.com/api/v2/logs?dd-api-key=pube4f163c23bbf91c16b8f57f56af9fc58&dd-evp-origin=content-security-policy&ddsource=csp-report&ddtags=site%3Adatadoghq.eu
    Content-Type: application/json
    Date: Tue, 05 Apr 2022 13:10:14 GMT
    Pragma: no-cache
    Strict-Transport-Security: max-age=15724800;
    Via: 1.1 google
    X-Content-Type-Options: nosniff
    X-Frame-Options: SAMEORIGIN
    X-Ratelimit-Limit: 12000
    X-Ratelimit-Period: 60
    X-Ratelimit-Remaining: 11924
    X-Ratelimit-Reset: 46
    
    {
     "valid": true
    }
    

    I would expect the PUT request to contain something about facets

    Steps to Reproduce

    Create a plan that changes facets to remove them. Try applying that plan.

    Important Factoids

    Nothing comes to mind. I don't remember trying this in the past though

    References

    Are there any other GitHub issues (open or closed) or Pull Requests that should be linked here? For example:

  • Timeout

    Timeout

    Terraform Version

    • Terraform version: v0.14.6
    • Provider version: v0.2.3

    Affected Resource(s)

    Indexes

    Terraform Configuration Files

    Not relevant

    Expected Behavior

    Polling should be resilient

    Actual Behavior

    The apply often fails after a long duration, and fails with a message that I believe means we are reaching a timeout:

    Error: cannot perform request:
    	error=Get "https://IT3EF5LJ3P-dsn.algolia.net/1/indexes/dev_products_fr_price_asc/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://IT3EF5LJ3P-dsn.algolia.net/1/indexes/dev_products_fr_price_asc/settings?getVersion=2
    

    Steps to Reproduce

    1. Create an index
    2. Add a lot of documents (millions) to it, with big fields so that changing the ranking formula is very slow
    3. try to deploy a change to the ranking formulas

    Important Factoids

    When the failure happens, the next retry is often successful. I suspect the API for monitoring tasks might returned a wrong (cached?) response. Note that last time the failure happened, it happened for many different Algolia DSNs:

    Error: cannot perform request:
    	error=Get "https://5OOEMMXHSW-dsn.algolia.net/1/indexes/prod_products_fr_abtest_candidate/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://5OOEMMXHSW-dsn.algolia.net/1/indexes/prod_products_fr_abtest_candidate/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://5OOEMMXHSW-dsn.algolia.net/1/indexes/prod_products_fr_price_desc/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://5OOEMMXHSW-dsn.algolia.net/1/indexes/prod_products_fr_price_desc/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://Q4BDN6X256-dsn.algolia.net/1/indexes/prod_products_it_price_asc/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://Q4BDN6X256-dsn.algolia.net/1/indexes/prod_products_it_price_asc/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://XWGXUU78C4-dsn.algolia.net/1/indexes/prod_products_fr_rating_desc/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://XWGXUU78C4-dsn.algolia.net/1/indexes/prod_products_fr_rating_desc/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://XWGXUU78C4-dsn.algolia.net/1/indexes/prod_products_fr_abtest_candidate/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://XWGXUU78C4-dsn.algolia.net/1/indexes/prod_products_fr_abtest_candidate/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://5OOEMMXHSW-dsn.algolia.net/1/indexes/prod_products_fr_rating_desc/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://5OOEMMXHSW-dsn.algolia.net/1/indexes/prod_products_fr_rating_desc/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://H1GRCLI846-dsn.algolia.net/1/indexes/prod_products_it_price_asc/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://H1GRCLI846-dsn.algolia.net/1/indexes/prod_products_it_price_asc/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://J898XXD9EY-dsn.algolia.net/1/indexes/prod_products_es_abtest_candidate/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://J898XXD9EY-dsn.algolia.net/1/indexes/prod_products_es_abtest_candidate/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://OOYUMFVMBN-dsn.algolia.net/1/indexes/prod_products_de_rating_desc/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://OOYUMFVMBN-dsn.algolia.net/1/indexes/prod_products_de_rating_desc/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://H1GRCLI846-dsn.algolia.net/1/indexes/prod_products_it_price_desc/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://H1GRCLI846-dsn.algolia.net/1/indexes/prod_products_it_price_desc/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://XWGXUU78C4-dsn.algolia.net/1/indexes/prod_products_fr_price_asc/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://XWGXUU78C4-dsn.algolia.net/1/indexes/prod_products_fr_price_asc/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://6XIMEPSMEE-dsn.algolia.net/1/indexes/prod_products_de_abtest_candidate/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://6XIMEPSMEE-dsn.algolia.net/1/indexes/prod_products_de_abtest_candidate/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://H1GRCLI846-dsn.algolia.net/1/indexes/prod_products_it/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://H1GRCLI846-dsn.algolia.net/1/indexes/prod_products_it/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://XWGXUU78C4-dsn.algolia.net/1/indexes/prod_products_fr_price_desc/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://XWGXUU78C4-dsn.algolia.net/1/indexes/prod_products_fr_price_desc/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://J898XXD9EY-dsn.algolia.net/1/indexes/prod_products_es/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://J898XXD9EY-dsn.algolia.net/1/indexes/prod_products_es/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://XWGXUU78C4-dsn.algolia.net/1/indexes/prod_products_fr/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://XWGXUU78C4-dsn.algolia.net/1/indexes/prod_products_fr/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://Q4BDN6X256-dsn.algolia.net/1/indexes/prod_products_it/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://Q4BDN6X256-dsn.algolia.net/1/indexes/prod_products_it/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://OOYUMFVMBN-dsn.algolia.net/1/indexes/prod_products_de_abtest_candidate/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://OOYUMFVMBN-dsn.algolia.net/1/indexes/prod_products_de_abtest_candidate/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://OOYUMFVMBN-dsn.algolia.net/1/indexes/prod_products_de/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://OOYUMFVMBN-dsn.algolia.net/1/indexes/prod_products_de/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://J898XXD9EY-dsn.algolia.net/1/indexes/prod_products_es_rating_desc/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://J898XXD9EY-dsn.algolia.net/1/indexes/prod_products_es_rating_desc/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://6XIMEPSMEE-dsn.algolia.net/1/indexes/prod_products_de/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://6XIMEPSMEE-dsn.algolia.net/1/indexes/prod_products_de/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://Q4BDN6X256-dsn.algolia.net/1/indexes/prod_products_it_price_desc/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://Q4BDN6X256-dsn.algolia.net/1/indexes/prod_products_it_price_desc/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://H1GRCLI846-dsn.algolia.net/1/indexes/prod_products_it_rating_desc/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://H1GRCLI846-dsn.algolia.net/1/indexes/prod_products_it_rating_desc/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://OOYUMFVMBN-dsn.algolia.net/1/indexes/prod_products_de_price_desc/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://OOYUMFVMBN-dsn.algolia.net/1/indexes/prod_products_de_price_desc/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://6XIMEPSMEE-dsn.algolia.net/1/indexes/prod_products_de_price_desc/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://6XIMEPSMEE-dsn.algolia.net/1/indexes/prod_products_de_price_desc/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://5OOEMMXHSW-dsn.algolia.net/1/indexes/prod_products_fr/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://5OOEMMXHSW-dsn.algolia.net/1/indexes/prod_products_fr/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://JKH73IX9YS-dsn.algolia.net/1/indexes/prod_products_es/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://JKH73IX9YS-dsn.algolia.net/1/indexes/prod_products_es/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://OOYUMFVMBN-dsn.algolia.net/1/indexes/prod_products_de_price_asc/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://OOYUMFVMBN-dsn.algolia.net/1/indexes/prod_products_de_price_asc/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://Q4BDN6X256-dsn.algolia.net/1/indexes/prod_products_it_rating_desc/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://Q4BDN6X256-dsn.algolia.net/1/indexes/prod_products_it_rating_desc/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://6XIMEPSMEE-dsn.algolia.net/1/indexes/prod_products_de_rating_desc/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://6XIMEPSMEE-dsn.algolia.net/1/indexes/prod_products_de_rating_desc/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://J898XXD9EY-dsn.algolia.net/1/indexes/prod_products_es_price_desc/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://J898XXD9EY-dsn.algolia.net/1/indexes/prod_products_es_price_desc/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://6XIMEPSMEE-dsn.algolia.net/1/indexes/prod_products_de_price_asc/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://6XIMEPSMEE-dsn.algolia.net/1/indexes/prod_products_de_price_asc/settings?getVersion=2
      on ../products-index/main.tf line 10, in resource "algolia_index" "product_index":
      10: resource "algolia_index" "product_index" {
    Error: cannot perform request:
    	error=Get "https://H1GRCLI846-dsn.algolia.net/1/indexes/prod_products_it_abtest_candidate/settings?getVersion=2": context deadline exceeded
    	method=GET
    	url=https://H1GRCLI846-dsn.algolia.net/1/indexes/prod_products_it_abtest_candidate/settings?getVersion=2
    

    I have been discussing this internally with Algolia, and they are wondering what timeout value is in use. Also, is there a retry mechanism? Since it failed on many different DSN's, the issue is probably on the side of my company, isn't it?

  • Query suggestion log and log region mismatch

    Query suggestion log and log region mismatch

    Terraform Version

    • Terraform version: v0.14.6
    • Provider version: v0.2.6

    Affected Resource(s)

    • algolia_query_suggestions

    Terraform Configuration Files

    Copy-paste your Terraform configurations here

    resource "algolia_query_suggestions" "main" {
      index_name = format("%s_query_suggestions_%s", var.env_prefix, var.platform)
    
      source_indices {
        index_name  = local.product_index_name
        min_hits    = 5
        min_letters = 4
      }
    
      exclude = local.platform_config[var.platform].excluded_query_suggestions
    
      languages = [local.platform_config[var.platform].language]
    }
    

    Expected Behavior

    The query suggestion index should get created.

    Actual Behavior

    In the past, what happened is that the creation silently failed and then I imported the query suggestion index afterwards. Now, I'm getting a mysterious message: Algolia API error [401] The log processing region does not match

    Steps to Reproduce

    I contacted the support and apparently, this has to do with the region we are using for our indexes mismatching the region we use for our logs (and for the whole app). It seems that this plugin targets query-suggestions.us.algolia.com when it really should target query-suggestions.eu.algolia.com in my case

    Important Factoids

    We are a EU-based company.

    References

    Here is the latest answer from Algolia support, with a more lengthy explanation:

    Query Suggestions indexes are regionalised, ie, you create an index in a given region (us or eu). This is done targeting a specific host, query-suggestions.us.algolia.com for US and query-suggestions.eu.algolia.com for EU. You can find out more information on this in the documentation here.

    We used to not check the regions in the API, enabling you to create Query Suggestions indexes in a region mismatching the log region. We recently added a check on the API to prevent this. That’s why you are receiving [401] The log processing region does not match .

    Looking at your dashboard, log region is indeed set to “DE“.

    This means that you must be trying to create a new index using query-suggestions.us.algolia.com instead of query-suggestions.eu.algolia.com, (see documentation here).

    When using the dashboard you don’t have to worry about the regions. But since the creation of your index seems to be handled manually (ie, through terraform), you must make sure the domain you use matches the log region.

    Additionally, the index “int_query_suggestions_gb“ was created in a different region than the log region. Thus, the index never gets built. Here is an error they found in logs:

    index is being built in different region than where the logs are processed for index "int_query_suggestions_gb" and appID "redacted"

  • attributes_to_highlight not applied

    attributes_to_highlight not applied

    Terraform Version

    • Terraform version: v0.14.16
    • Provider version: v0.5.4

    Affected Resource(s)

    • algolia_index
    • algolia_virtual_index

    Terraform Configuration Files

    Copy-paste your Terraform configurations here

      highlight_and_snippet_config {
        attributes_to_highlight = []
        highlight_pre_tag       = "<em>"
        highlight_post_tag      = "</em>"
      }
    

    Expected Behavior

    attributes_to_highlight should be set to `[]

    Actual Behavior

    attributes_to_highlight is set to null

    Steps to Reproduce

    Create an index with the above configuration.

    Important Factoids

    • I apparently did not get back to you after https://github.com/k-yomo/terraform-provider-algolia/issues/40#issuecomment-940176158 (sorry)
    • setting an attribute works, it's just setting to an empty array that does not work.
    • manually setting attributes_to_highlight to [] via the dashboard results in an empty plan
    • setting attributes_to_highlight to null also results in a empty plan

    References

    https://github.com/k-yomo/terraform-provider-algolia/issues/40

  • API key creation sometimes fails to register in the state

    API key creation sometimes fails to register in the state

    Terraform Version

    • Terraform version: v0.14.6
    • Provider version: v0.2.4

    Affected Resource

    • algolia_api_key

    Terraform Configuration Files

    Copy-paste your Terraform configurations here

    resource "algolia_api_key" "datadog" {
      acl         = ["search"]
      indexes     = [format("%s_*", var.env_prefix)]
      description = "We use datadog to perform synthetic tests"
    }
    # Not currently used in production yet, but should indirectly be in the future.
    resource "algolia_api_key" "manomano_app" {
      acl         = ["search", "listIndexes", "settings"]
      indexes     = [format("%s_*", var.env_prefix)]
      description = "React Native Application (B2B & B2C) https://git.manomano.tech/mobile/manomano-app/manomano-app Shared with EPAM"
    }
    resource "algolia_api_key" "manomano_sf" {
      acl         = ["search", "listIndexes", "settings"]
      indexes     = [format("%s_*", var.env_prefix)]
      description = format("manomano-sf-%s-%s-%s", var.platform, var.market, var.env_prefix)
    }
    resource "algolia_api_key" "ms_ml_search_metadata" {
      count       = var.market == "b2c" ? 1 : 0
      acl         = ["search"]
      indexes     = [format("%s_*", var.env_prefix)]
      description = format("ms.ml-search-metadata-%s-%s-%s", var.platform, var.market, var.env_prefix)
    }
    resource "algolia_api_key" "ms_search" {
      acl         = ["search", "addObject", "deleteObject", "listIndexes", "settings", "editSettings", "browse", "deleteIndex"]
      indexes     = [format("%s_*", var.env_prefix)]
      description = format("ms.search-%s-%s-%s", var.platform, var.market, var.env_prefix)
    }
    resource "algolia_api_key" "msf_homepage_b2c" {
      count       = var.market == "b2c" ? 1 : 0
      acl         = ["search"]
      indexes     = [format("%s_*", var.env_prefix)]
      description = format("msf.homepage-b2c-%s-%s", var.platform, var.env_prefix)
    }
    # Not currently used in production yet, but should indirectly be in the future.
    resource "algolia_api_key" "spartacux" {
      acl         = ["search", "listIndexes", "settings"]
      indexes     = [format("%s_*", var.env_prefix)]
      description = format("spartacux-%s-%s-%s", var.platform, var.market, var.env_prefix)
    }
    resource "algolia_api_key" "task_sitemap_generator" {
      acl         = ["browse"]
      indexes     = [format("%s_*", var.env_prefix)]
      description = format("task.sitemap-generator-%s-%s-%s", var.platform, var.market, var.env_prefix)
    }
    resource "algolia_api_key" "task_sponsored_products_bulk_import" {
      acl         = ["browse"]
      indexes     = [format("%s_*", var.env_prefix)]
      description = format("task.sponsored-products-bulk-import-%s-%s-%s", var.platform, var.market, var.env_prefix)
    }
    

    Expected Behavior

    The keys should be created and the apply successful

    Actual Behavior

    Some keys end up in the state, some other not, and they are created for every run. The following error message appears:

    module.gb-b2c-app.algolia_api_key.ms_ml_search_metadata[0]: Creating...
    module.gb-b2c-app.algolia_api_key.msf_homepage_b2c[0]: Creating...
    module.gb-b2c-app.algolia_api_key.datadog: Creating...
    module.gb-b2c-app.algolia_api_key.ms_search: Creating...
    module.gb-b2c-app.algolia_api_key.manomano_app: Creating...
    module.gb-b2c-app.algolia_api_key.ms_search: Creation complete after 0s [id=1642598564]
    Error: Provider produced inconsistent result after apply
    When applying changes to
    module.gb-b2c-app.algolia_api_key.msf_homepage_b2c[0], provider
    "registry.terraform.io/k-yomo/algolia" produced an unexpected new value: Root
    resource was present, but now absent.
    This is a bug in the provider, which should be reported in the provider's own
    issue tracker.
    Error: Provider produced inconsistent result after apply
    When applying changes to
    module.gb-b2c-app.algolia_api_key.ms_ml_search_metadata[0], provider
    "registry.terraform.io/k-yomo/algolia" produced an unexpected new value: Root
    resource was present, but now absent.
    This is a bug in the provider, which should be reported in the provider's own
    issue tracker.
    Error: Provider produced inconsistent result after apply
    When applying changes to module.gb-b2c-app.algolia_api_key.datadog, provider
    "registry.terraform.io/k-yomo/algolia" produced an unexpected new value: Root
    resource was present, but now absent.
    This is a bug in the provider, which should be reported in the provider's own
    issue tracker.
    Error: Provider produced inconsistent result after apply
    When applying changes to module.gb-b2c-app.algolia_api_key.manomano_app,
    provider "registry.terraform.io/k-yomo/algolia" produced an unexpected new
    value: Root resource was present, but now absent.
    This is a bug in the provider, which should be reported in the provider's own
    issue tracker.
    

    Steps to Reproduce

    Important Factoids

    We are using Metis, a new architecture that is supposed to make Algolia more scalable, and is supposed to be a drop-in replacement.

    I was able to work around this by importing the API mentioned in the error message one by one.

  • highlight_and_snippet_config not imported

    highlight_and_snippet_config not imported

    Terraform Version

    • Terraform version: v0.14.16
    • Provider version: v0.2.1

    Affected Resource(s)

    • algolia_index

    Terraform Configuration Files

    This has to do with the import so… irrelevant?

    Expected Behavior

    After a refactoring, resources name can change. After running terragrunt state rm old-name && terragrunt import new_name index_name, the plan should be empty.

    Actual Behavior

    The plan contains the following:

          + highlight_and_snippet_config {
              + attributes_to_highlight               = [
                  + "model_id",
                ]
              + highlight_post_tag                    = "</em>"
              + highlight_pre_tag                     = "<em>"
              + restrict_highlight_and_snippet_arrays = false
              + snippet_ellipsis_text                 = "…"
            }
    

    Steps to Reproduce

    1. create an index resource with the following block:
          + highlight_and_snippet_config {
              + attributes_to_highlight               = [
                  + "model_id",
                ]
              + highlight_post_tag                    = "</em>"
              + highlight_pre_tag                     = "<em>"
              + restrict_highlight_and_snippet_arrays = false
              + snippet_ellipsis_text                 = "…"
            }
    
    1. apply the plan
    2. remove the resource from the state
    3. import the resource from Algolia
  • Issue template

    Issue template

    Hi!

    After reading the issue template, I just created an issue at https://discuss.hashicorp.com/t/how-to-customize-configuration-for-an-algolia-replica/26976

    I'm not sure if this is really what you want though, as this is a fork of hashicorp/terraform-provider-scaffolding. Maybe you didn't notice there was an issue template and don't actually want people to post there?

  • Why Read-Only algolia_virtual_index languages_config.index_languages ??

    Why Read-Only algolia_virtual_index languages_config.index_languages ??

    The property says Read-Only in the documentation https://registry.terraform.io/providers/k-yomo/algolia/latest/docs/resources/virtual_index#nested-schema-for-languages_config

    I was able to confirm that there is no problem in manual change confirmation and operation from the console. Why Read-Only algolia_virtual_index languages_config.index_languages ??

  • whether virtual replica index is created by `algolia_virtual_index` depends on primary index config

    whether virtual replica index is created by `algolia_virtual_index` depends on primary index config

    When we want to create a virtual index, we actually need to take two steps below.

    • Add virtual replica name to the list of replicas of primary index
    • Add algolia_virtual_index resource

    If we only add algolia_virtual_index resource, it won't create virtual index but create normal index. It would be better if we can encapsulate those steps, and just adding virtual index resource creates a virtual index.

    We can achieve it by adding primary_index_name field to virtual index resource and add replica to primary index behind the scene when we create a virtual index. (Also it might be better to remove replicas field from index resource and force user to use virtual index resource to create a virtual index)

    Terraform Version

    • Terraform version: v1.0.0
    • Provider version: v0.4.1

    Affected Resource(s)

    • algolia_index
    • algolia_virtual_index

    Terraform Configuration Files

    Copy-paste your Terraform configurations here

    resource "algolia_virtual_index" "example_virtual_replica" {
      name = "example_replica"
    
      attributes_config {
        unretrievable_attributes = [
          "author_email"
        ]
        attributes_to_retrieve = ["*"]
      }
    
      ranking_config {
        custom_ranking = ["desc(likes)"]
      }
    
      faceting_config {
        max_values_per_facet = 50
        sort_facet_values_by = "alpha"
      }
    
      languages_config {
        remove_stop_words_for = ["en"]
      }
    }
    

    Expected Behavior

    Virtual replica index should be created.

    Actual Behavior

    Normal index is created.

    Important Factords

    References

    • PR which introduced virtual index: https://github.com/k-yomo/terraform-provider-algolia/pull/98
  • Algolia API error [403] The following settings are forbidden in virtual replicas: decompoundedAttributes

    Algolia API error [403] The following settings are forbidden in virtual replicas: decompoundedAttributes

    Terraform Version

    • Terraform version: v0.14.6
    • Provider version: v0.5.5

    Affected Resource(s)

    • algolia_virtual_index

    Terraform Configuration Files

    Here is the terraform block for the resource with the issue. You will notice it does not mention decompoundedAttributes

    resource "algolia_virtual_index" "product_index" {
      name               = var.index_name
      primary_index_name = var.primary
    
      typos_config {
        min_word_size_for_1_typo  = 4
        min_word_size_for_2_typos = 8
        typo_tolerance            = "min"
      }
    
      pagination_config {
        hits_per_page         = 60
        pagination_limited_to = 20000
      }
    
      faceting_config {
        max_values_per_facet = 1000
      }
    
      languages_config {
        ignore_plurals_for    = [var.language]
        remove_stop_words_for = [var.language]
        query_languages       = [var.language]
      }
    
      advanced_config {
        response_fields                              = ["*"]
        attribute_criteria_computed_by_min_proximity = true
        distinct                                     = 1
      }
    
      highlight_and_snippet_config {
        attributes_to_highlight = ["model_titles"]
        highlight_pre_tag       = "<em>"
        highlight_post_tag      = "</em>"
      }
    
      attributes_config {
        attributes_to_retrieve = ["*"]
    
        unretrievable_attributes = [
          "document_update_time",
          "ean",
          "has_ranking_malus",
          "model_titles",
          "mpn",
          "rating_rounded_down",
          "rating_weighted",
        ]
      }
    
      query_strategy_config {
        remove_words_if_no_results = "allOptional"
        query_type                 = "prefixLast"
        alternatives_as_exact = [
          "ignorePlurals",
          "singleWordSynonym"
        ]
        advanced_syntax_features = [
          "exactPhrase",
          "excludeWords",
        ]
      }
    
      ranking_config {
        custom_ranking       = var.custom_ranking
        relevancy_strictness = 0
      }
    }
    

    Here is the Terraform declaration for the primary index of that virtual index:

    resource "algolia_index" "product_index" {
      name               = var.index_name
      primary_index_name = var.primary
    
      typos_config {
        min_word_size_for_1_typo      = 4
        min_word_size_for_2_typos     = 8
        allow_typos_on_numeric_tokens = false
        disable_typo_tolerance_on_attributes = [
          "ean",
          "me_id",
          "model_descriptions",
          "model_id",
          "mpn",
          "sku"
        ]
        typo_tolerance = "min"
      }
    
      pagination_config {
        hits_per_page         = 60
        pagination_limited_to = 20000
      }
    
      faceting_config {
        max_values_per_facet = 1000
      }
    
      languages_config {
        ignore_plurals_for = [var.language]
        dynamic "decompounded_attributes" {
          for_each = var.language == "de" ? [1] : []
          content {
            language = var.language
            attributes = [
              "categories.last",
              "default_title",
              "model_titles"
            ]
          }
        }
        remove_stop_words_for = [var.language]
        query_languages       = [var.language]
        custom_normalization  = var.custom_normalization
      }
    
      advanced_config {
        response_fields                              = ["*"]
        attribute_criteria_computed_by_min_proximity = true
        attribute_for_distinct                       = "article_id"
        distinct                                     = 1
      }
    
      highlight_and_snippet_config {
        attributes_to_highlight = ["model_titles"]
        highlight_pre_tag       = "<em>"
        highlight_post_tag      = "</em>"
      }
    
      attributes_config {
        attributes_to_retrieve = ["*"]
    
        searchable_attributes = var.searchable_attributes
    
        attributes_for_faceting = concat([
          "banner.alternate.categories",
          "banner.categories",
          "catalog_attribute",
          "catalog_attribute_facet",
          "categories.l1.id",
          "categories.l2",
          "categories.l2.id",
          "categories.l3",
          "categories.l3.id",
          "category_last",
          "color",
          "filterOnly(categories.l0.id)",
          "filterOnly(model_id)",
          "filterOnly(commercial_operation_ids)",
          "has_1day_delivery",
          "has_3x_payment",
          "has_coupon",
          "has_free_delivery",
          "has_pro_conditions",
          "has_relay_delivery",
          "is_eco_responsible",
          "is_local",
          "is_mmf",
          "prices.per_item.actual_price.with_vat.as_float",
          "prices.per_item.actual_price.without_vat.as_float",
          "prices.per_m2.actual_price.with_vat.as_float",
          "prices.per_m2.actual_price.without_vat.as_float",
          "rating_rounded_down",
          "searchable(brand_name)",
          "searchable(categories.l0)",
          "searchable(categories.last)",
          "searchable(categories.last_id)",
          "searchable(price)",
          "searchable(seller_name)"
        ], var.extra_attributes_for_faceting)
    
        unretrievable_attributes = [
          "document_update_time",
          "ean",
          "has_ranking_malus",
          "model_titles",
          "mpn",
          "rating_rounded_down",
          "rating_weighted",
        ]
      }
    
      query_strategy_config {
        remove_words_if_no_results = "allOptional"
        query_type                 = "prefixLast"
        alternatives_as_exact = [
          "ignorePlurals",
          "singleWordSynonym"
        ]
        advanced_syntax_features = [
          "exactPhrase",
          "excludeWords",
        ]
      }
    
      ranking_config {
        ranking        = var.ranking
        custom_ranking = var.custom_ranking
      }
    }
    

    That one does mention decompounded_attributes

    Expected Behavior

    The terraforming should be successful

    Actual Behavior

    It errors out with the message in the title

    Steps to Reproduce

    Attempt to terraform a virtual replica with the above config

    Important Factoids

    • I just upgraded to v0.5.5
    • I have another resource type (algolia_index) declared, which mentions decompounded_attributes, but when I remove it, I still get the error.
    • the issues seems to exclusively affect indices that are replicas of indices having that decompounded_attributes setting.
  • Sub-optimal way of creating replicas

    Sub-optimal way of creating replicas

    During yesterday's troubleshooting I mentioned in #134 with @julienpa and @godelized, they told me changing the primary to add replicas one by one was not the best way to proceed and had significant overhead. They hinting that one should gather the names of all replicas and perform a single set settings call on the primary. I don't have all the details, but they will comment on this issue.

  • Replica index can't be deleted

    Replica index can't be deleted

    Currently we can't delete virtual index from terraform. It seems like the API issue, since it can't be deleted from the other clients too. https://github.com/algolia/algoliasearch-client-javascript/issues/1377

    NOTE:

    • We are following the below steps to delete replica index. https://www.algolia.com/doc/guides/managing-results/refine-results/sorting/how-to/deleting-replicas/?client=go#using-the-api

    • Skipping some of the tests due to the issue. https://github.com/k-yomo/terraform-provider-algolia/blob/main/internal/provider/resource_index_test.go#L87-L91 https://github.com/k-yomo/terraform-provider-algolia/blob/main/internal/provider/resource_virtual_index_test.go#L10-L14

    Workaround would be deleting replica from console, and remove from the state with terraform state rm.

    Terraform Version

    • Terraform version: v1.0.0
    • Provider version: v0.5.0

    Affected Resource(s)

    • algolia_index
    • algolia_virtual_index

    Terraform Configuration Files

    # algolia_index.example_replica will be destroyed
    - resource "algolia_index" "example_replica" {
        - id                     = "test" -> null
        - name                   = "test" -> null
        - virtual                = false -> null
        ...
    }
    

    Expected Behavior

    Replica index should be deleted when we delete a replica index resource.

    Actual Behavior

    We'll get the following error.

    Algolia API error [403] cannot apply a add object request on a replica index
    

    Steps to Reproduce

    Deleting replica index resource.

    Important Factoids

    References

    • https://github.com/algolia/algoliasearch-client-javascript/issues/1377
Terraform Provider for cascading runs across multiple workspaces.

Terraform Multispace Provider The multispace Terraform provider implements resources to help work with multi-workspace workflows in Terraform Cloud (o

Oct 25, 2022
Terraform Provider for PGP Actions

Terraform Provider PGP Warning: Use of this provider will result in secrets being in terraform state in PLAIN TEXT (aka NOT ENCRYPTED). You've been wa

Sep 30, 2022
Terraform provider for OCM

Terraform provider for OCM Build To build the provider use the make command. Use To use the provider first build and install it: $ make install Then g

Nov 11, 2021
Pulumi Terraform provider for Artifactory

Terraform Bridge Provider Boilerplate This repository contains boilerplate code for building a new Pulumi provider which wraps an existing Terraform p

Aug 11, 2022
🌍 📋 A web dashboard to inspect Terraform States
 🌍 📋 A web dashboard to inspect Terraform States

?? ?? A web dashboard to inspect Terraform States

Jan 1, 2023
OPG sirius supervision firm deputy hub: Managed by opg-org-infra & Terraform

OPG sirius supervision firm deputy hub: Managed by opg-org-infra & Terraform

Jan 10, 2022
A boilerplate showing how to create a Pulumi component provider written in Go

xyz Pulumi Component Provider (Go) This repo is a boilerplate showing how to create a Pulumi component provider written in Go. You can search-replace

Mar 4, 2022
create a provider to get atlassian resources

Terraform Provider Scaffolding This repository is a template for a Terraform provider. It is intended as a starting point for creating Terraform provi

Dec 31, 2021
Apple Push Notification (APN) Provider library for Go 1.6 and HTTP/2.

Apple Push Notification (APN) Provider library for Go 1.6 and HTTP/2. Send remote notifications to iOS, macOS, tvOS and watchOS. Buford can also sign push packages for Safari notifications and Wallet passes.

Dec 6, 2021
Terraform-provider-e2e-network - Terraform Provider Scaffolding (Terraform Plugin SDK)

This template repository is built on the Terraform Plugin SDK. The template repository built on the Terraform Plugin Framework can be found at terraform-provider-scaffolding-framework.

Jan 19, 2022
Terraform-equinix-migration-tool - Tool to migrate code from Equinix Metal terraform provider to Equinix terraform provider

Equinix Terraform Provider Migration Tool This tool targets a terraform working

Feb 15, 2022
Terraform provider to help with various AWS automation tasks (mostly all that stuff we cannot accomplish with the official AWS terraform provider)
Terraform provider to help with various AWS automation tasks (mostly all that stuff we cannot accomplish with the official AWS terraform provider)

terraform-provider-awsutils Terraform provider for performing various tasks that cannot be performed with the official AWS Terraform Provider from Has

Dec 8, 2022
Terraform Provider for Azure (Resource Manager)Terraform Provider for Azure (Resource Manager)
Terraform Provider for Azure (Resource Manager)Terraform Provider for Azure (Resource Manager)

Terraform Provider for Azure (Resource Manager) Version 2.x of the AzureRM Provider requires Terraform 0.12.x and later, but 1.0 is recommended. Terra

Oct 16, 2021
Terraform-provider-mailcow - Terraform provider for Mailcow

Terraform Provider Scaffolding (Terraform Plugin SDK) This template repository i

Dec 31, 2021
Terraform-provider-buddy - Terraform Buddy provider For golang

Terraform Provider for Buddy Documentation Requirements Terraform >= 1.0.11 Go >

Jan 5, 2022
Terraform-provider-vercel - Terraform Vercel Provider With Golang

Vercel Terraform Provider Website: https://www.terraform.io Documentation: https

Dec 14, 2022
Terraform-provider-age - Age Terraform Provider with golang

Age Terraform Provider This provider lets you generate an Age key pair. Using th

Feb 15, 2022
Use SQL to instantly query Algolia indexes and configuration. Open source CLI. No DB required

Use SQL to instantly query Algolia indexes and configuration. Open source CLI. No DB required

Oct 1, 2022
Terraform-in-Terraform: Execute Modules directly from the Terraform Registry

Terraform-In-Terraform Provider This provider allows running Terraform in Terraform. This might seem insane but there are some edge cases where it com

Dec 25, 2022