github.com/Ilhicas/nomad@v1.0.4-0.20210304152020-e86851182bc3/website/content/docs/job-specification/hcl2/functions/uuid/uuidv5.mdx (about) 1 --- 2 layout: docs 3 page_title: uuidv5 - Functions - Configuration Language 4 sidebar_title: uuidv5 5 description: |- 6 The uuidv5 function generates a uuid v5 string representation of the value in 7 the specified namespace. 8 --- 9 10 # `uuidv5` Function 11 12 `uuidv5` generates a _name-based_ UUID, as described in [RFC 4122 section 13 4.3](https://tools.ietf.org/html/rfc4122#section-4.3), also known as a "version 14 5" UUID. 15 16 ```hcl 17 uuidv5(namespace, name) 18 ``` 19 20 Unlike the pseudo-random UUIDs generated by [`uuidv4`](/docs/job-specification/hcl2/functions/uuid/uuidv4), 21 name-based UUIDs derive from namespace and an name, producing the same UUID 22 value every time if the namespace and name are unchanged. 23 24 Name-based UUID namespaces are themselves UUIDs, but for readability this 25 function accepts some keywords as aliases for the namespaces that were assigned 26 by RFC 4122: 27 28 | Keyword | Namespace ID | Name format | 29 | -------- | -------------------------------------- | ---------------------------------------------------------------------------- | 30 | `"dns"` | `6ba7b810-9dad-11d1-80b4-00c04fd430c8` | A fully-qualified DNS domain name. | 31 | `"url"` | `6ba7b811-9dad-11d1-80b4-00c04fd430c8` | Any valid URL as defined in [RFC 3986](https://tools.ietf.org/html/rfc3986). | 32 | `"oid"` | `6ba7b812-9dad-11d1-80b4-00c04fd430c8` | An [ISO/IEC object identifier](https://oidref.com/) | 33 | `"x500"` | `6ba7b814-9dad-11d1-80b4-00c04fd430c8` | [X.500 Distinguished Name](https://tools.ietf.org/html/rfc1779) | 34 35 To use any other namespace not included in the above table, pass its assigned 36 namespace ID directly in the first argument in the usual UUID string format. 37 38 ## Examples 39 40 Use the namespace keywords where possible, to make the intent more obvious to 41 a future reader: 42 43 ```shell-session 44 > uuidv5("dns", "nomadproject.io") 45 d2616d48-e1cb-5b87-8a8c-46355decc76a 46 47 > uuidv5("url", "https://nomadproject.io/") 48 a1572394-3948-5251-b0c7-b4ded43587b4 49 50 > uuidv5("oid", "1.3.6.1.4") 51 af9d40a5-7a36-5c07-b23a-851cd99fbfa5 52 53 > uuidv5("x500", "CN=Example,C=GB") 54 84e09961-4aa4-57f8-95b7-03edb1073253 55 ``` 56 57 The namespace keywords treated as equivalent to their corresponding namespace 58 UUIDs, and in some special cases it may be more appropriate to use the 59 UUID form: 60 61 ```shell-session 62 > uuidv5("6ba7b810-9dad-11d1-80b4-00c04fd430c8", "nomadproject.io") 63 d2616d48-e1cb-5b87-8a8c-46355decc76a 64 ``` 65 66 If you wish to use a namespace defined outside of RFC 4122, using the namespace 67 UUID is required because no corresponding keyword is available: 68 69 ```shell-session 70 > uuidv5("743ac3c0-3bf7-4a5b-9e6c-59360447c757", "LIBS:diskfont.library") 71 ede1a974-df7e-5f17-84b9-76208818b2c8 72 ``` 73 74 When using raw UUID namespaces, consider including a comment alongside the 75 expression that indicates which namespace this represents in a 76 human-significant manner, such as by reference to the standard that defined it. 77 78 ## Related Functions 79 80 - [`uuidv4`](/docs/job-specification/hcl2/functions/uuid/uuidv4), which generates pseudorandom UUIDs.