-
GitHub stars
Trellis CLI
trellis-cli is a command-line interface (CLI) to manage Trellis projects via the trellis
command. The CLI provides a more consistent and integrated experience and includes:
- Automatic Python Virtualenv integration for easier dependency management
- Smart autocompletion (based on your defined environments and sites)
- One-command DigitalOcean droplet creation
- Better Ansible Vault support for encrypting files
- (New) Built-in virtual machine support for development environments
and much more.
# Installation
# Quick Install (macOS, Linux, WSL via Homebrew)
brew install roots/tap/trellis-cli
# Script
We also offer a quick script version:
# You might need sudo before bash
curl -sL https://roots.io/trellis/cli/get | bash
# Sets bindir or installation directory, Defaults to '/usr/local/bin'
curl -sL https://roots.io/trellis/cli/get | bash -s -- -b /path/to/my/bin
# Manual Install
trellis-cli provides binary releases for a variety of OSes. These binary versions can be manually downloaded and installed.
- Download the latest release or any specific version
- Unpack it (eg:
tar -zxvf trellis_1.2.1_Linux_x86_64.tar.gz
) - Find the
trellis
binary in the unpacked directory, and move it to its desired destination (eg:mv trellis_1.2.0_Darwin_x86_64/trellis /usr/local/bin/trellis
) - Make sure the above path is in your
$PATH
# Dev/unstable install (macOS, Linux, WSL via Homebrew)
# Cleanup previous versions (if installed)
brew uninstall roots/tap/trellis-cli
# Install
brew install --HEAD roots/tap/trellis-cli-dev
# Upgrade
brew upgrade --fetch-HEAD roots/tap/trellis-cli-dev
# Windows Install
trellis-cli does offer a native Windows exe but we recommend you use WSL for Trellis. The above install methods will work for WSL as well.
If you do want to use the native Windows exe, you'll need to do the following setup after downloading the Windows build:
- Open system properties
- Open environment variables
- Under system variables add new variable,
TRELLIS
, pointing to the location of thetrellis.exe
file, likeC:\trellis_1.0.0
- Edit path from system variables and add new named
%TRELLIS%
- Save the changes
# Usage
Run trellis
for the complete usage and help.
For subcommand documentation, run trellis <command> -h
.
# Commands
Command | Description |
---|---|
alias |
Generate WP CLI aliases for remote environments |
check |
Checks if Trellis requirements are met |
db |
Commands for database management |
deploy |
Deploys a site to the specified environment |
dotenv |
Template .env files to local system |
down |
Stops the Vagrant machine by running vagrant halt |
droplet |
Commands for DigitalOcean Droplets |
exec |
Exec runs a command in the Trellis virtualenv |
galaxy |
Commands for Ansible Galaxy |
info |
Displays information about this Trellis project |
init |
Initializes an existing Trellis project |
key |
Commands for managing SSH keys |
logs |
Tails the Nginx log files |
new |
Creates a new Trellis project |
open |
Opens user-defined URLs (and more) which can act as shortcuts/bookmarks specific to your Trellis projects |
provision |
Provisions the specified environment |
rollback |
Rollsback the last deploy of the site on the specified environment |
ssh |
Connects to host via SSH |
up |
Starts and provisions the Vagrant environment by running vagrant up |
valet |
Commands for Laravel Valet |
vault |
Commands for Ansible Vault |
vm |
Commands for managing development virtual machines |
xdebug-tunnel |
Commands for managing Xdebug tunnels |
# Configuration
There are four ways to set configuration settings for trellis-cli and they are loaded in this order of precedence:
- global config (
$HOME/.config/trellis/cli.yml
) - project config (
trellis.cli.yml
) - project config local override (
trellis.cli.local.yml
) - env variables
The global CLI config (defaults to $HOME/.config/trellis/cli.yml
)
and will be loaded first (if it exists).
Next, if a project is detected, the project CLI config will be loaded if it
exists at trellis.cli.yml
(within your trellis
directory).
A Git ignored local override config is also supported at trellis.cli.local.yml
.
Finally, env variables prefixed with TRELLIS_
will be used as
overrides if they match a supported configuration setting. The prefix will be
stripped and the rest is lowercased to determine the setting key.
Note: only string, numeric, and boolean values are supported when using environment variables.
Current supported settings:
Setting | Description | Type | Default |
---|---|---|---|
allow_development_deploys |
Whether to allows deploy to the development env |
boolean | false |
ask_vault_pass |
Set Ansible to always ask for the vault pass | boolean | false |
check_for_updates |
Whether to check for new versions of trellis-cli | boolean | true |
database_app |
Database app to use in db open (Options: tableplus , sequel-ace ) |
string | none |
load_plugins |
Load external CLI plugins | boolean | true |
open |
List of name -> URL shortcuts | map[string]string | none |
virtualenv_integration |
Enable automated virtualenv integration | boolean | true |
vm |
Options for dev virtual machines | Object | see below |
vm
Setting | Description | Type | Default |
---|---|---|---|
manager |
VM manager (Options: auto (depends on OS), lima ) |
string | "auto" |
ubuntu |
Ubuntu OS version (Options: 18.04 , 20.04 , 22.04 , 24.04 ) |
string | 24.04 |
hosts_resolver |
VM hosts resolver (Options: hosts_file ) |
string | hosts_file |
images |
Custom OS image | object | Set based on ubuntu version |
images
Setting | Description | Type | Default |
---|---|---|---|
location |
URL of Ubuntu image | string | none |
arch |
Architecture of image (eg: x86_64 , aarch64 ) |
string | none |
Example config:
ask_vault_pass: false
check_for_updates: true
load_plugins: true
open:
site: "https://mysite.com"
admin: "https://mysite.com/wp/wp-admin"
virtualenv_integration: true
vm:
manager: auto
ubuntu: 24.04
Example env var usage:
TRELLIS_ASK_VAULT_PASS=true trellis provision production
Contributors
Last updated
Support Roots
Help us continue to build and maintain our open source projects. We’re a small team of independent developers and every little bit helps.
Sponsor Roots on GitHub