mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-05-06 13:22:48 +00:00
Add filter to turn a string into a UUID
This filter was made because I needed to create idempotent UUIDs when installing the agent for Go (http://go.cd), which uses UUIds to distinguish the agents from each other. It uses a newly created Ansible namespace to distinguish UUIDs created by Ansible from any other source. The new namespace is a random one created by uuidgen on OSX.
This commit is contained in:
@@ -29,6 +29,7 @@ import hashlib
|
||||
import string
|
||||
import operator as py_operator
|
||||
from random import SystemRandom, shuffle
|
||||
import uuid
|
||||
|
||||
import yaml
|
||||
from jinja2.filters import environmentfilter
|
||||
@@ -38,6 +39,9 @@ from ansible import errors
|
||||
from ansible.utils import md5s, checksum_s
|
||||
|
||||
|
||||
UUID_NAMESPACE_ANSIBLE = uuid.UUID('361E6D51-FAEC-444A-9079-341386DA8E2E')
|
||||
|
||||
|
||||
def to_nice_yaml(*a, **kw):
|
||||
'''Make verbose, human readable yaml'''
|
||||
return yaml.safe_dump(*a, indent=4, allow_unicode=True, default_flow_style=False, **kw)
|
||||
@@ -297,6 +301,8 @@ def get_encrypted_password(password, hashtype='sha512', salt=None):
|
||||
|
||||
return None
|
||||
|
||||
def to_uuid(string):
|
||||
return str(uuid.uuid5(UUID_NAMESPACE_ANSIBLE, str(string)))
|
||||
|
||||
class FilterModule(object):
|
||||
''' Ansible core jinja2 filters '''
|
||||
@@ -307,6 +313,9 @@ class FilterModule(object):
|
||||
'b64decode': base64.b64decode,
|
||||
'b64encode': base64.b64encode,
|
||||
|
||||
# uuid
|
||||
'to_uuid': to_uuid,
|
||||
|
||||
# json
|
||||
'to_json': to_json,
|
||||
'to_nice_json': to_nice_json,
|
||||
|
||||
Reference in New Issue
Block a user