mirror of
https://github.com/kemko/nomad.git
synced 2026-01-05 09:55:44 +03:00
* Move commands from docs to its own root-level directory * temporarily use modified dev-portal branch with nomad ia changes * explicitly clone nomad ia exp branch * retrigger build, fixed dev-portal broken build * architecture, concepts and get started individual pages * fix get started section destinations * reference section * update repo comment in website-build.sh to show branch * docs nav file update capitalization * update capitalization to force deploy * remove nomad-vs-kubernetes dir; move content to what is nomad pg * job section * Nomad operations category, deploy section * operations category, govern section * operations - manage * operations/scale; concepts scheduling fix * networking * monitor * secure section * remote auth-methods folder and move up pages to sso; linkcheck * Fix install2deploy redirects * fix architecture redirects * Job section: Add missing section index pages * Add section index pages so breadcrumbs build correctly * concepts/index fix front matter indentation * move task driver plugin config to new deploy section * Finish adding full URL to tutorials links in nav * change SSO to Authentication in nav and file system * Docs NomadIA: Move tutorials into NomadIA branch (#26132) * Move governance and policy from tutorials to docs * Move tutorials content to job-declare section * run jobs section * stateful workloads * advanced job scheduling * deploy section * manage section * monitor section * secure/acl and secure/authorization * fix example that contains an unseal key in real format * remove images from sso-vault * secure/traffic * secure/workload-identities * vault-acl change unseal key and root token in command output sample * remove lines from sample output * fix front matter * move nomad pack tutorials to tools * search/replace /nomad/tutorials links * update acl overview with content from deleted architecture/acl * fix spelling mistake * linkcheck - fix broken links * fix link to Nomad variables tutorial * fix link to Prometheus tutorial * move who uses Nomad to use cases page; move spec/config shortcuts add dividers * Move Consul out of Integrations; move namespaces to govern * move integrations/vault to secure/vault; delete integrations * move ref arch to docs; rename Deploy Nomad back to Install Nomad * address feedback * linkcheck fixes * Fixed raw_exec redirect * add info from /nomad/tutorials/manage-jobs/jobs * update page content with newer tutorial * link updates for architecture sub-folders * Add redirects for removed section index pages. Fix links. * fix broken links from linkcheck * Revert to use dev-portal main branch instead of nomadIA branch * build workaround: add intro-nav-data.json with single entry * fix content-check error * add intro directory to get around Vercel build error * workound for emtpry directory * remove mdx from /intro/ to fix content-check and git snafu * Add intro index.mdx so Vercel build should work --------- Co-authored-by: Tu Nguyen <im2nguyen@gmail.com>
141 lines
2.7 KiB
Plaintext
141 lines
2.7 KiB
Plaintext
---
|
|
layout: docs
|
|
page_title: range - Functions - Configuration Language
|
|
description: The range function generates sequences of numbers.
|
|
---
|
|
|
|
# `range` Function
|
|
|
|
`range` generates a list of numbers using a start value, a limit value,
|
|
and a step value.
|
|
|
|
```hcl
|
|
range(max)
|
|
range(start, limit)
|
|
range(start, limit, step)
|
|
```
|
|
|
|
The `start` and `step` arguments can be omitted, in which case `start` defaults
|
|
to zero and `step` defaults to either one or negative one depending on whether
|
|
`limit` is greater than or less than `start`.
|
|
|
|
The resulting list is created by starting with the given `start` value and
|
|
repeatedly adding `step` to it until the result is equal to or beyond `limit`.
|
|
|
|
The interpretation of `limit` depends on the direction of `step`: for a positive
|
|
step, the sequence is complete when the next number is greater than or equal
|
|
to `limit`. For a negative step, it's complete when less than or equal.
|
|
|
|
The sequence-building algorithm follows the following pseudocode:
|
|
|
|
```text
|
|
let num = start
|
|
while num < limit: (or, for negative step, num >= limit)
|
|
append num to the sequence
|
|
num = num + step
|
|
return the sequence
|
|
```
|
|
|
|
Because the sequence is created as a physical list in memory, Nomad imposes
|
|
an artificial limit of 1024 numbers in the resulting sequence in order to avoid
|
|
unbounded memory usage if, for example, a very large value were accidentally
|
|
passed as the limit or a very small value as the step. If the algorithm above
|
|
would append the 1025th number to the sequence, the function immediately exits
|
|
with an error.
|
|
|
|
We recommend iterating over existing collections where possible, rather than
|
|
creating ranges. However, creating small numerical sequences can sometimes
|
|
be useful when combined with other collections in collection-manipulation
|
|
functions or `for` expressions.
|
|
|
|
## Examples
|
|
|
|
```shell-session
|
|
> range(3)
|
|
[
|
|
0,
|
|
1,
|
|
2,
|
|
]
|
|
|
|
> range(1, 4)
|
|
[
|
|
1,
|
|
2,
|
|
3,
|
|
]
|
|
|
|
> range(1, 8, 2)
|
|
[
|
|
1,
|
|
3,
|
|
5,
|
|
7,
|
|
]
|
|
|
|
> range(1, 4, 0.5)
|
|
[
|
|
1,
|
|
1.5,
|
|
2,
|
|
2.5,
|
|
3,
|
|
3.5,
|
|
]
|
|
|
|
> range(4, 1)
|
|
[
|
|
4,
|
|
3,
|
|
2,
|
|
]
|
|
|
|
> range(10, 5, -2)
|
|
[
|
|
10,
|
|
8,
|
|
6,
|
|
]
|
|
```
|
|
|
|
The `range` function is primarily useful when working with other collections
|
|
to produce a certain number of instances of something. For example:
|
|
|
|
```hcl
|
|
variable "name_counts" {
|
|
type = map(number)
|
|
default = {
|
|
"foo" = 2
|
|
"bar" = 4
|
|
}
|
|
}
|
|
|
|
locals {
|
|
expanded_names = {
|
|
for name, count in var.name_counts : name => [
|
|
for i in range(count) : format("%s%02d", name, i)
|
|
]
|
|
}
|
|
}
|
|
|
|
output "expanded_names" {
|
|
value = local.expanded_names
|
|
}
|
|
|
|
# Produces the following expanded_names value when run with the default
|
|
# "name_counts":
|
|
#
|
|
# {
|
|
# "bar" = [
|
|
# "bar00",
|
|
# "bar01",
|
|
# "bar02",
|
|
# "bar03",
|
|
# ]
|
|
# "foo" = [
|
|
# "foo00",
|
|
# "foo01",
|
|
# ]
|
|
# }
|
|
```
|