{"id":13505893,"url":"https://github.com/devopsmakers/xterrafile","last_synced_at":"2025-09-30T04:32:29.640Z","repository":{"id":51697905,"uuid":"173404981","full_name":"devopsmakers/xterrafile","owner":"devopsmakers","description":"XTerrafile is a Go tool for managing vendored modules and formulas using a YAML file","archived":true,"fork":false,"pushed_at":"2021-06-11T13:46:12.000Z","size":7484,"stargazers_count":66,"open_issues_count":13,"forks_count":11,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-16T11:05:13.835Z","etag":null,"topics":["devops-tools","go","golang","terrafile","terraform","terraform-modules"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devopsmakers.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-03-02T04:55:14.000Z","updated_at":"2023-01-28T08:22:11.000Z","dependencies_parsed_at":"2022-08-30T04:22:22.652Z","dependency_job_id":null,"html_url":"https://github.com/devopsmakers/xterrafile","commit_stats":null,"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devopsmakers%2Fxterrafile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devopsmakers%2Fxterrafile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devopsmakers%2Fxterrafile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devopsmakers%2Fxterrafile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devopsmakers","download_url":"https://codeload.github.com/devopsmakers/xterrafile/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234702069,"owners_count":18873824,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["devops-tools","go","golang","terrafile","terraform","terraform-modules"],"created_at":"2024-08-01T00:01:16.435Z","updated_at":"2025-09-30T04:32:22.937Z","avatar_url":"https://github.com/devopsmakers.png","language":"Go","funding_links":[],"categories":["Tools"],"sub_categories":["Miscellaneous","Community providers"],"readme":"# NO LONGER MAINTAINED\nPlease consider using `vendir`: https://carvel.dev/vendir/\n\n---\n\n# XTerrafile [![Build Status](https://circleci.com/gh/devopsmakers/xterrafile.svg?style=shield)](https://circleci.com/gh/devopsmakers/xterrafile) [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fdevopsmakers%2Fxterrafile.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fdevopsmakers%2Fxterrafile?ref=badge_shield) [![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org)\n\n`xterrafile` is a binary written in Go to manage external modules from various sources for use with (but not limited to) Terraform. See this [article](http://bensnape.com/2016/01/14/terraform-design-patterns-the-terrafile/) for more information on how it was introduced in a Ruby rake task.\n\nInspired by:\n* https://github.com/coretech/terrafile\n* https://github.com/claranet/python-terrafile\n\n## How to install\n\n### Requirements\n* `git`\n\n### macOS\n\n```sh\nbrew tap devopsmakers/xterrafile \u0026\u0026 brew install xterrafile\n```\n\n### Linux\nDownload your preferred flavour from the [releases](https://github.com/devopsmakers/xterrafile/releases/latest) page and install manually.\n\nFor example:\n```sh\ncurl -L https://github.com/devopsmakers/xterrafile/releases/download/v{VERSION}/xterrafile_{VERSION}_Linux_x86_64.tar.gz | tar xz -C /usr/local/bin\n```\n\n## How to use\nBy default, `xterrafile` expects a file named `./Terrafile` which will contain your terraform module dependencies in YAML format.\n\nSpecifying modules in your `Terrafile`:\n```\n# Terraform Registry module\nterraform-digitalocean-droplet:\n  source: \"terraform-digitalocean-modules/droplet/digitalocean\"\n  version: \"0.1.7\" // If version is empty, the latest will be fetched\n\n# Git module (HTTPS)\nterraform-digitalocean-droplet:\n  source: \"https://github.com/terraform-digitalocean-modules/terraform-digitalocean-droplet.git\"\n  // No version will checkout default branch (usually master)\n\n# Git module (SSH + Tag)\nterraform-digitalocean-droplet:\n  source: \"git@github.com:terraform-digitalocean-modules/terraform-digitalocean-droplet.git\"\n  version: \"v0.1.7\" // Checkout tags\n\n# Git module (HTTPS + Branch as url parameter)\nterraform-digitalocean-droplet:\n  source: \"https://github.com/terraform-digitalocean-modules/terraform-digitalocean-droplet.git?ref=new_feature\"\n\n# Git module (SSH + Commit)\nterraform-digitalocean-droplet:\n  source: \"git@github.com:terraform-digitalocean-modules/terraform-digitalocean-droplet.git\"\n  version: \"2e6b9729f3f6ea3ef5190bac0b0e1544a01fd80f\" // Checkout a commit\n\n# Get a path from within a Git monorepo\nterraform-digitalocean-droplet:\n  source: \"https://github.com/terraform-digitalocean-modules/terraform-digitalocean-droplet.git\"\n  version: \"v0.1.7\"\n  path: \"examples/simple\"\n\n# Get a path from within a Git monorepo - alternate syntax\nterraform-digitalocean-droplet:\n  source: \"https://github.com/terraform-digitalocean-modules/terraform-digitalocean-droplet.git//examples/simple?ref=v0.1.7\"\n\n# Compressed archive (extracting a directory from inside archive)\nterraform-digitalocean-droplet:\n  source: \"https://github.com/terraform-digitalocean-modules/terraform-digitalocean-droplet/archive/v0.1.7.tar.gz//terraform-digitalocean-droplet-0.1.7\"\n\n# Local directory module\nterraform-digitalocean-droplet:\n  source: \"../../modules/terraform-digitalocean-droplet\"\n```\n\nYou can specify modules using Terraform's `source` specifications:\nhttps://www.terraform.io/docs/modules/sources.html\n\n### Versions\nThe `version` can be a tag, a branch or a commit hash. By default, `xterrafile`\nwill checkout the default branch of a module which is usually `master`.\n\nWhen using modules from a Terraform registry you can specify version ranges like:\n\n- `\u003c1.0.0` Less than `1.0.0`\n- `\u003c=1.0.0` Less than or equal to `1.0.0`\n- `\u003e1.0.0` Greater than `1.0.0`\n- `\u003e=1.0.0` Greater than or equal to `1.0.0`\n- `1.0.0`, `=1.0.0`, `==1.0.0` Equal to `1.0.0`\n- `!1.0.0`, `!=1.0.0` Not equal to `1.0.0`. Excludes version `1.0.0`.\n\nNote that spaces between the operator and the version will be gracefully tolerated.\n\nA `Range` can link multiple `Ranges` separated by space:\n\nRanges can be linked by logical AND:\n\n  - `\u003e1.0.0 \u003c2.0.0` would match between both ranges, so `1.1.1` and `1.8.7` but not `1.0.0` or `2.0.0`\n  - `\u003e1.0.0 \u003c3.0.0 !2.0.3-beta.2` would match every version between `1.0.0` and `3.0.0` except `2.0.3-beta.2`\n\nRanges can also be linked by logical OR:\n\n  - `\u003c2.0.0 || \u003e=3.0.0` would match `1.x.x` and `3.x.x` but not `2.x.x`\n\nAND has a higher precedence than OR. It's not possible to use brackets.\n\nRanges can be combined by both AND and OR\n\n  - `\u003e1.0.0 \u003c2.0.0 || \u003e3.0.0 !4.2.1` would match `1.2.3`, `1.9.9`, `3.1.1`, but not `4.2.1`, `2.1.1`\n\n\n### Module Download Location\nModules will be downloaded to `./vendor/modules/` by default.\n\n## Example Usage\nHelp:\n```\nxterrafile help\nManage vendored modules with a YAML file.\n\nUsage:\n  xterrafile [command]\n\nAvailable Commands:\n  help        Help about any command\n  install     Installs the modules in your Terrafile\n  version     Show version information for xterrafile\n\nFlags:\n  -d, --directory string   module directory (default \"vendor/modules\")\n  -f, --file string        config file (default \"Terrafile\")\n  -h, --help               help for xterrafile\n\nUse \"xterrafile [command] --help\" for more information about a command.\n```\n\nDefaults:\n```\nxterrafile install\n```\n\nCustom \"Terrafile\":\n```\nxterrafile -f Saltfile install\n```\n\nCustom \"Terrafile\" and custom download directory:\n```\nxterrafile -f Saltfile -d /srv/formulas install\n```\n\n\n## License\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fdevopsmakers%2Fxterrafile.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fdevopsmakers%2Fxterrafile?ref=badge_large)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevopsmakers%2Fxterrafile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevopsmakers%2Fxterrafile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevopsmakers%2Fxterrafile/lists"}