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.
| Component | Description | Supported OS | Supported Providers |
|---|---|---|---|
| AWS CLI | Installs the AWS Command Line Interface for interacting with AWS services. | Linux, Windows | AWS |
| AWS CloudWatch Agent | Installs the Amazon CloudWatch agent for collecting metrics and logs. | Linux, Windows | AWS |
| AWS Inspector Agent | Installs the Amazon Inspector agent for automated security assessments. | Linux, Windows | AWS |
| Datadog Agent | Installs the Datadog monitoring agent for infrastructure visibility. | Linux, Windows | All |
| Hardening Level 1 | Applies CIS Benchmark Level 1 hardening for essential security. | Linux, Windows | All |
| Hardening Level 2 | Applies CIS Benchmark Level 2 hardening for defense-in-depth. | Linux, Windows | All |
| Ops Agent (GCP) | Installs the Google Cloud Ops Agent for logging and metrics. | Linux | GCP |
| Stackdriver Agent | Installs the legacy Stackdriver monitoring agent for GCP. | Linux | GCP |
| SumoLogic Agent | Installs the SumoLogic collector agent for log management. | Linux, Windows | All |
| TrendMicro Agent | Installs the Trend Micro Deep Security agent for workload protection. | Linux, Windows | All |
| VMware Tools | Installs open-vm-tools for optimized performance on VMware. | Linux | VMware |
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:
- Development: Changes are made in a dedicated repository and tested against various distributions.
- Merge to Master: Once validated, changes are merged into the master branch. This automatically updates the latest version of the component.
- 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.