Ansible/神社 : how to convert number to binary format

标签 ansible jinja2

我需要生成一个随机的 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 对其进行编码,但不知道如何将数字转换为二进制格式。

最佳答案

不是转换(这是不可能的,因为您不能使用 native Ansible 数据结构存储/处理二进制文件),而是编写一个简单的过滤器插件 (filter_plugins/myfilters.py) 来生成内容你想要:

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 }}"

关于Ansible/神社 : how to convert number to binary format,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51283345/

相关文章:

json - Ansible:删除 json 文件中的空格

python - 将变量传递到神社导入或从父 html 文件包含

python - 从 flask-sqlalchemy 中的连接查询中读取

python - Flask + python + jinja2 : how can I partialy replace template arguments with html code?

python - 将 python 字典传递给模板

ansible - 如何将文件从远程复制到主机ansible?

windows - Ansible Windows ACL

ssl - Letsencrypt + nginx + autorenewal + 基础架构即代码?

linux - 如何将迭代循环列表转换为字符串以在 Linux 中使用

python-2.7 - 用 jinja 解析 url