在 yaml 文件中随机化密码

Randomize password in yaml file

我一直在尝试使用随机密码更新 helm values.yaml。

我的做法是加一个placeholder

global:
    my_password: "password-placeholder"
another_service
    service_password: "password-placeholder"

我尝试用 openssl rand -base64 12 生成密码。我正在寻找可以循环并创建这些密码的字符串替换 bash 命令。

已尝试 yq,但它有一个错误,它会删除文件中的一些注释。

已尝试 sed 但不确定如何每次都用唯一密码替换 password-placeholder

寻找建议。

你可以使用 awk

awk -v placeholder='password-placeholder' '
    [=10=] ~ placeholder {
        cmd = "openssl rand -base64 12"
        cmd | getline pass
        close(cmd)
        sub(placeholder,pass)
    } 1
' file.yml
解释:
  • [=12=] ~ placeholder {...} 选择与 placeholder 中包含的 regex 匹配的行并为它们执行 ...

  • "openssl rand -base64 12" | getline pass 将 openssl 命令的结果加载到 pass 变量中

  • sub(placeholder,pass)pass

    的内容替换(在当前行中)正则表达式 placeholder 的第一个匹配项
  • 1 打印每一行