{"id":42082195,"url":"https://github.com/cloudify-cosmo/cloudify-terraform-plugin","last_synced_at":"2026-01-26T10:07:03.493Z","repository":{"id":221375022,"uuid":"752736235","full_name":"cloudify-cosmo/cloudify-terraform-plugin","owner":"cloudify-cosmo","description":"Cloudify Terraform Plugin","archived":false,"fork":false,"pushed_at":"2024-09-09T16:23:06.000Z","size":534,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-09-09T20:15:35.193Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudify-cosmo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.txt","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-04T17:02:54.000Z","updated_at":"2024-09-09T16:22:27.000Z","dependencies_parsed_at":"2024-03-21T18:48:48.014Z","dependency_job_id":"99adcb09-d397-4172-af60-d335adef62da","html_url":"https://github.com/cloudify-cosmo/cloudify-terraform-plugin","commit_stats":null,"previous_names":["cloudify-cosmo/cloudify-terraform-plugin"],"tags_count":82,"template":false,"template_full_name":null,"purl":"pkg:github/cloudify-cosmo/cloudify-terraform-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudify-cosmo%2Fcloudify-terraform-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudify-cosmo%2Fcloudify-terraform-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudify-cosmo%2Fcloudify-terraform-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudify-cosmo%2Fcloudify-terraform-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudify-cosmo","download_url":"https://codeload.github.com/cloudify-cosmo/cloudify-terraform-plugin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudify-cosmo%2Fcloudify-terraform-plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28774299,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T09:42:00.929Z","status":"ssl_error","status_checked_at":"2026-01-26T09:42:00.591Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-26T10:07:02.751Z","updated_at":"2026-01-26T10:07:03.478Z","avatar_url":"https://github.com/cloudify-cosmo.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"**This project is under development** \n\n# Cloudify Terraform Plugin\n\nThis plugin provides the following functionality:\n\n* Installation, configuration and uninstallation of Terraform itself\n    * Terraform executable\n    * Terraform providers and plugins\n* Representation of Terraform modules as Cloudify nodes\n* Refreshing Terraform state from the cloud\n* Updating Terraform state and applying differences on the cloud\n\n## Prerequisites\n\nThe Terraform plugin can work with a pre-existing Terraform installation, or it can create a Terraform\ninstallation for you. In order to use a pre-existing Terraform installation, you will need to provide\nthe relevant paths when defining the Terraform node templates (see below).\n\n## Module Source Specification\n\nWhen defining a source for a Terraform URL, you can specify any of the following:\n\n* URL to a Zip file\n* URL to a `tar.gz` file\n* Path to a Zip file\n* Path to a `tar.gz` file\n* URL to a Git repository (must end with `.git`)\n\n## Node Types\n\nTwo node types are provided:\n\n* `cloudify.nodes.terraform`: represents the Terraform installation\n* `cloudify.nodes.terraform.Module`: represents a Terraform module\n\nRefer to the documentation in [plugin.yaml](plugin.yaml) for more information about the node\ntypes' properties.\n\n### `cloudify.nodes.terraform.Module`\n\nThis node type represents a Terraform module. Its lifecycle consists of:\n\n* `create`: initializes Terraform by calling `terraform init` and `terraform plan`.\n* `configure`: executes `terraform state pull`\n* `start`: executes `terraform apply`\n* `delete`: executes `terraform destroy`\n\nAt the end of `start`, a runtime property by the name `resources` is being set on the node instance,\ncontaining the exact dictionary provided by Terraform, representing the state.\n\nIn addition, certain day-two operations are provided:\n\n* `terraform.reload`: reloads the template, either from its original location or from an alternative\n  location.\n* `terraform.refresh`: calls `terraform state pull`. \n\nThe `resources` runtime property is updated after each of the aforementioned day-two operations.\n\n## Workflows\n\nThe plugin provides the following workflows:\n\n* `refresh_terraform_resources`: a simple wrapper for the `terraform.refresh` operation.\n* `reload_terraform_template`: a simple wrapper for the `terraform.reload` operation.\n\nThese workflows, by default, call their relevant wrapped operation for all node instances of the\nTerraform Module type in the current deployment.\n\nIf you have more than one Terraform modules in the same blueprint, you can narrow down the scope of the\nworkflows by specifying either the `node_instance_ids` or `node_ids` parameters to the workflows.\n\n### Workflow Examples\n\n```bash\ncfy executions start refresh_terraform_resources -d dep_1\n```\n\nThis will execute the \"refresh\" day-two operation on all node instances inside `dep_1` that represent Terraform\nmodules.\n\n```bash\ncfy executions start refresh_terraform_resources -d dep_1 -p node_ids=[tf_module_1]\n```\n\nThis will execute the \"refresh\" day-two operation on all node instances that belong to the `tf_module_1` node\ntemplate.\n\n## Blueprint Examples\n\nFor official blueprint examples using this Cloudify plugin, please see [Cloudify Community Blueprints Examples](https://github.com/cloudify-community/blueprint-examples/).\n\n## To Do\n\n  * Create a Terraform [Backend Service using HTTP Node Type](https://www.terraform.io/docs/backends/types/http.html).\n    * Package in the plugin w/ a node type.\n    * The service should run as a daemon.\n    * Exposing Terraform resources via Terraform outputs should trigger `execute_resource` workflow on those resources.\n    * This should enable a user to interact with Terraform and Cloudify from Terraform CLI.\n  * Support Multiple Modules.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudify-cosmo%2Fcloudify-terraform-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudify-cosmo%2Fcloudify-terraform-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudify-cosmo%2Fcloudify-terraform-plugin/lists"}