我需要生成一个随机的128位数字,并进行b64编码的二进制表示。
示例:
vagrant@ubuntu1804:~$ consul keygen
TUlzi8BWwPQR1zyjR1TiAQ==
采用b64解码格式:
vagrant@ubuntu1804:~$ consul keygen | base64 -d|hexdump -C
00000000 46 b8 72 4b ce 9a 2a 14 09 7b 16 51 99 1b 39 e0 |F�rK�.*..{.Q..9�|
00000010
我可以使用random
过滤器生成大量数字:
{{ 340282366920938463463374607431768211456 | random }}
我知道我可以用b64encode
对其进行编码,但是不知道如何将数字转换为二进制格式。
答案 0 :(得分:2)
编写一个简单的过滤器插件(filter_plugins/myfilters.py
来生成所需的内容,而不是进行转换(这是不可能的,因为您无法使用本机Ansible数据结构存储/处理二进制文件):
import os
import base64
class FilterModule(object):
def filters(self):
return {
'binary_random_b64_encoded': self.binary_random_b64_encoded
}
def binary_random_b64_encoded(self, size):
return base64.b64encode(os.urandom(size)).decode('ascii')
并使用它(具有所需的二进制数据大小):
- debug:
msg: "{{ 16 | binary_random_b64_encoded }}"