| name | mars |
| description | Use the mars infrastructure tool for terraform, ansible, and packer operations |
Mars CLI Reference
Mars wraps terraform, ansible, and packer in Docker with environment management.
Command Structure
mars <env> <command> [options]
Where <env> is the target environment (e.g., dev, staging, prod, default).
Terraform Commands
mars <env> init
mars <env> init --upgrade
mars <env> init --reconfigure
mars <env> plan
mars <env> plan --apply
mars <env> plan --target=<resource>
mars <env> plan --destroy
mars <env> apply
mars <env> apply --approve
mars <env> destroy
mars <env> terraform output <name>
mars <env> new-workspace
mars <env> import <addr> <id>
mars <env> taint <resource>
Ansible Commands
mars <env> ansible-playbook playbook.yaml
mars <env> ansible-playbook -vvvv playbook.yaml
mars <env> ansible-playbook \
--aws-sm-secret-id="<secret-id>" \
--aws-region="<region>" \
--aws-role-arn="<role-arn>" \
playbook.yaml
mars <env> ansible-vault-encrypt --aws-sm-secret-id="<id>" --aws-region="<region>"
mars <env> ansible-vault-decrypt --aws-sm-secret-id="<id>" --aws-region="<region>"
mars <env> ansible-vault-decrypt-key --aws-sm-secret-id="<id>" --aws-region="<region>" file.yaml key
mars <env> ansible-execute <host-pattern> -m <module> -a "<args>"
--tags=<tag>
--limit=<pattern>
--check
--start-at-task=<name>
Environment Variables
MARS_DEBUG=true
MARS_SHELL=true
MARS_LOCAL=true
MARS_NETWORK=<name>
MARS_DEV=true
MARS_DEV_ROOT=<path>
TF_LOG=DEBUG
File Structure
Terraform projects expect:
.terraform-version - Required, specifies terraform version
vars/common/*.tfvars - Shared variables
vars/<env>/*.tfvars - Environment-specific variables
Ansible projects expect:
inventories/<env>/ - Inventory files
inventories/<env>/mars.yaml - Optional mars config (ssh_user, script path)
*_vault_password.txt or vault_password.txt - Local vault password (if not using cloud vault)
Raw Terraform Access
For direct terraform commands, use -- to prevent mars from parsing flags:
mars <env> terraform -- providers --help