All Projects → devopsmakers → xterrafile

devopsmakers / xterrafile

Licence: MIT license
XTerrafile is a Go tool for managing vendored modules and formulas using a YAML file

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to xterrafile

Anteater
Anteater - CI/CD Gate Check Framework
Stars: ✭ 174 (+163.64%)
Mutual labels:  devops-tools
Vagrant Openstack Provider
Use Vagrant to manage OpenStack Cloud instances.
Stars: ✭ 229 (+246.97%)
Mutual labels:  devops-tools
terraform-aws-ecs-web-service
A Terraform module to create an Amazon Web Services (AWS) EC2 Container Service (ECS) service associated with an Application Load Balancer (ALB).
Stars: ✭ 26 (-60.61%)
Mutual labels:  terraform-modules
Devops Patch
A Patch for Dev-Ops community https://t.me/devOpsPatch
Stars: ✭ 193 (+192.42%)
Mutual labels:  devops-tools
Rocket
Automated software delivery as fast and easy as possible 🚀
Stars: ✭ 217 (+228.79%)
Mutual labels:  devops-tools
Miller
Miller is like awk, sed, cut, join, and sort for name-indexed data such as CSV, TSV, and tabular JSON
Stars: ✭ 4,633 (+6919.7%)
Mutual labels:  devops-tools
Devspace
DevSpace - The Fastest Developer Tool for Kubernetes ⚡ Automate your deployment workflow with DevSpace and develop software directly inside Kubernetes.
Stars: ✭ 2,559 (+3777.27%)
Mutual labels:  devops-tools
kube-plugins
a repository for plugins for kubernetes
Stars: ✭ 26 (-60.61%)
Mutual labels:  devops-tools
Simple Devops Project
Stars: ✭ 215 (+225.76%)
Mutual labels:  devops-tools
terraform-aws-labels
This terraform module is designed to generate consistent label names and tags for resources. You can use terraform-labels to implement a strict naming convention.
Stars: ✭ 32 (-51.52%)
Mutual labels:  terraform-modules
Sematext Agent Docker
Sematext Docker Agent - host + container metrics, logs & event collector
Stars: ✭ 194 (+193.94%)
Mutual labels:  devops-tools
Kubefwd
Bulk port forwarding Kubernetes services for local development.
Stars: ✭ 2,713 (+4010.61%)
Mutual labels:  devops-tools
ansibleconnect
Connect to all hosts from the inventory with one command
Stars: ✭ 25 (-62.12%)
Mutual labels:  devops-tools
Awesome Sre Tools
A curated list of Site Reliability and Production Engineering Tools
Stars: ✭ 186 (+181.82%)
Mutual labels:  devops-tools
terraform-aws-ssm-parameter-store
Terraform module to populate AWS Systems Manager (SSM) Parameter Store with values from Terraform. Works great with Chamber.
Stars: ✭ 87 (+31.82%)
Mutual labels:  terraform-modules
Marmot
Marmot workflow execution engine
Stars: ✭ 174 (+163.64%)
Mutual labels:  devops-tools
Bivac
🏕 📦 Backup Interface for Volumes Attached to Containers
Stars: ✭ 245 (+271.21%)
Mutual labels:  devops-tools
terraform-aws-nat-instance
Terraform module to provision a NAT Instance using an Auto Scaling Group and Spot Instance from $1/month
Stars: ✭ 126 (+90.91%)
Mutual labels:  terraform-modules
terraform-aws-influxdb
Deploys InfluxDB Enterprise to AWS
Stars: ✭ 29 (-56.06%)
Mutual labels:  terraform-modules
terraform-github-organization
A Terraform module to manage GitHub Organizations. https://github.com/
Stars: ✭ 53 (-19.7%)
Mutual labels:  terraform-modules

NO LONGER MAINTAINED

Please consider using vendir: https://carvel.dev/vendir/


XTerrafile Build Status FOSSA Status Conventional Commits

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 for more information on how it was introduced in a Ruby rake task.

Inspired by:

How to install

Requirements

  • git

macOS

brew tap devopsmakers/xterrafile && brew install xterrafile

Linux

Download your preferred flavour from the releases page and install manually.

For example:

curl -L https://github.com/devopsmakers/xterrafile/releases/download/v{VERSION}/xterrafile_{VERSION}_Linux_x86_64.tar.gz | tar xz -C /usr/local/bin

How to use

By default, xterrafile expects a file named ./Terrafile which will contain your terraform module dependencies in YAML format.

Specifying modules in your Terrafile:

# Terraform Registry module
terraform-digitalocean-droplet:
  source: "terraform-digitalocean-modules/droplet/digitalocean"
  version: "0.1.7" // If version is empty, the latest will be fetched

# Git module (HTTPS)
terraform-digitalocean-droplet:
  source: "https://github.com/terraform-digitalocean-modules/terraform-digitalocean-droplet.git"
  // No version will checkout default branch (usually master)

# Git module (SSH + Tag)
terraform-digitalocean-droplet:
  source: "[email protected]:terraform-digitalocean-modules/terraform-digitalocean-droplet.git"
  version: "v0.1.7" // Checkout tags

# Git module (HTTPS + Branch as url parameter)
terraform-digitalocean-droplet:
  source: "https://github.com/terraform-digitalocean-modules/terraform-digitalocean-droplet.git?ref=new_feature"

# Git module (SSH + Commit)
terraform-digitalocean-droplet:
  source: "[email protected]:terraform-digitalocean-modules/terraform-digitalocean-droplet.git"
  version: "2e6b9729f3f6ea3ef5190bac0b0e1544a01fd80f" // Checkout a commit

# Get a path from within a Git monorepo
terraform-digitalocean-droplet:
  source: "https://github.com/terraform-digitalocean-modules/terraform-digitalocean-droplet.git"
  version: "v0.1.7"
  path: "examples/simple"

# Get a path from within a Git monorepo - alternate syntax
terraform-digitalocean-droplet:
  source: "https://github.com/terraform-digitalocean-modules/terraform-digitalocean-droplet.git//examples/simple?ref=v0.1.7"

# Compressed archive (extracting a directory from inside archive)
terraform-digitalocean-droplet:
  source: "https://github.com/terraform-digitalocean-modules/terraform-digitalocean-droplet/archive/v0.1.7.tar.gz//terraform-digitalocean-droplet-0.1.7"

# Local directory module
terraform-digitalocean-droplet:
  source: "../../modules/terraform-digitalocean-droplet"

You can specify modules using Terraform's source specifications: https://www.terraform.io/docs/modules/sources.html

Versions

The version can be a tag, a branch or a commit hash. By default, xterrafile will checkout the default branch of a module which is usually master.

When using modules from a Terraform registry you can specify version ranges like:

  • <1.0.0 Less than 1.0.0
  • <=1.0.0 Less than or equal to 1.0.0
  • >1.0.0 Greater than 1.0.0
  • >=1.0.0 Greater than or equal to 1.0.0
  • 1.0.0, =1.0.0, ==1.0.0 Equal to 1.0.0
  • !1.0.0, !=1.0.0 Not equal to 1.0.0. Excludes version 1.0.0.

Note that spaces between the operator and the version will be gracefully tolerated.

A Range can link multiple Ranges separated by space:

Ranges can be linked by logical AND:

  • >1.0.0 <2.0.0 would match between both ranges, so 1.1.1 and 1.8.7 but not 1.0.0 or 2.0.0
  • >1.0.0 <3.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

Ranges can also be linked by logical OR:

  • <2.0.0 || >=3.0.0 would match 1.x.x and 3.x.x but not 2.x.x

AND has a higher precedence than OR. It's not possible to use brackets.

Ranges can be combined by both AND and OR

  • >1.0.0 <2.0.0 || >3.0.0 !4.2.1 would match 1.2.3, 1.9.9, 3.1.1, but not 4.2.1, 2.1.1

Module Download Location

Modules will be downloaded to ./vendor/modules/ by default.

Example Usage

Help:

xterrafile help
Manage vendored modules with a YAML file.

Usage:
  xterrafile [command]

Available Commands:
  help        Help about any command
  install     Installs the modules in your Terrafile
  version     Show version information for xterrafile

Flags:
  -d, --directory string   module directory (default "vendor/modules")
  -f, --file string        config file (default "Terrafile")
  -h, --help               help for xterrafile

Use "xterrafile [command] --help" for more information about a command.

Defaults:

xterrafile install

Custom "Terrafile":

xterrafile -f Saltfile install

Custom "Terrafile" and custom download directory:

xterrafile -f Saltfile -d /srv/formulas install

License

FOSSA Status

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].