Train::F5
A simple Train plugin that wraps REST calls to F5 BigIP load balancers.
Train is used by Chef infrastructure automation products like Chef Infra and Chef Inspec to connect to remote backends.
Installation
Add this line to your application's Gemfile:
gem 'train-f5'
And then execute:
$ bundle install
Or just install it yourself as:
$ gem install train-f5
To test the plugin using Inspec you can try:-
inspec detect -t f5://admin:[email protected]:8443 --insecure
You should end up with output like this if all went well
─────── Platform Details ───────
Name: f5
Families: api
Release: 16.1.3.1
Usage in Inspec profiles
To write an Inspec custom resource, you can use the following methods:-
json_body = inspec.backend.get(f5_rest_endpoint)
json_body = inspec.backend.put(f5_rest_endpoint, data)
json_body = inspec.backend.post(f5_rest_endpoint, data)
json_body = inspec.backend.delete(f5_rest_endpoint)
You can experiment with the API using the Inspec Shell
inspec detect -t f5://admin:[email protected]:8443 --insecure
inspec.backend.get '/mgmt/tm/sys/version'
Example Custom Resource
The custom resource
# libraries/f5_software.rb
class F5Software < Inspec.resource(1)
name "f5_software"
def version
body = inspec.backend.get('/mgmt/tm/sys/version')
f5_release = body['entries'].values[0]['nestedStats']['entries']['Version']['description']
end
end
The Control
# controls/software.rb
control "Software - 1.1" do
impact 0.7
title "Version must be correct"
describe f5_software do
its('version') { should eq '16.1.3.0' }
end
end
Credentials
You can pass credentials at the command line
inspec detect -t f5://admin:[email protected]:8443 --insecure
You can also pass credentials in environment variables (useful to avoid creds on the command line)
export F5_PORT=8443
export F5_HOST=f5.myorg.com
export F5_PASSWORD=secrit_pa55word
export F5_USER=admin
inspec detect -t f5:// --insecure
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/trickyearlobe/train-f5.