Hybrid Platforms Conductor ships with plenty of plugins of any type. The type of the plugin is defined by the directory in which the plugin is encountered.
Check how to create plugins to know how to add your own plugins to this list.
Following are all possible plugin types and the plugins shipped by default with Hybrid Platforms Conductor.
Define the kind of actions that can be executed by various processes.
Corresponding plugin type: action
.
These plugins are meant to define new action types that can be used by the ActionsExecutor
.
Examples of actions are:
- Remote bash: Execute remote bash on the node
- Ruby: Execute Ruby code
Check the sample plugin file to know more about the API that needs to be implemented by such plugins.
Plugins shipped by default:
Retrieve nodes' metadata from various sources.
Corresponding plugin type: cmdb
.
These plugins allow to retrieve metadata associated to a node, returned by the NodesHandler
. New plugins can be used to retrieve new properties that can then be used by Hybrid Platforms Conductor.
Examples of CMDBs are:
- Host keys: Get host keys associated to nodes
- Host IPs: Get a node's host IP
Check the sample plugin file to know more about the API that needs to be implemented by such plugins.
Plugins shipped by default:
Give a way to execute remote bash or transfer files to nodes.
Corresponding plugin type: connector
.
These plugins give ways for the ActionsExecutor
to connect to nodes when some actions require it (like the remote code executions for example).
Examples of connectors are:
- SSH: Connect to a node using SSH
- Docker: Connect using a Docker socket
- awscli: Connect using awscli
Check the sample plugin file to know more about the API that needs to be implemented by such plugins.
Plugins shipped by default:
Save deployment logs to a given medium (files, log servers...).
Corresponding plugin type: log
.
These plugins give ways for the Deployer
to save logs output from services deployments on nodes.
Information that can be saved is:
- The deployment stdout.
- The deployment stderr.
- The deployment exit status.
- The list of services that have been deployed.
- Some deployment metadata (like git commits information that have been deployed).
Examples of log plugins are:
- Remote file system: Save logs on the node's remote file system (useful for local debugging).
- Log servers: Send logs to log servers.
Check the sample plugin file to know more about the API that needs to be implemented by such plugins.
Plugins shipped by default:
Handle repositories of nodes' inventory and services to be deployed.
Corresponding plugin type: platform_handler
.
These plugins are used to support different types of platforms' repositories, returned by the NodesHandler
Platforms are registered in the ./hpc_config.rb
file of your project.
Example from a locally checked out platform:
<platform_type_name>_platform path: '/path/to/platform/to_be_handled_by_your_plugin'
Example from a platform present in a Git repository:
<platform_type_name>_platform git: '<git_url_to_the_platform_code>'
Examples of platform handlers are:
- Chef: Handle a platform using Chef
- Ansible: Handle a platform using Ansible
Check the sample plugin file to know more about the API that needs to be implemented by such plugins.
Plugins shipped by default:
Give a way to provision new nodes.
Corresponding plugin type: provisioner
.
These plugins add new ways to provision infrastructure, used by the Deployer
Examples of provisioners are:
- Docker: Provision Docker containers
- Podman: Provision Podman pods
- Terraform: Provision nodes through Terraform
- Proxmox: Provision containers or VMs using Proxmox
Check the sample plugin file to know more about the API that needs to be implemented by such plugins.
Plugins shipped by default:
Report inventory and metadata information.
Corresponding plugin type: report
.
These plugins add new ways to publish inventory reports produced by the ReportsHandler
Examples of reports are:
- stdout: Just dump inventory on stdout
- Mediawiki: Dump inventory in a Mediawiki page
Check the sample plugin file to know more about the API that needs to be implemented by such plugins.
Plugins shipped by default:
Secrets reader are responsible for fetching secrets (passwords, private keys, API tokens...) needed during deployment from various sources (command line, environment, vaults, secrets servers...).
Corresponding plugin type: secrets_reader
.
These plugins add new ways to retrieve secrets used by the Deployer
Examples of secrets readers are:
- Command-line: Give secrets from a local file.
- Vault: Get secrets from vaults (encrypted databases).
- Secrets servers: Query secrets servers to retrieve secrets.
Check the sample plugin file to know more about the API that needs to be implemented by such plugins.
Plugins shipped by default:
Perform various tests, on nodes, on platform repositories, and global ones as well.
Corresponding plugin type: test
.
These plugins add available tests to the TestsRunner
.
Depending on the API they implement, they can define tests at global level, at platform level or at node level.
Examples of tests are:
- Spectre: Test a node against Spectre vulnerability
- Executables: Test that executables run without errors
- Divergence: Test that a node has not diverged from the configuration stored in its platform handler
Check the sample plugin file to know more about the API that needs to be implemented by such plugins.
Plugins shipped by default:
bitbucket_conf
can_be_checked
check_deploy_and_idempotence
check_from_scratch
connection
deploy_freshness
deploy_from_scratch
deploy_removes_root_access
divergence
executables
file_system_hdfs
file_system
github_ci
hostname
idempotence
ip
jenkins_ci_conf
jenkins_ci_masters_ok
linear_strategy
local_users
mounts
orphan_files
ports
private_ips
public_ips
spectre
veids
vulnerabilities
Report testing results on various mediums.
Corresponding plugin type: test_report
.
These plugins add new ways to publish tests reports, done by the TestsRunner
.
Examples of tests reports are:
- stdout: Just dump tests results on stdout
- Confluence: Dump tests reports in a Confluence page
Plugins shipped by default: