Feature teams: start here
For feature teams. This page shows the path from an empty folder to a running service. It also says what you need from your platform team and where to read next.
A feature team builds and runs a service. You describe the service in a file named joomiz.yaml, and you use the Joomiz CLI to check it and to make changes. Your platform team runs the control plane and decides which resources you can request.
What you need
Ask your platform team for these things:
- The address of the control plane.
- A way to sign in. This is a token, or the settings for
joomiz login. - The ID of your team. In the file, it is the value of
owner.id. - The types that you can use. See Which types can you use.
With the role owner:<team> you can register applications for your team. You can also plan and apply changes for the applications of your team.
You also need the Joomiz CLI. Before you start says where the CLI comes from.
The six steps
Every step is one CLI command. A command reads joomiz.yaml in the current folder. Use -f to name another file.
- Create the file. Run
joomiz init. It writes a newjoomiz.yamlwith the identity and the owner of your application. It does not contact the control plane. - Register the application. Run
joomiz register. It sends the file to the control plane for the first time. Registration stores the identity of the application, its owner, and the listsartifactsandtooling. You register an application once. - Check the file. Run
joomiz validate. It checks the whole file, including the references between its parts, and it lists every problem. It changes nothing. The application must be registered first. - Preview a change. Run
joomiz plan --environment <name>. It shows whatapplywould change in one environment. It changes nothing. Replace<name>with an environment of your file, for exampletest. - Make the change. Run
joomiz apply --environment <name>. Use the same file that you planned. Only one apply can run at a time for an application and an environment. If a plan was applied after yours,applyrefuses your plan. Runplanagain. - Read your runs. Run
joomiz runs. Every plan and every apply is saved as a run. Usejoomiz runs show <id>to read one run, andjoomiz runs watch <id>to follow a run while it works. Replace<id>with an ID from the list.
Register checks the structure of the file against the published schema, and it refuses an unknown type. It does not check the references between entries, the compatibility of types or duplicate IDs in the lists of an environment. validate and plan check those.
Three more commands help you:
joomiz loginsigns you in to the identity provider and saves the credential for other commands.joomiz tooling addadds a tool entry to your file.joomiz auditprints the audit trail that you may read.
Deploy your first service walks through steps 1 to 6 with real output.
Which types can you use
The answer depends on your platform. Each entry in tooling, artifacts, targets, deployments, managed-resources and consumed-resources has a type field. The value must be a type that your platform offers.
A platform keeps its types in its catalog. Your platform team adds or changes a type by releasing a new version of the control plane. The list is not the same on every platform. This guide cannot print one list that is always right.
Names such as postgres and cloud-foundry-app in this guide are real types from the examples. They are not a closed list.
To see the types on your platform, ask the control plane for its schema. The address of the control plane is in JOOMIZ_SERVER_URL. This request needs no token.
curl -s "$JOOMIZ_SERVER_URL/schema" | grep '"enum" : \[ "container-image"'
The schema is a long JSON document. The command grep shows one line of it: the allowed types of the artifacts list.
"enum" : [ "container-image", "jar", "kong-oas" ]
The schema is a JSON Schema. For each list, it names the allowed types in an enum. Your platform can show other types.
Which page for which job
| I want to | Read |
|---|---|
| Deploy a first service | Deploy your first service |
| Understand the parts of Joomiz | How Joomiz works |
| See the parts of a file | The shape of a joomiz.yaml file |
| Name my service and its owner | Describe your application |
| Declare my build output and my tools | Declare artifacts and tooling |
Describe test and prod | Define your environments |
| Say where my service runs | Choose where your service runs |
| Ask for a database or declare a topic | Request and use resources |
| Find the types that I can request | The types you can request |
| Point one value at another | Point one value at another |
| Give my application a secret | Use outputs and secrets |
| Check my file | Check your file |
| Preview a change | Preview a change |
| Make a change | Make a change |
| See what happened to a plan or an apply | Read your runs |
| Fix a resource that someone changed by hand | Find and fix drift |
| Fix a failed command | Fix an error |
| Sign in, and know which role I need | Sign in and get access |
| Get completion and checks in my editor | Set up your editor |
| Find an answer to a common question | Questions and troubleshooting |
| Look up a command or an option | CLI reference |
| Look up a status, a refusal or an exit code | Run results, refusal reasons and exit codes |
| Call the control plane from your own tool | Control plane API reference |
| Look up the schema that your editor reads | The joomiz.yaml schema |
| See a complete file | The examples quick-start, quick-start-with-database, references, partner-api and container-service |