2.6 KiB
Drupal Console is a modern CLI for interacting with Drupal and scaffolding a site. It works only with Drupal 8+, and is built on top of the Symfony Console component.
To have Drupal Console installed globally inside Drupal VM, make sure drupalconsole
is in the list of installed_extras
in your config.yml
file. If you're adding it to an existing Drupal VM, run vagrant provision
so it gets installed. You also (or instead) might want to add Drupal Console as a dependency of your Drupal project—if you do this, you may not need to add drupalconsole
to Drupal VM globally.
To use Drupal Console with a Drupal 8 site (in this case, using the default configuration that ships with Drupal VM):
- Log into the VM with
vagrant ssh
. - Change directory to the Drupal site's document root:
cd /var/www/drupalvm/drupal/web
. - Use Drupal console (e.g.
drupal cache:rebuild all
).
You should see an output like:
vagrant@drupalvm:/var/www/drupalvm/drupal/web$ drupal cache:rebuild all
[+] Rebuilding cache(s), wait a moment please.
[+] Done clearing cache(s).
The command was executed successfully!
Remote command execution using --target
To run commands on your host computer but execute them on the VM, add a new sites file ~/.console/sites/drupalvm.yml
on your host computer:
dev:
root: /var/www/drupalvm/drupal
host: 192.168.88.88
user: vagrant
password: vagrant
Execute from host machine using the --target
option.
drupal --target=drupalvm.test site:status
For more details, see Drupal Console's documentation
For a list of available role variables, see the geerlingguy.drupal-console
Ansible role's README.
Remote command execution using vagrant-exec
You can use vagrant-exec
to execute commands remotely through Vagrant, and if you can't get Console to work with --target
, you might want to try doing this (it's more convenient than logging into the VM just to run a Drupal VM command!).
First, install the plugin:
vagrant plugin install vagrant-exec
Add the following to a Vagrantfile.local
in your project (set directory
to your drupal docroot):
if Vagrant.has_plugin?('vagrant-exec')
config.exec.commands '*', directory: '/var/www/drupal'
end
Now you can execute any Drupal Console command—even interactive ones!—from the host:
vagrant exec bin/drupal generate:module