Categorygithub.com/roots/trellis-cli
modulepackage
1.12.1
Repository: https://github.com/roots/trellis-cli.git
Documentation: pkg.go.dev

# README

trellis-cli

Build status GitHub release

A command-line interface (CLI) to manage Trellis projects via the trellis command. It includes:

  • Smart autocompletion (based on your defined environments and sites)
  • Automatic Virtualenv integration for easier dependency management
  • Easy DigitalOcean droplet creation
  • Better Ansible Vault support for encrypting files

Sponsors

trellis-cli is an open source project and completely free to use.

However, the amount of effort needed to maintain and develop new features and products within the Roots ecosystem is not sustainable without proper financial backing. If you have the capability, please consider sponsoring Roots.

Sponsor Roots

KM Digital Carrot WordPress.com Worksite Safety Itineris

Quick Install (macOS and Linux via Homebrew)

brew install roots/tap/trellis-cli

Quick Install (Unstable - macOS and Linux 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

Script

We also offer a quick script version:

# You might need sudo before bash
curl -sL https://roots.io/trellis/cli/get | bash

# Turns on debug logging
curl -sL https://roots.io/trellis/cli/get | bash -s -- -d

# 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.

  1. Download the latest release or any specific version
  2. Unpack it (tar -zxvf trellis_1.0.0_Linux_x86_64.tar.gz)
  3. Find the trellis binary in the unpacked directory, and move it to its desired destination (mv trellis_1.0.0_Darwin_x86_64/trellis /usr/local/bin/trellis)
  4. Make sure the above path is in your $PATH

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:

  1. Open system properties
  2. Open environment variables
  3. Under system variables add new variable, TRELLIS, pointing to the location of the trellis.exe file, like C:\trellis_1.0.0
  4. Edit path from system variables and add new named %TRELLIS%
  5. Save the changes

Shell Integration

Autocompletes

Homebrew installs trellis-cli's shell completion automatically by default. If shell completions aren't working, or you installed manually not using Homebrew, you'll need to install the completions manually.

To use the trellis-cli's autocomplete via Homebrew's shell completion:

  1. Follow Homebrew's install instructions https://docs.brew.sh/Shell-Completion

    Note: For zsh, as the instructions mention, be sure compinit is autoloaded and called, either explicitly or via a framework like oh-my-zsh.

  2. Then run:

    brew reinstall trellis-cli
    

To install shell completions manually, run the following:

trellis --autocomplete-install

It should modify your .bash_profile, .zshrc or similar.

Virtualenv

trellis-cli uses Virtualenv to manage dependencies such as Ansible which it automatically activates and uses when running any trellis command. But there's still a lot of times you may want to run ansible-playbook or pip manually in your shell. To make this experience seamless, trellis-cli offers shell integration which automatically activates the Virtualenv when you enter a Trellis project, and deactivates when you leave it.

venv integration

To enable this integration, add the following to your shell profile:

Bash (~/.bash_profile):

eval "$(trellis shell-init bash)"

Zsh (~/.zshrc):

eval "$(trellis shell-init zsh)"

Usage

Run trellis for the complete usage and help.

Supported commands so far:

CommandDescription
aliasGenerate WP CLI aliases for remote environments
checkChecks if Trellis requirements are met
dbCommands for database management
deployDeploys a site to the specified environment
dotenvTemplate .env files to local system
downStops the Vagrant machine by running vagrant halt
dropletCommands for DigitalOcean Droplets
execExec runs a command in the Trellis virtualenv
galaxyCommands for Ansible Galaxy
infoDisplays information about this Trellis project
initInitializes an existing Trellis project
keyCommands for managing SSH keys
logsTails the Nginx log files
newCreates a new Trellis project
openOpens user-defined URLs (and more) which can act as shortcuts/bookmarks specific to your Trellis projects
provisionProvisions the specified environment
rollbackRollsback the last deploy of the site on the specified environment
sshConnects to host via SSH
upStarts and provisions the Vagrant environment by running vagrant up
valetCommands for Laravel Valet
vaultCommands for Ansible Vault
xdebug-tunnelCommands for managing Xdebug tunnels

Configuration

There are three ways to set configuration settings for trellis-cli and they are loaded in this order of precedence:

  1. global config ($HOME/.config/trellis/cli.yml)
  2. project config (trellis.cli.yml)
  3. project config local override (trellis.cli.local.yml)
  4. 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. 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:

SettingDescriptionTypeDefault
allow_development_deploysWhether to allows deploy to the development envbooleanfalse
ask_vault_passSet Ansible to always ask for the vault passbooleanfalse
check_for_updatesWhether to check for new versions of trellis-clibooleantrue
database_appDatabase app to use in db open (Options: tableplus, sequel-ace)stringnone
load_pluginsLoad external CLI pluginsbooleantrue
openList of name -> URL shortcutsmap[string]stringnone
virtualenv_integrationEnable automated virtualenv integrationbooleantrue
vmOptions for dev virtual machinesObjectsee below

vm

SettingDescriptionTypeDefault
managerVM manager (Options: auto (depends on OS), lima)string"auto"
ubuntuUbuntu OS version (Options: 18.04, 20.04, 22.04, 24.04)string
hosts_resolverVM hosts resolver (Options: hosts_file)string
imagesCustom OS imageobjectSet based on ubuntu version

images

SettingDescriptionTypeDefault
locationURL of Ubuntu imagestringnone
archArchitecture of image (eg: x86_64, aarch64)stringnone

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

Example env var usage:

TRELLIS_ASK_VAULT_PASS=true trellis provision production

Development

trellis-cli requires Go >= 1.18 (brew install go on macOS)

# Clone the repo
git clone https://github.com/roots/trellis-cli
cd trellis-cli

# Build the binary for your machine
go build

# Run tests (without integration tests)
go test -v -short ./...

# (Optional) Build the docker image for testing (requires `docker`)
make docker
# Alternatively, do not use cache when building the doccker image (requires `docker`)
make docker-no-cache

# Run all tests (requires `docker`)
make test

Releasing Docker Images

This section only intended for the maintainers

make docker-no-cache

# docker tag rootsdev/trellis-cli-dev:latest rootsdev/trellis-cli-dev:YYYY.MM.DD.N
# where N is a sequential integer, starting from 1.
docker tag rootsdev/trellis-cli-dev:latest rootsdev/trellis-cli-dev:2019.08.12.1

# docker push rootsdev/trellis-cli-dev:YYYY.MM.DD.N
docker push rootsdev/trellis-cli-dev:2019.08.12.1
docker push rootsdev/trellis-cli-dev:latest

Contributing

Contributions are welcome from everyone. We have contributing guidelines to help you get started.

Community

Keep track of development and community news.

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author