Template CLI Enterprise
The Enterprise gitops CLI tool provides a set of commands to help you manage your templates.
Here we're going to talk about the gitops create template command that allows
you to render templates locally and airgapped, without a full WGE installation
in a Kubernetes cluster.
Use cases
- In CI/CD systems where you want to render a template and then use the raw output in a pipeline
- For quickly debugging templates
Restrictions
The gitops create template command only works with GitOpsTemplate objects.
It does not work with CAPITemplate objects. You should be able to migrate any
CAPITemplate objects to GitOpsTemplate with some small tweaks.
GitOpsTemplate or CAPITemplate?
The only difference between CAPITemplate and GitOpsTemplate is the default
value of these two annotations:
| Annotation | default value for CAPITemplate | default value for GitOpsTemplate |
|---|---|---|
templates.weave.works/add-common-bases | "true" | "false" |
templates.weave.works/inject-prune-annotations | "true" | "false" |
Installation
See the Weave Gitops Enterprise installation instructions for details on how to install the EE gitops CLI tool.
Getting started
Using a local GitOpsTemplate manifest with required parameters exported in the
environment, the command can render the template to one of the following:
- The current kubecontext directly (default)
- stdout with
--export - The local file system with
--output-dir, this will use thespec.resourcestemplates[].pathfields in the template to determine where to write the rendered files. This is the recommended approach for GitOps as you can then commit the rendered files to your repository.
gitops create template \
--template-file capd-template.yaml \
--output-dir ./clusters/ \
--values CLUSTER_NAME=foo
Profiles
As in the UI you can add profiles to your template. However instead of reading
the latest version of a profile and its layers from a HelmRepository object
in the cluster, we instead read from your local helm cache.
helm repo add weaveworks-charts https://raw.githubusercontent.com/weaveworks/weave-gitops-profile-examples/gh-pages
helm repo update
This particular helm repo provides a version of the cert-manager repo and others.
Supplying values to a profile
You can supply a values.yaml file to a profile using the values parameter.
For example we can supply cert-manager's values.yaml with:
gitops create template \
--template-file capd-template.yaml \
--output-dir ./out \
--values CLUSTER_NAME=foo \
--profiles "name=cert-manager,namespace=foo,version=>0.1,values=cert-manager-values.yaml"
Using a config file
Instead of specifying the parameters on the command line you can supply a config file. For example the above invocation can be replaced like so:
template-file: capd-capi-template.yaml
output-dir: ./out
values:
- CLUSTER_NAME=foo
profiles:
- name=cert-manager,namespace=foo,version=>0.1,values=cert-manager-values.yaml
and executed with:
gitops create template --config config.yaml