DEV Community

Cover image for Unlock new workflows with YAML based config for Aerospike.
dwelch-spike for Aerospike

Posted on • Originally published at developer.aerospike.com

Unlock new workflows with YAML based config for Aerospike.

Aerospike's configuration format can be difficult to learn and lacks the ecosystem of more standard configuration formats.
Using the asconfig tool, new in Aerospike tools 8.3.0, you can write an Aerospike configuration in a standard YAML format with schema validation and IDE suggestions.

In this article we:

  1. Setup an IDE for Aerospike configuration suggestions.
  2. Write an Aerospike configuration file in YAML.
  3. Run an Aerospike cluster using the YAML configuration.
  4. Convert an existing Aerospike configuration to YAML.

IDE Setup

Many IDEs support YAML schema files. We use VS Code in this example.

The JSON schema files used by asconfig, and in this example, are stored in the Aerospike schemas Github repository. To write your own YAML configuration file, clone the repository and use the following example below for VS Code.

  1. Install the Red Hat YAML VS Code extension.

gif

  1. In VS Code, go to Code->Preferences->Settings. Search for "YAML schema" and click "edit in settings.json".

gif

  1. Use the following example to add a yaml.schemas mapping to your settings.json. Replace "/absolute/path/to/schemas/repo" with the path to your local clone of the Aerospike schemas repo.
"yaml.schemas": {
    "/absolute/path/to/schemas/repo/json/aerospike/6.3.0.json": ["/*aerospike.yaml"]
}
Enter fullscreen mode Exit fullscreen mode

This associates all files ending in "aerospike.yaml" with the 6.3.0 Aerospike YAML schema.

Now you can use the code suggestions from the 6.3.0 Aerospike YAML schema to write your YAML configuration.

gif

Write Aerospike Configuration in YAML

Now that your IDE is using the Aerospike YAML schemas, you can write a yaml configuration with suggestions.
Aerospike configuration sections like 'service' will be suggested and possible fields and default values will be inserted.

gif

YAML Schema Suggestions!

Invalid fields and incorrect values will be highlighted in red.

gif

YAML Schema error highlighting.

Convert an existing Aerospike Configuration to YAML

Another way to get started with configuring Aerospike in yaml is to use the asconfig tool to convert
an existing configuration file. Make sure to supply the version of the Aerospike database the
configuration will be used with via the -a or --aerospike-version option.

Here we convert the default Aerospike configuration to YAML .

asconfig convert --aerospike-version 6.3.0 aerospike.conf
Enter fullscreen mode Exit fullscreen mode

output

logging:
    - any: info
      name: /var/log/aerospike/aerospike.log
namespaces:
    - memory-size: 4294967296
      name: test
      replication-factor: 2
      storage-engine:
        type: memory
    - memory-size: 4294967296
      name: bar
      replication-factor: 2
      storage-engine:
        type: memory
network:
    fabric:
        port: 3001
    heartbeat:
        interval: 150
        mode: multicast
        multicast-groups:
            - 239.1.99.222
        port: 9918
        timeout: 10
    info:
        port: 3003
    service:
        addresses:
            - any
        port: 3000
service:
    group: root
    pidfile: /var/run/aerospike/asd.pid
    proto-fd-max: 15000
    user: root

Enter fullscreen mode Exit fullscreen mode

Launch an Aerospike cluster with YAML configuration

Launching an Aerospike cluster in Docker using the YAML configuration is easy with asconfig.

The Aerospike server only understands configuration files in its .conf format for now, so we need to use asconfig to
convert the YAML file we wrote into Aerospike .conf format.

asconfig convert -a 6.3.0 aerospike.yaml -o aerospike.conf
Enter fullscreen mode Exit fullscreen mode

Then we map the converted configuration file into an Aerospike Docker container.

docker run -d -v ${PWD}:/opt/aerospike/etc/ --name aerospike -p 3000-3002:3000-3002 aerospike:ce-6.3.0.5 --config-file /opt/aerospike/etc/aerospike.conf
Enter fullscreen mode Exit fullscreen mode

Now we have an Aerospike node running in Docker using the configuration file we wrote in YAML.

Putting it all together, the one line command to convert the YAML configuration and run Aerospike using it is below.

asconfig convert -a 6.3.0 aerospike.yaml -o aerospike.conf; docker run -d -v ${PWD}:/opt/aerospike/etc/ --name aerospike -p 3000-3002:3000-3002 aerospike:ce-6.3.0.5 --config-file /opt/aerospike/etc/aerospike.conf
Enter fullscreen mode Exit fullscreen mode

The Docker portion of the command launches the Aerospike server container, maps the current working directory as a volume, and points it to the custom configuration file that we converted.

Learn more about Aerospike Observability & Management

Learn how Aerospike is adopting open standards like YAML, Open Telemetry and how to find clarity in complex systems in our upcoming Webinar - September 6th, 2023.

More Information

Top comments (0)