Package: broker
BrokerThe infrastrucure middlemanDescriptionBroker is a tool designed to provide a common interface between one or many services that provision virtual machines or containers. It is an abstraction layer that allows you to ignore most of the implementation details and just get what you need.DocsBroker's docs can be found at the wiki for this repo:https://github.com/SatelliteQE/broker/wikiQuickstartInstall cmake withdnf install cmakeInstall Broker either by cloning locally withpip install .or withpip install brokerfor the latest version from PyPI.Copy the example settings file tobroker_settings.yamland edit it.(optional) If you are using the Container provider, install the extra dependency based on your container runtime of choice with eitherpip install broker[podman]orpip install broker[docker].(optional) If you are using the Beaker provider, install the extra dependency withdnf install krb5-develand thenpip install broker[beaker].To run Broker outside of its base directory, specify the directory with theBROKER_DIRECTORYenvironment variable.Configure thebroker_settings.yamlfile to set configuration values for broker's interaction with its providers.Basic CLI UsageChecking out a VM or containerTo checkout a single VM with arbitrary arguments:broker checkout --workflow test-workflow --workflow-arg1 something --workflow-arg2 elseTo checkout multiple VMs at once:broker checkout --workflow test-workflow --count 3To pass complex data structures:broker checkout --container-host my-image --args-file tests/data/broker_args.json --extra tests/data/args_file.yamlNicksBroker allows you to define configurable nicknames for checking out vms. Just add yours to setting.yaml and call with the--nickoptionbroker checkout --nick rhel7Listing your VMs and containersBroker maintains a local inventory of the VMs and containers you've checked out. You can see these with theinventorycommand.broker inventoryTo sync your inventory from a supported provider, use the--syncoption.broker inventory --sync AnsibleTowerTo sync an inventory for a specific instance, use the following syntax with --sync.broker inventory --sync Container::<instance name>Extending your VM lease timeProviders supporting extending a VM's lease time make that functionality available through theextendsubcommand.broker extend 0
broker extend hostname
broker extend vmname
broker extend --allChecking in VMs and containersYou can also return a VM to its provider with thecheckincommand.
Containers checked in this way will be fully deleted regardless of its status.
You may use either the local id (broker inventory), the hostname, or "all" to checkin everything.broker checkin my.host.fqdn.com
broker checkin 0
broker checkin 1 3 my.host.fqdn.com
broker checkin --allGaining information about Broker's providersBroker'sproviderscommand allows you to gather information about what providers are avaiable as well as each providers actions. Additionally, you can find out information about different arguments for a provider's action with this command.broker providers --help
broker providers AnsibleTower --help
broker providers AnsibleTower --workflows
broker providers AnsibleTower --workflow test-workflowRun arbitrary actionsIf a provider action doesn't result in a host creation/removal, Broker allows you to execute that action as well. There are a few output options available as well.
When executing with the Container provider, a new container will be spun up with your command (if specified), ran, and cleaned up.broker execute --help
broker execute --workflow my-awesome-workflow --additional-arg True
broker execute -o raw --workflow my-awesome-workflow --additional-arg True --artifacts lastMachine processable outputIf running in a CI or other automated environment, Broker offers the choice to store important output information in an output file. This is json-formatted data. Please be aware that any existing file with the matching path and name will be erased.broker --output-file output.json checkout --nick rhel7
broker --output-file inventory.json inventoryRun Broker in the backgroundCertain Broker actions can be run in the background, these currently are: checkout, checkin, duplicate, and execute. When running a command in this mode, it will spin up a new Broker process and no longer log to stderr. To check progress, you can still follow broker's log file.
Note that background mode will interfere with output options for execute since it won't be able to print to stdout. Those should kept in log mode.broker checkout --background --nick rhel7
broker checkin -b --all
broker execute -b --workflow my-awesome-workflow --artifacts