无论是在云init用户数据runcmd中,还是在自动安装后期命令中,我都需要从本质上运行这个命令,作为LUKS加密卷的Clevis + Tang初始化的一部分:
echo '<secret>' | clevis luks bind -d /dev/sda2 tang '{"url": "http://<ip-tangserver>" , "adv": "/tmp/adv.jws" }'问题是,我很难确定这是否真的可以使用runcmd或后继命令,如果是的话,我如何能够以符合YAML的方式做到这一点,例如:
runcmd:
- echo 'some-luks-temp-passwd' | clevis luks bind -d /dev/vda3 tang '{"url": "http://192.168.122.150" , "adv": "/tmp/adv.jws" }'将上面的整个字符串括起来似乎也不起作用,yamllint仍然显示了语法错误:
runcmd:
- "echo 'some-luks-temp-passwd' | clevis luks bind -d /dev/vda3 tang '{"url": "http://192.168.122.150" , "adv": "/tmp/adv.jws" }'"谢谢!
发布于 2022-02-10 23:26:22
您可能会使用YAML多行语法。我不知道您当前的语法失败了什么,但是这里有一个autoinstall片段,它使用json、管道、输出重定向和使用多行语法的Heredoc。
#cloud-config
runcmd:
- |
echo '{"foo":"FOO" , "bar" : "BAR"}' > /run/cmd.log
cat <<EOF | xxd >> /run/cmd.log
{
"foo": "FOO",
"bar": "BAR"
}
EOF这是生成的/run/cmd.log文件
root@ubuntu-server:/# cat /run/cmd.log
{"foo":"FOO" , "bar" : "BAR"}
00000000: 7b0a 2020 2266 6f6f 223a 2022 464f 4f22 {. "foo": "FOO"
00000010: 2c0a 2020 2262 6172 223a 2022 4241 5222 ,. "bar": "BAR"
00000020: 0a7d 0a .}.https://askubuntu.com/questions/1390768
复制相似问题