Tool to declaratively manage ArangoDB collections (with indexes) and searchviews.
We are heavy user of Kafka. we manage our Kafka topics using TopicCtl.
Similar to topicctl, we wanted to manage our Arango objects in a declarative way.
You can set it up in one of the following ways:
- go get github.com/psykidellic/arangoctl/cmd/arangoctl (tested with only Go 1.16)
- Clone the repo and run: go build cmd/arangoctl
Setup a quick cluster using docker-compose (follow this blog) spinning up arangodb using docker-compose.
Apply the arango resources:
arangoctl apply --cluster-config examples/cluster-auth.yaml examples/resources/*
Now visit the Arango Web UI to see the two resources being present.
NOTE: Internally, we are using the official Arango go-driver.
Every arangoctl command will have a common --cluster-config option that allows you to provide details of the Arango cluster on which the commands will be executed.
Currently, we only support connection with simple auth or no auth. Example of each is provided in the examples folder.
Will declaratively manage resources. For collections, we create the collection if its not present and will also create any of the listed indexes. For existing collections, it will do a comparison of indexes between what is defined in the yaml and what is present and update accordingly (including adding/removing fields from indexes). Comparison is done by index and field name. It will DELETE indexes which are not defined in the resource specification.
The goal is that you will always use arangoctl and keep your resources defined in source control.
NOTE: As of now, we dont allow to delete resources. You will have to do it using other mechanism.
See an example at examples/resources/01-fooview.yaml. You define a resource to create collection by setting "Collection" for Kind. meta.type can be one of:
- edge
- collection
As of now, the only spec for a collection is supported is spec.indexes. This defines a list of index, type and list of columns in the index.
You can configure searchview index based on the docs. The same can be mapped to this driver structure ArangoSearchViewProperties. The spec of arangoctl resource, follows the same structure.