Skip to content

Latest commit

 

History

History
264 lines (188 loc) · 10.2 KB

plugins.md

File metadata and controls

264 lines (188 loc) · 10.2 KB

Plugins

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.

Table of Contents

Actions

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:

CMDBs

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:

Connectors

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:

Logs

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:

Platform Handlers

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:

Provisioners

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:

Reports

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 readers

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:

Tests

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:

Test reports

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: