YAML Schema Suggestions!
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:
Setup an IDE for Aerospike configuration suggestions.
Write an Aerospike configuration file in YAML.
Run an Aerospike cluster using the YAML configuration.
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.
Install the Red Hat YAML VS Code extension.
2. In VS Code, go to Code->Preferences->Settings. Search for "YAML schema" and click "edit in settings.json".
3. 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"]
}
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.
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.
YAML Schema Suggestions!
Invalid fields and incorrect values will be highlighted in red.
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
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
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
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
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
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.