Hello, my friend. Stay awhile and listen.
I am going to tell you all about the StackStorm Exchange Index, a sacred tome holding detailed accounts of every StackStorm pack that the Order deemed worthy of the world to see.
The index is currently compiled into a single JSON object and stored as a file:
v1/index.json.
Packs are identified by names, and their metadata is copied as is from the
pack.yaml
files. repo_url
is the only property that is stored in the index
but not in pack.yaml
; it contains, quite unsurprisingly, a URL for the git
repository to clone the pack from.
This is a simplified index example:
{
"metadata": {
"generated_ts": 1476974445,
"hash": "79c790a6ca3c22783f4adabd5c163059",
},
"packs": {
"aws": {
"name": "aws",
"version": "0.0.1",
<other metadata from pack.yaml>
"repo_url": "https://github.com/StackStorm-Exchange/stackstorm-aws/"
},
"sensu": {
"name": "sensu",
"version": "0.3.7",
<other metadata from pack.yaml>
"repo_url": "https://github.com/StackStorm-Exchange/stackstorm-sensu/"
}
}
}
Rebuilding of the StackStorm Exchange index is performed on every pack.yaml
change in the master
branch of a tracked StackStorm Exchange pack. The
rebuild is automatic and rarely takes more than a couple minutes. If your PR
has been merged for some time, and the index has not been updated, please
raise an issue.
Our CI repository contains the necessary scripts, and you can take a peek to see how the rebuild works. The repository is public, so the whole process is fully transparent!
The index_urls
parameter inside st2.conf
supports a comma-separated list
of index files. Building your own index might be useful if you have a bunch
of internal packs: you would be able to keep track of them in a centralized
way and make them easily discoverable in your StackStorm instances.
Additionally, if your StackStorm deployment is subject to a security policy
or heavily firewalled, you can clone the necessary packs to an internal
server and host your own index with modified repo_url
s.