Plugins are a wonderful way for anyone to contribute new features - big or small - to Cloud Foundry users. Either to internal only users or to the world-wide federation of Cloud Foundry users public and private.
Unfortunately, it has been a little painful to find, compile and install CLI plugins. You needed golang, you needed to know how to find them with github search, etc.
Fortunately, the very latest CLI (
v6.10.0 or later) supports plugin discovery and plugin installation from community lists. Public community lists or internal private lists. Awesome.
Here's how to get started with the community list. Click below to see the growing registry of plugins that can be easily installed:
First, confirm that you are using v6.10.0 or later:
$ cf -v cf version 6.10.0-b78bf10-2015-02-11T22:26:40+00:00
Now, you need to add the plugin registry to your local
$ cf add-plugin-repo community http://plugins.cfapps.io/
You can see that you have registered this plugin registry:
$ cf list-plugin-repos OK Repo Name Url community http://plugins.cfapps.io/
What plugins are available? I'm glad you asked!
$ cf repo-plugins community Getting plugins from all repositories ... Repository: community name version description CLI-Recorder 1.0.1 Records and playbacks CLI commands. Live Stats 1.0.0 Monitor CPU and Memory usage on an app via the browser. Console 1.0.0 Start a tmate session on an application container Diego-Beta 1.0.0 Enables Diego-specific commands and functionality Open 1.1.0 Open app url in browser
"Open app url in a browser"? That sounds awesome. Let's install that.
$ cf install-plugin Open -r community
The plugin name in the "community" registry is "Open".
The output looks like:
$ cf install-plugin Open -r community Looking up 'Open' from repository 'community' 8056016 bytes downloaded... Installing plugin /home/ubuntu/tmp/cf-plugin-open... OK Plugin open v1.1.0 successfully installed.
What commands did this plugin give us?
$ cf plugins Listing Installed Plugins... OK Plugin Name Version Command Name Command Help open 1.1.0 open open app url in browser open 1.1.0 service-open open service instance dashboard in browser
cf commands have been added:
cf open APPNAME
cf service-open SERVICENAME
The ability for anyone to quicky write new plugins and share them within the world of Cloud Foundry users is fantastic and far reaching.
Write your own plugin
Here are the instructions for writing your own Cloud Foundry CLI plugin - https://github.com/cloudfoundry/cli/tree/master/plugin_examples
All plugins are written in Go.
To share them you need to pre-compile your plugin for the following targets:
- OS X
- Linux 64bit
Then you must upload these to the internet. I recommend uploading them to a Github repository release.
https://github.com/aktau/github-release is a wonderful tool for creating github releases and uploading assets (your compiled CF plugins).
Some projects have been including the compiled binaries in their git repos; but I think this isn't a great plan going forward. Repos will explode in size over time, for example.
Finally, submit a PR to the plugin registry that you want to share it with. For the community registry above you would submit a PR to https://github.com/cloudfoundry-incubator/cli-plugin-repo/blob/master/repo-index.yml for each new release.
Hosting your own plugin registry
https://github.com/cloudfoundry-incubator/cli-plugin-repo is also the project that you can deploy to host your own private plugin registry within your organization.