yamlエラー - 誤ったエスケープが原因である可能性がありますが、問題を識別できません。

yamlエラー - 誤ったエスケープが原因である可能性がありますが、問題を識別できません。

次の行はエラー(... request body malformed."})を発生させます。これはuser-data.ymlの一部であり、作成時にサーバーをブートストラップするためにDigital Ocean APIの一部としてcloud-initと共に使用されます。

sed -ie '\$a\ \n\#Add logfile information\nlogfile /var/log/ntp.log' /etc/ntp.conf

デフォルトでは、次のことを行う必要があります。

  • 空行を追加
  • 次の行にコメントを追加
  • 次の行に文字列を追加する

はい読み込み中 それ userdata.yml カーニバルからスクリプトは次のとおりです。

curl -X POST "https://api.digitalocean.com/v2/droplets" \
-d'{"name":"'$droplet_name'",
"region": "'$region'",
"size": "'$size'",
"image": "'$image'",
"backups":false,
"ipv6":false,
"private_networking":false,
"user_data":
"'"$(cat /user-data.yaml)"'",
  "ssh_keys": '$root_ssh_pub_key'}' \
  -H "Authorization: Bearer $api_key" \
  -H "Content-Type: application/json"

数時間ハッキングした後は、コード盲になることもあります。

ベストアンサー1

あなたのsedは私のシステムに「終了していない正規表現」を提供します。次の操作を実行できます。

echo abc > xy
sed -ie '$a\\n#Add logfile information\nlogfile /var/log/ntp.log' xy
cat xy

これは作る:

abc

#Add logfile information
logfile /var/log/ntp.log

YAMLアップロードについては、これが追加する内容に影響を与えるかどうかはわかりません。アップロードされたデータを調べることができない場合は、拡張YAMLをファイルaに作成し、カールを使用してアップロードするxyz.yaml方法で作成することをお勧めします-d @xyz.yaml。これにより、アップロードしたコンテンツが期待した内容と正確に一致することを確認できます。

おすすめ記事