This repository contains a command line interface CLI to interact with the CenturyLink Cloud Blueprints packaging and workflow services. Query, change, add, and execute CenturyLink Cloud automation using a cross-platform CLI and definitions defined in common json files.
- Examples
- Installing
- Usage
- Packages - List, List OS, Upload, Publish, Upload and Publish, Delete, Download, Execute
- Blueprints - List, Export, Import, Update, Delete, Execute
- Python SDK (documentation coming soon)
- Advanced
Consistently manage your blueprint by recording all changes using version control and get a holistic view of your blueprint for troubleshooting. The authoritative definition for your blueprint now resides in a json file.
# If you've already got a blueprint, export it first
> bpformation blueprint export --id 1234 --file foobar.json
# Make and record changes using standard text editors and version control
> vi foobar.json
> git commit -m 'version 1.3 updates, change server sizing' foobar.json
# Apply changes on demand
> bpformation blueprint update --file foobar.json
Sometimes partner or community provided blueprints are close to your needs but not perfect. Start with one of these and adapt it for your specific needs.
# Locate target Pivotal Greenplum Blueprint
> bpformation.py blueprint list --filter greenplum public
+------------------------------------------+------+------------+--------------+
| name | id | visibility | date_added |
+------------------------------------------+------+------------+--------------+
| Pivotal Greenplum - 4 node large cluster | 2533 | public | Mar 05, 2015 |
| Pivotal Greenplum - 4 node small cluster | 2531 | public | Mar 05, 2015 |
+------------------------------------------+------+------------+--------------+
# Export
> bpformation.py blueprint export --id 2533
✔ Pivotal Greenplum - 4 node large cluster v1.4 exported to pivotal_greenplum_-_4_node_large_cluster-2533-1.4.json (5 tasks)
# Modify json to increase the server size (showing a portion of the json file)
{
"execute": { <..... snip .....> },
"metadata": { <..... snip .....> },
"tasks": [
<..... snip .....>
{
"cpu": "8",
"ram": "64",
},
<..... snip .....>
]
}
# Create our new Blueprint using this as a model
> bpformation blueprint import --file pivotal_greenplum_-_4_node_large_cluster-2533-1.4.json
coming soon
Cross-platform installation is available via pypi. Requires Python 2.7 - this is not currently compatible with Python 3. If you have pip already installed the following command will get you running:
> pip install bpformation
This should automatically install the following dependencies used by the CLI: prettytable, clint, argparse, requests, clc-sdk
If you do not have pip (the Python package manager) installed a quickstart install of this prereq on Linux/Mac is:
> curl https://bootstrap.pypa.io/get-pip.py | sudo python
You're on your own if some of the dependencies fail. Follow one of our quickstarts below if possible.
Test matrix:
-
Successfully install on RHEL/CentS 7:
# Install pre-reqs > yum -y install python-pip ## Install bpformation > pip install bpformation
-
Successfully installed on RHEL/CentOS 6:
# Install pre-reqs > yum -y install gcc python-devel libxslt-devel # Install pip > curl https://bootstrap.pypa.io/get-pip.py | sudo python ## Install bpformation > pip install bpformation
-
RHEL/CentOS 5 requires upgraded Python to 2.7 from source.
Test matrix:
-
Successfully installed on Ubuntu 12 and 14:
# Install pre-reqs > apt-get -y update > apt-get -y install python-pip python-lxml # Install bpformation > pip install bpformation
Not yet validated, steps should be:
# Install brew if not yet available
> ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
> brew doctor
# Install lxml pre-req libraries
> brew install libxml2
> brew install libxslt
# Install bpformation
> STATIC_DEPS=true pip install bpformation
The CLI is available as a prepackaged single-file Windows executable and the most recent compiled version is always available here.
> bpformation
usage: bpformation.py [-h] [--config CONFIG] [--alias ALIAS]
[--control-user USER] [--control-password PASS]
[--quiet] [--verbose] [--cols [COL [COL ...]]]
[--format {json,table,text,csv}]
{package,blueprint} ...
> bpformation -h
usage: bpformation.py [-h] [--config CONFIG] [--alias ALIAS]
[--control-user USER] [--control-password PASS]
[--quiet] [--verbose] [--cols [COL [COL ...]]]
[--format {json,table,text,csv}]
{package,blueprint} ...
CLI tool for interacting with CenturyLink Blueprints Package and Workflow
Services. http://www.CenturyLinkCloud.com
optional arguments:
-h, --help show this help message and exit
--config CONFIG, -c CONFIG
Ini config file
--alias ALIAS, -a ALIAS
Operate on specific account alias
--control-user USER Control username
--control-password PASS
Control password
--quiet, -q Supress status output (repeat up to 2 times)
--verbose, -v Increase verbosity
--cols [COL [COL ...]]
Include only specific columns in the output
--format {json,table,text,csv}, -f {json,table,text,csv}
Output result format (table is default)
Commands:
{package,blueprint}
package Package level activities (list, package, upload, publish, etc.)
blueprint Blueprint level activities (list, import, export, delete, etc.)
All commands require authentication which can be accomplished in several ways in increasing order of priority.
- System configuration file at
/usr/local/etc/bpformation_config
(POSIX) or%PROGRAMDATA%\bpformation\bpformation.ini
(Windows) - User specific configuration file at
~/.bpformation
(POSIX) or.\bpformation.ini
(Windows) - Specify configuration file with --config / -c command line option
- Define environment variables (CONTROL_USER / CONTROL_PASSWORD)
- Pass credentials as command line options
Configuration files follow ini syntax. Reference the example.ini file with all currently accepted fields.
A CenturyLink Cloud Blueprint package is an invoked piece of software, uploaded to the cloud platform, which customizes a server template. Learn the difference between templates, blueprints and packages.
Note that CenturyLink Cloud has a distinction between Software and Scripts packages. This distinction will eventually be retired and the final resting place for all packages will align with the Script category. That being said this tool works exclusively with Script Packages and will have no visibility into Software packages.
> bpformation package -h
usage: bpformation.py package [-h]
{list,upload,publish,upload-and-publish,delete,download,execute}
...
positional arguments:
{list,upload,publish,upload-and-publish,delete,download,execute}
list List package inventory
upload Uploaded package to specified alias
publish Uploaded packages to specified alias
upload-and-publish Uploaded then publish packages to specified alias
delete Delete published package
download Download published package
execute Execute package
optional arguments:
-h, --help show this help message and exit
Query all packages visible to your account, optionally filtering by any piece of metadata that's displayed.
> bpformation package list --help
usage: bpformation.py package list [-h] [--filter [FILTER [FILTER ...]]]
optional arguments:
-h, --help show this help message and exit
--filter [FILTER [FILTER ...]]
Regex filter Results by name, author, status, visibility (and)
Example:
# Show all public packages for Linux tagged with Security
> bpformation package list --filter public linux security
+-----------------------------------------------------------------------+--------------------------------------+----------+------------+-----------+
| name | uuid | owner | visibility | status |
+-----------------------------------------------------------------------+--------------------------------------+----------+------------+-----------+
| Install Vormetric Data Security Transparent Encryption Agent on Linux | e0e03253-ec7c-4278-b6c4-4ca0b5244b38 | cgosalia | Public | published |
| Security - Install OSSEC Agent for Linux | 407a3b17-cf33-4e00-84ba-9c187cdf69d6 | eco.team | Public | published |
| Security - Install OSSEC Manager for Linux | fec41e23-0f10-4b54-9fe7-5011b1229764 | eco.team | Public | published |
+-----------------------------------------------------------------------+--------------------------------------+----------+------------+-----------+
# Find my private test packages - need to clean these up sometime soon
> bpformation package list --filter private test
+-------------------+--------------------------------------+--------+------------+-----------+
| name | uuid | owner | visibility | status |
+-------------------+--------------------------------------+--------+------------+-----------+
| Test defaults | 6b67648d-71fe-4501-8d4d-15cd496336da | owner | Private | published |
| Test global | 7a5c86ce-1140-4d4f-bbd0-5b2859a79451 | owner | Private | published |
| Test parameter | 75eb2d6c-253b-448c-ada4-a6ad57598576 | owner | Private | published |
| test default2 | fd19358e-f43f-4aaf-8622-2cb222500ffa | owner | Private | published |
| test system parms | 3819ee8d-c276-4d11-9d57-146fd9937a38 | owner | Private | published |
+-------------------+--------------------------------------+--------+------------+-----------+
Upload one or more Blueprint packages into your account. This call obtains the FTP endpoint used by your account then uploads the package via ftp.
This can be used both for new packages and for updating the contents of an existing package. Source file must be a valid Blueprint Package which is a zip file that contains a valid XML package.manifest
and optionally any supporting scripts or binaries.
Warning If executing this from within CenturyLink Cloud on a server in your primary datacenter the command will fail! FTP access from your primary datacenter to your primary datacenter is not currently permitted. Execute this from an external workstation or a server setup from another CenturyLink Cloud datacenter.
> bpformation package upload -h
usage: bpformation.py package upload [-h] --file [FILE [FILE ...]]
optional arguments:
-h, --help show this help message and exit
--file [FILE [FILE ...]]
Files to upload
Example:
# Upload package zip file
> bpformation package upload --file /tmp/test_package_1.zip
✔ test_package_1.zip successfully uploaded (0 seconds)
# Upload all zip files in a directory
> bpformation package upload --file /tmp/*.zip
✔ test_package_1.zip successfully uploaded (0 seconds)
✔ test_package_2.zip successfully uploaded (0 seconds)
✔ test_package_3.zip successfully uploaded (0 seconds)
List all operating systems for a given type (Linux or Windows). Use this to tune your os
regex during a Package Publish.
> bpformation package list-os --help
usage: bpformation.py package list-os [-h] --type {Windows,Linux}
optional arguments:
-h, --help show this help message and exit
--type {Windows,Linux}
Operating system
Example:
> bpformation package list-os --type Windows
+-----------------------------------+----+
| Name | ID |
+-----------------------------------+----+
| Windows 2003 32-bit | 2 |
| Windows 2003 64-bit | 3 |
| Windows 2003 Enterprise 32-bit | 15 |
| Windows 2003 Enterprise 64-bit | 16 |
| Windows 2008 32-bit | 4 |
| Windows 2008 64-bit | 5 |
| Windows 2008 Datacenter 64-bit | 26 |
| Windows 2008 Enterprise 32-bit | 17 |
| Windows 2008 Enterprise 64-bit | 18 |
| Windows 2008 R2 Datacenter 64-bit | 45 |
| Windows 2008 R2 Enterprise 64-bit | 44 |
| Windows 2008 R2 Standard 64-bit | 43 |
| Windows 2012 64-bit | 24 |
| Windows 2012 Datacenter 64-bit | 27 |
| Windows 2012R2 Datacenter 64-bit | 28 |
+-----------------------------------+----+
Publish one or more already uploaded packages into your account. This can be either a new package or can be an update to an existing package. Note that the package UUID must be globally unique and can never be reused, so if you delete a package and want to re-add it or if you have a dev and prod release of the package they will need distinct UUIDs.
Provide the OS type
classification (Linux
or Windows), one or more regexs of
os, visibility (Private, Shared, Public), and the name of all
filealready resident on the FTP server. OS os the actual name of the Operating System in scope within CenturyLink Cloud. For example, to capture all versions of CentOS specify
--os centos`.
> bpformation package publish --help
usage: bpformation.py package publish [-h] --file [FILE [FILE ...]]
--type {Windows,Linux}
--visibility {Public,Private,Shared}
--os [OS [OS ...]]
optional arguments:
-h, --help show this help message and exit
--file [FILE [FILE ...]]
Uploaded filename to process
--type {Windows,Linux}
Operating system
--visibility {Public,Private,Shared}
Package visibility
--os [OS [OS ...]] Operating system list (regex supported)
Example:
# Publish already uploaded package
> bpformation package publish --file test_package_1.zip --type Linux --visibility Private --os Ubuntu
✔ test_package_1.zip publish job submitted
✔ test_package_1.zip publish job complete (13 seconds)
Combine the package Upload and Publish steps into one.
> bpformation package upload-and-publish -h
usage: bpformation.py package upload-and-publish [-h] --file [FILE [FILE ...]]
--type {Windows,Linux}
--visibility
{Public,Private,Shared} --os
[OS [OS ...]]
optional arguments:
-h, --help show this help message and exit
--file [FILE [FILE ...]]
Files to process
--type {Windows,Linux}
Operating system
--visibility {Public,Private,Shared}
Package visibility
--os [OS [OS ...]] Operating system list (regex supported)
Example:
> bpformation package upload-and-publish --file /tmp/test_package_1.zip --type Linux --visibility Private --os Ubuntu
✔ test_package_1.zip successfully uploaded (0 seconds)
✔ test_package_1.zip publish job submitted
✔ test_package_1.zip publish job complete (60 seconds)
Deletes one or more existing packages owned by your account. Packages are keyed by UUID which can be found either from the package list command, inside the manifest file itself if you've still got it, or by viewing the URL from the control portal when viewing package details.
> bpformation package delete -h
usage: bpformation.py package delete [-h] --uuid [UUID [UUID ...]]
optional arguments:
-h, --help show this help message and exit
--uuid [UUID [UUID ...]]
UUID for packages
Example:
# Delete Some of those Test Packages
> bpformation package delete --uuid 6b67648d-71fe-4501-8d4d-15cd496336da \
7a5c86ce-1140-4d4f-bbd0-5b2859a79451 \
75eb2d6c-253b-448c-ada4-a6ad57598576
✔ 6b67648d-71fe-4501-8d4d-15cd496336da package deleted
✔ 7a5c86ce-1140-4d4f-bbd0-5b2859a79451 package deleted
✔ 75eb2d6c-253b-448c-ada4-a6ad57598576 package deleted
Download one or more package zip files specified by UUID. The package must be visible to your account but need not be owned by you.
The downloaded package will be saved in your current directory with the name uuid
.zip
> bpformation package download --help
usage: bpformation.py package download [-h] --uuid [UUID [UUID ...]]
optional arguments:
-h, --help show this help message and exit
--uuid [UUID [UUID ...]]
UUID for packages
Example:
# Download package
> bpformation package download --uuid 3819ee8d-c276-4d11-9d57-146fd9937a38
✔ 3819ee8d-c276-4d11-9d57-146fd9937a38 package downloaded
> ls -l 3819ee8d-c276-4d11-9d57-146fd9937a38.zip
-rw-r--r-- 1 user staff 1.2K Jun 4 15:34 3819ee8d-c276-4d11-9d57-146fd9937a38.zip
Execute a single package on one or more existing servers. If any global
or deploy
-time parameters are required specify them in key
=value
pairs.
> bpformation package execute -h
usage: bpformation.py package execute [-h] --uuid UUID --server
[SERVER [SERVER ...]]
[--parameter [PARAMETER [PARAMETER ...]]]
optional arguments:
-h, --help show this help message and exit
--uuid UUID UUID for package
--server [SERVER [SERVER ...]]
Servers targets for package execution
--parameter [PARAMETER [PARAMETER ...]]
key=value pairs for package parameters
Example:
# Execute the Linux Update patching package on a few of my servers
> bpformation package execute --uuid 77ab3844-579d-4c8d-8955-c69a94a2ba1a --server CA1KRAPX04 CA1KRAPX05 CA1KRAPX06
✔ Execution request submitted for ca1krapx05
✔ Execution request submitted for ca1krapx06
✔ Execution request submitted for ca1krapx07
✔ Execution completed on ca1krapx05, ca1krapx06, ca1krapx04 (287 seconds)
A CenturyLink Cloud Blueprint package is an invoked piece of software, uploaded to the cloud platform, which customizes a server template. Learn the difference between templates, blueprints and packages
One challenge to keep in mind with managing Blueprints using the bpformation
toolset is that Blueprints don't actually key on a globaly unique ID. Keep this in mind when searching for the ID associated with a Blueprint - we always use the Blueprints ID associated with your primary datacenter. To make this easier for you we always include the ID when performing an export allowing you to re-use all identifying information for subsequent bpformation
invocations.
> bpformation blueprint -h
usage: bpformation.py blueprint [-h]
{list,export,import,update,delete,execute} ...
positional arguments:
{list,export,import,update,delete,execute}
list List blueprint inventory
export Export blueprint
import Import blueprint from json
update Update existing blueprint from json
delete Delete blueprint
execute Execute blueprint
optional arguments:
-h, --help show this help message and exit
Query all Blueprints visible to your account, optionally filtering by any piece of metadata that's displayed.
> bpformation blueprint list -h
usage: bpformation.py blueprint list [-h] [--filter [FILTER [FILTER ...]]]
[--account [ACCOUNT [ACCOUNT ...]]]
optional arguments:
-h, --help show this help message and exit
--filter [FILTER [FILTER ...]]
Regex filter Results by name, author, status,
visibility (and)
--account [ACCOUNT [ACCOUNT ...]]
One or more account alias authors to filter
Example:
# Find Private-Shared blueprints in my account
> bpformation blueprint list --filter privateshared
+--------------------------------------+------+---------------+--------------+
| name | id | visibility | date_added |
+--------------------------------------+------+---------------+--------------+
| CaaS | 152 | privateshared | Mar 04, 2013 |
| Exchange 2010 with Domain Controller | 627 | privateshared | Jul 06, 2013 |
| Linux App Stack Demo | 719 | privateshared | Jan 20, 2014 |
| Public IP Test | 2033 | privateshared | Dec 15, 2014 |
| Small SharePoint Farm | 585 | privateshared | Jul 06, 2013 |
+--------------------------------------+------+---------------+--------------+
# Find SQL Server blueprints
> bpformation blueprint list --filter sql
+---------------------------------------+------+------------+--------------+
| name | id | visibility | date_added |
+---------------------------------------+------+------------+--------------+
| Install SQL 2012 RC0 Standard | 424 | public | Mar 06, 2012 |
| Install SQL Server on Existing Server | 47 | public | Oct 22, 2012 |
| Install SQL Server on New Server | 46 | public | Oct 22, 2012 |
+---------------------------------------+------+------------+--------------+
# Restrict search to spefic account
> bpformation blueprint list --account KRAP
+---------------------------------------------------+------+------------+--------------+
| name | id | visibility | date_added |
+---------------------------------------------------+------+------------+--------------+
| Testdeploy | 3526 | private | Jun 04, 2015 |
| Testdeploy-2 | 3519 | private | Jun 04, 2015 |
+---------------------------------------------------+------+------------+--------------+
Export existing Blueprints you have access to from your account into an easy to modify and maintain json file. This can serve as the basis for extending a Blueprint from someone else, maintaining a Blueprint originally designed from within the CenturyLink Cloud control portal, or managing the lifecycle of a Blueprint as part of a version control system.
The default naming for these downloaded files is composed of blueprint name
-id
-version
.json.
Exports keeps all IDs and task sequencing intact to subsequent imports and [updates)(#blueprintupdate) work as expected.
An export json contains metadata
, tasks
, and a template execute
section for re-use across other bpformation
functions.
View an example blueprint json file for a look at the major sections and their respective roles.
> bpformation blueprint export -h
usage: bpformation.py blueprint export [-h] --id ID [--file FILE]
optional arguments:
-h, --help show this help message and exit
--id ID Blueprint ID (note this ID is not globally unique - find this
from your primary datacenter
--file FILE Filename target for Blueprint json definition
Example:
# Export Blueprint using default naming
> bpformation blueprint export --id 2668
✔ Pivotal GemFire v0.1 exported to pivotal_gemfire-2668-0.1.json (1 tasks)
> ls -l pivotal_gemfire-2668-0.1.json
-rw-r--r-- 1 owner staff 698B Jun 4 16:09 pivotal_gemfire-2668-0.1.json
# Export Blueprint using custom file naming
> bpformation blueprint export --id 2668 --file my_gemfire.json
✔ Pivotal GemFire v0.1 exported to my_gemfire.json (1 tasks)
# Export Blueprint to stdout
> bpformation blueprint export --id 3526 --file -
{
"execute": {
"apache_server_port": "80",
"apache_server_ssl_port": "443",
"base_user_name": "",
"plaintext_password": "",
"username": ""
},
"metadata": {
"description": "lorem ipsum...",
"id": "0",
"name": "Install ownCloud on Linux",
"owner": "CenturyLink Cloud Ecosystem",
"version": "1.7",
"visibility": "private"
},
"tasks": [
{
"cpu": "1",
"description": "ownCloud",
"id": "5fe72fba-aa16-4846-9d76-ec2d375a11f6",
"name": "OWNC",
"ram": "4",
"tasks": [
{
"id": "7e5825a4-6198-4ab5-9de0-a70fbb6d8485",
"name": "Linux Update",
"type": "package",
"uuid": "77ab3844-579d-4c8d-8955-c69a94a2ba1a"
},
{
"id": "8cf20685-2c44-4050-93af-c0ef659a3629",
"name": "Install ownCloud on Linux",
"properties": {
"mysql_database_name": "mydb",
"mysql_database_username": "mysql",
"mysql_port": "3306"
},
"type": "package",
"uuid": "bf6bdfba-593d-443c-b490-399276d9b8b6"
}
],
"template": "CENTOS-6-64-TEMPLATE",
"type": "server",
"uuid": "cb9762b3-61a6-4cfb-af97-96bf7dbfc359"
}
]
}
Import a new Blueprint into CenturyLink Cloud. Source must be a json file but can come from another exported Blueprint (we strip all unique IDs if they exist) or from a hand-crafted definition.
The metadata
and tasks
sections must be populated for a successful import. View an example blueprint json file for a
look at the major sections and their respective roles.
> bpformation blueprint import -h
usage: bpformation.py blueprint import [-h] --file [FILE [FILE ...]]
optional arguments:
-h, --help show this help message and exit
--file [FILE [FILE ...]]
Blueprint definition json files
Example:
# Import test Blueprint
> bpformation blueprint import --file testdeploy.json
✔ Testdeploy v0.2 imported ID 3526 (1 tasks)
Update an existing Blueprint by applying a modified json definition. Updates may take several minutes to replicate and reach global consistency. The source json must include the metadata.id and all unique ids/uuids as currently exist in the installed Blueprint or else where will be consistency errors and possible Blueprint failure. Recommendation is to always start with an export and modify that rather than generating an update json from scratch.
> bpformation blueprint update -h
usage: bpformation.py blueprint update [-h] --file [FILE [FILE ...]]
optional arguments:
-h, --help show this help message and exit
--file [FILE [FILE ...]]
Blueprint definition json files
Example:
# Update modified test Blueprint
> perl -p -i -e 's/"version": "[0-9\.]+"/"version": "1.0"/' testdeploy-3526-0.2.json
> bpformation blueprint update --file testdeploy-3526-0.2.json
✔ Testdeploy v1.0 updated ID 3526 (1 tasks)
Delete one or more Blueprints owned by your account. Deletion may take several minutes to replicate globally.
> bpformation blueprint delete -h
usage: bpformation.py blueprint delete [-h] --id [ID [ID ...]]
optional arguments:
-h, --help show this help message and exit
--id [ID [ID ...]] Blueprint ID (note this ID is not globally unique - find this from your primary datacenter
Example:
# Delete single blueprint
> bpformation blueprint delete --id 3515
✔ Testdeploy update deleted (id 3515)
Execute one or more specified blueprints. This command can be made complex by customizing all the system (server sizing, network details, etc.) and the package parameter information or it can be streamlined using defaults defined in a number of locations.
Take note this can only deploy Blueprints in your primary datacenter.
System information (server type, password, group ID, network, DNS) can be specified from a number of sources, listed below with increasing priority (last item takese precendence over the first item):
- bpformation config file (See example.ini) and reference the authentication section which also makes use of this file and details locations where it may be found
- Definition within the json file
- Definition from the command line
Package information can be specified from a number of sources as well, listed below with increasing priority (last item takese precendence over the first item):
- Definition within the json file
- Specifying
key
=value
pairs from the command line
Non-global package parameters, wherever they are specified, must be prepended with the unique package instance ID. This information is best gathered by running a Bluerpint Export and using those fully qualified parameter names. We also recommend using a Global parameter scope where possible.
> bpformation blueprint execute -h
usage: bpformation.py blueprint execute [-h] [--file [FILE [FILE ...]]]
[--id [ID [ID ...]]]
[--parameter [PARAMETER [PARAMETER ...]]]
[--type {Standard,HyperScale}]
[--password PASSWORD]
[--group-id GROUP_ID]
[--network NETWORK] [--dns DNS]
optional arguments:
-h, --help show this help message and exit
--file [FILE [FILE ...]]
Blueprint definition json files with "execute"
populated
--id [ID [ID ...]] Blueprint ID (note this ID is not globally unique -
find this from your primary datacenter
--parameter [PARAMETER [PARAMETER ...]]
key=value pairs for package parameters (overrides "file")
--type {Standard,HyperScale}
Server hardware type
--password PASSWORD Server deploy password
--group-id GROUP_ID Server deploy group ID
--network NETWORK Server deploy network
--dns DNS Server DNS
Example:
# Execute reading parameters from json file - pulls ID from 'metadata'
# and parameters from 'execute' sections
> bpformation blueprint execute --file testdeploy-3526-0.2.json
✔ Execution request submitted for Blueprint ID 3526 (request ca1-26898)
✔ Execution completed on 1 blueprints (376 seconds)
✔ The following server(s) were created: ca1krapmastr48, ca1krapsmastr48, ca1krapnode875
# Execute a number of Blueprints. This time specify only the ID from the command line
> bpformation blueprint execute --id 3526 3526 3526
✔ Execution request submitted for Blueprint ID 3526 (request ca1-26899)
✔ Execution request submitted for Blueprint ID 3526 (request ca1-26900)
✔ Execution request submitted for Blueprint ID 3526 (request ca1-26901)
✔ Execution completed on 3 blueprints (459 seconds)
-
An error message like the following indicates the Blueprint is not yet fully and successfully published. Publishing can take up to 15 minutes. If the error persists then open an issue with details about your Blueprint.
✖ Execution failed on ca1-28311: GroupID is required [Error] HardwareType is required [Error] Password is required [Error] PrimaryDNS is required ✖ Exiting due to error: Error executing blueprint
bpformation.web.BearerToken()
Returns the bearer token associated with the current session.
> bpformation.web.BearerToken()
u'xxxxxxx'