Furyctl is package manager for Fury distribution. It’s simple to use and reads a single Furyfile to download packages you need. Fury distribution offers three types of packages:
- Bases : Sets of Kustomize bases to deploy basic components in Kubernetes
- Modules: Terraform modules to deploy kubernetes infrastructure and it’s dependencies
- Roles: Ansible roles for deploying, configuring and managing a Kubernetes infrastructure
Furyfile is a simple YAML formatted file where you list which packages(and versions) you want to have. You can omit a type if you don't need any of its packages. An example Furyfile with packages listed would be like following:
# all sections are optional
# map of prefixes and versions used to force a specific version for all the matching roles/modules/bases
versions:
# e.g. will force version v1.15.4 if the name matches "aws*"
aws: v1.15.4
monitoring: master
roles:
- name: aws/etcd
- name: aws/kube-control-plane
modules:
- name: aws/aws-vpc
- name: aws/aws-kubernetes
bases:
- name: monitoring
- name: logging
# versions can be overridden if needed by specifying them for each package
version: master
You can get all packages in a group by using group name (like logging
) or single packages under a group
(like monitoring/prometheus-operator
).
You can find furyctl
binaries on the Releases page.
Supported architectures are (64 bit):
linux
darwin
Download right binary for your architecture and add it to your PATH. Assuming it's downloaded in your
~/Downloads
folder, you can run following commands (replacing {arch}
with your architecture):
chmod +x ~/Downloads/furyctl-{arch}-amd64 && mv ~/Downloads/furyctl-{arch}-amd64 /usr/local/bin/furyctl
If you are a macOS user:
$ brew tap sighupio/furyctl
$ brew install furyctl
- Once you installed furyctl binary you can see available commands with
furyctl --help
:
$ furyctl --help
A command line tool to manage cluster deployment with kubernetes
Usage:
furyctl [command]
Available Commands:
help Help about any command
install Download dependencies specified in Furyfile.yml
printDefault Prints a basic Furyfile used to generate an INFRA project
version Prints the client version information
Flags:
-h, --help help for furyctl
-t, --toggle Help message for toggle
Use "furyctl [command] --help" for more information about a command.
- To install packages, you can run
furyctl install
(within the same directory where your Furyfile is located):
$ furyctl install
2019/02/04 17:46:07 ----
2019/02/04 17:46:07 SRC: [email protected]:sighup-io/fury-kubernetes-monitoring//katalog/prometheus-operator?ref=master
2019/02/04 17:46:07 DST: vendor/katalog/monitoring/prometheus-operator
2019/02/04 17:46:07 ----
2019/02/04 17:46:07 SRC: [email protected]:sighup-io/fury-kubernetes-monitoring//katalog/prometheus-operator?ref=master
2019/02/04 17:46:07 DST: vendor/katalog/monitoring/prometheus-operator
...
You will find your packages under vendor/{roles,modules,katalog}
directories created where you called furyctl
.
- You can get furyctl version with
furyctl version
:
$ furyctl version
Furyctl version 0.1.0
- You can print a Furyfile example with
furyctl printDefault
:
$ furyctl printDefault
roles:
- name: aws/kube-node-common
version: v1.0.0
bases:
- name: monitoring/prometheus-operated
version: v1.0.0
- name: monitoring/prometheus-operator
version: v1.0.0