使用 puppet 在文件中填充非 ASCII 密码

问题描述 投票:0回答:1

我正在尝试使用 puppet 将包含非 ascii 字符的密码填充到模板文件中。我已经将非 ascii 密码编码为 base64 并将其放置在 hiera-secrets 中。当我尝试解码模板中的密码时,它不起作用。

木偶

    class abc::container ( 
     $key_encrypt       = hiera('abc::configs::key_encrypt', undef), ){
    @docker_container { "${app}:${version}":     

   files                 => {       
   'configuration.properties'    => {         
   destination                   => '/opt/configuration.properties',         
    mount_mode                   => 'rw',         
    owner                        => 'root',         
    group                        => 'root',         
    mode                         => '0755',         
    content                      => template('abc/configuration.properties.erb'),       },     }, }

配置.properties.erb

<% 
require 'base64' 
key_encrypt = @key_encrypt key_encrypt_d = Base64.decode64(key_encrypt) 
%> 
master.key.2024-08-22-02-05=<%= @key_encrypt_d %>

下面是puppet执行时的错误

错误:无法从远程服务器检索目录:服务器上的错误 400:无法解析内联模板:US-ASCII 中的字节序列无效

我看到的只是模板文件中的base64编码值。我想得到真正的密码。

ruby encoding devops puppet hiera
1个回答
0
投票

我看到的只是模板文件中的base64编码值。我想得到真正的密码。

您设置了一个 local 变量

key_encrypt_d
,但随后输出 instance 变量
@key_encrypt_d
,它仍然保存着 Base64 编码值。

通过

<%= key_encrypt_d %>
(不带
@
)输出局部变量,或者通过
@key_encrypt_d = ...
(带
@
)更新实例变量。

或者,您可以在

Base64.decode64
内调用
<%= ... %>
,传递实例变量:

<% require 'base64' %>
master.key.2024-08-22-02-05=<%= Base64.decode64(@key_encrypt_d) %>
© www.soinside.com 2019 - 2024. All rights reserved.