在 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
打印每一行
我一直在尝试使用随机密码更新 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
打印每一行