我知道在Ansible中,我们可以用唯一的种子生成随机数
- name: generate random suffix
set_fact:
rand_num: "{{ 1000000 | random(seed=variable_name) | hash('md5') }}"
所以,如果我想用种子生成一个随机字符串,我该如何生成它?
我们有可用于随机字符串生成的Ansible集合-随机字符串
示例:
- name: Generate a random string with all lower case characters
debug:
var: query('community.general.random_string', upper=false, numbers=false, special=false)
但在这里,我找不到播种的选择。
感谢
根据文档random_string
查找–生成随机字符串和示例
upper=false, numbers=false, special=false
我知道你喜欢生成一个长度为8
的随机字符串(因为这是模块random_string
的参数长度的默认值(,没有数字和特殊字符,只使用小写。换句话说,就是一个具有特定属性的短随机字符串。
如何生成一个长度为8、没有数字和特殊字符且只有小写的幂等随机字符串
为此,可以使用password
查找——检索或生成随机。。。也只需要定义结果集(chars=ascii_letters,digit length=8' | lower
(的属性。
---
- hosts: localhost
become: false
gather_facts: false
tasks:
- name: Show string with 8 lowercase characters
debug:
msg: "{{ lookup('password', '/dev/null chars=ascii_letters,digit length=8') | lower }}"
截至Ansible v2.12 a参数:种子可用
- name: Generate password
set_fact:
PASSWORD: "{{ lookup('password', '/dev/null chars=ascii_letters,digit length=8', seed=inventory_hostname) | lower }}"
使结果幂等。
通过这种方法,可以获得具有所需属性的字符串。random_string
模块支持定义更多或其他属性,这些属性不是您正在使用的,而是根据您的初始描述而依赖的。