我正在用YAML编写脚本以在Amazon Web Services上运行Ubuntu Web服务器。我想获取元数据(特别是公共DNS名称和当前的AWS区域),并将该信息附加到已经存在的html文件中。
我不确定如何实现一种方法来获取元数据并将其附加到html文件。 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html#instancedata-data-retrieval显示了我应该用来获取所需元数据的命令和URL,但是我不确定如何将其写入代码中,以便将这些详细信息写入index.html文件中。>
UserData:
'Fn::Base64': |
#!/bin/bash -x
# set timezone
timedatectl set-timezone America/New_York
# install and setup apache
apt-get update
apt-get install -y nginx
cd /var/www/html
echo "<title>User #1</title> <h1>You are User #1</h1> <h2></h2>" > index.html
service nginx start
现在,当显示html文件时,标题中将显示“ User#1”,页面上将显示“ You are User#1”。我想知道如何使公共DNS和AWS区域显示在其下方。
答案 0 :(得分:1)
您当前正在使用的机制不会产生valid HTML文件。所以你应该纠正它。
将公共DNS主机名和AWS区域注入到静态HTML文件中的最简单解决方案可能是使用带有占位符的模板index.html文件作为DNS主机名和AWS区域,例如:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Here is a title</title>
</head>
<body>
<p>AWS region: %AWS_REGION%</p>
<p>Public hostname: %DNS_HOSTNAME%</p>
</body>
</html>
然后是use sed to replace %AWS_REGION%
和%DNS_HOSTNAME%
以及使用curl
检索到的实际运行时值,例如:
请注意,要获取AWS区域,您需要parse it out of the AZ。