Skip to main content

System Components

System components are a collection of predefined, high-quality modules maintained by the Klarity ImageFactory team. These components are available to all customers and provide essential functionality for cloud-native images, such as monitoring agents, security scanners, and industry-standard hardening.

Available System Components

The following table lists the primary system components currently available in ImageFactory. These components are designed to be cross-platform and cross-provider where possible.

ComponentDescriptionSupported OSSupported Providers
AWS CLIInstalls the AWS Command Line Interface for interacting with AWS services.Linux, WindowsAWS
AWS CloudWatch AgentInstalls the Amazon CloudWatch agent for collecting metrics and logs.Linux, WindowsAWS
AWS Inspector AgentInstalls the Amazon Inspector agent for automated security assessments.Linux, WindowsAWS
Datadog AgentInstalls the Datadog monitoring agent for infrastructure visibility.Linux, WindowsAll
Hardening Level 1Applies CIS Benchmark Level 1 hardening for essential security.Linux, WindowsAll
Hardening Level 2Applies CIS Benchmark Level 2 hardening for defense-in-depth.Linux, WindowsAll
Ops Agent (GCP)Installs the Google Cloud Ops Agent for logging and metrics.LinuxGCP
Stackdriver AgentInstalls the legacy Stackdriver monitoring agent for GCP.LinuxGCP
SumoLogic AgentInstalls the SumoLogic collector agent for log management.Linux, WindowsAll
TrendMicro AgentInstalls the Trend Micro Deep Security agent for workload protection.Linux, WindowsAll
VMware ToolsInstalls open-vm-tools for optimized performance on VMware.LinuxVMware

Component Architecture

System components are primarily implemented as Ansible playbooks. This choice ensures that the components are idempotent, meaning they can be run multiple times without changing the system state beyond the initial application.

The internal directory structure for a system component typically follows this pattern:

component-name/
├── linux/
│ ├── playbook.yml
│ └── tasks/
│ └── main.yml
└── windows/
├── playbook.yml
└── tasks/
└── main.yml

Each operating system type has its own dedicated playbook and task definitions, allowing for platform-specific optimizations and logic while maintaining a unified component interface.

Release and Versioning Process

System components follow a structured release process to ensure stability and reliability:

  1. Development: Changes are made in a dedicated repository and tested against various distributions.
  2. Merge to Master: Once validated, changes are merged into the master branch. This automatically updates the latest version of the component.
  3. Release Tagging: When a stable milestone is reached, a release tag (e.g., v1.2.0) is created. This generates a versioned package that is permanently stored and can be pinned in image templates.

Using System Components

To include a system component in an image template, you must reference it by its unique ID. For example, to add the AWS CLI to a Linux image, you would add the aws-cli component to the components list in your template definition.

{
"component_id": "aws-cli",
"version": "latest"
}

While system components are managed by Nordcloud, customers can influence their behavior through component properties. These are key-value pairs passed to the component at runtime, which are then available as variables within the Ansible playbooks or scripts. This allows for customization, such as specifying a particular version of an agent or providing a license key.

Maintenance and Updates

Nordcloud regularly updates system components to include the latest security patches, agent versions, and support for new operating system releases. It is recommended that customers periodically review their image templates and consider updating pinned versions to benefit from these improvements.