Cesium本地文档部署与第一个实例
Posted DTCLOUD
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cesium本地文档部署与第一个实例相关的知识,希望对你有一定的参考价值。
Cesium本地文档部署与第一个实例
(1)本地文档与示例部署
Cesium最新版本下载地址:https://cesium.com/downloads/,本次教程用的1.86版本的Cesium,如果当前版本较高,可点击Previous releases找到1.86版本的Cesium下载。下载之后进行解压,解压后的目录如下所示。
├── Apps Cesium详细的范例程序。
├── Buidld release包,打包后的库文件(压缩和未压缩)、SDK文档
├── Source Cesium源码
├── Specs Cesium的自动话单元测试,采用Jasmine框架,可以实现自动化测试以及接口覆盖率等统计效果
├── ThirdParty 外部依赖库,不同于Cesium的第三方库
├── idnex.html Web导航首页
├── server.cjs 基于node.js的web服务应用
├── package.json node包管理器
├── gulpfile.js 打包脚本
用vscode打开解压后的文件夹,右击跟路径下的index.html,选“Open with Live Server”。这样就可以浏览官方文档与官方示例。
- Document :完整的API文档和参考。
- Sandcastle:Cesium的实时代码编辑器和示例库。浏览突出显示Cesium API特性的示例,并在web浏览器中编辑和运行它们。在Sandcastle中创建的应用程序可以保存和下载。
- Cesium ion:Cesium在线资源-地形(createWorldTerrain)、影像(createWorldImagery/IonImageryProvider)、OSM(createOsmBuildings)、点云(IonResource.fromAssetId)、3DTiles等
- Local links:Cesium本地资源链接,文档、示例、单元测试等
- External links:Cesium外部资源链接,社区、博客、GitHub等
- Cesium ion:Cesium在线资源-地形(createWorldTerrain)、影像(createWorldImagery/IonImageryProvider)、OSM(createOsmBuildings)、点云(IonResource.fromAssetId)、3DTiles等
- Local links:Cesium本地资源链接,文档、示例、单元测试等
- External links:Cesium外部资源链接,社区、博客、GitHub等
(2)第一个实例搭建
通过在html文件中引用cesium比较简单,新建文件夹(examples),将上面的Build文件夹(只拷贝里面的Cesium)拷贝到examples中,在examples根路径下创建html文件,代码如下:
<!DOCTYPE html>
<head>
<title>Hello World</title>
<script src="./Cesium/Cesium.js"></script>
<link href="./Cesium/Widgets/widgets.css" rel="stylesheet" />
<style>
html,
body,
#cesiumContainer
width: 100%;
height: 100%;
margin: 0;
padding: 0;
overflow: hidden;
</style>
</head>
<body>
<div id="cesiumContainer"></div>
<script>
var viewer = new Cesium.Viewer("cesiumContainer");
</script>
</body>
在不使用 Terraform 文件配置器的情况下将本地文件部署到实例
【中文标题】在不使用 Terraform 文件配置器的情况下将本地文件部署到实例【英文标题】:Deploy local files to instances without using Terraform file provisioners 【发布时间】:2020-02-26 02:02:08 【问题描述】:作为在 *** 上发帖的其他几位用户,我遇到了文件配置器的问题,Terraform 文档说我们不应该依赖它们。
解决文件配置器的最佳方法是什么 - 特别是对于本地配置文件和脚本?
【问题讨论】:
【参考方案1】:一种运行良好且不需要直接连接到实例的解决方案是使用 userdata 作为挂钩从文件的 base64 版本“安装”文件。
我们实际上可以将文件作为 base64 字符串嵌入到用户数据初始化脚本中。这适用于 AWS 中的 Windows 和 Linux 实例,并且还兼容在启动时运行 userdata 脚本。
解决方案说明:
-
在
terraform plan
期间,使用 terraform 函数 base64encode(file("path/to/file"))
将您需要的任何本地文件编码为 base64 字符串。
(可选)在用户数据执行开始时保存一个标记文件(_INIT_STARTED_
);此文件将具有 userdata
执行开始时的创建时间戳。
在运行 实际 userdata 脚本之前,将 base64 字符串写入文本文件。 (实际命令在 windows 和 linux 之间有所不同,请参见下面的示例。)
运行userdata
脚本本身(userdata_win.bat
或userdata_lin.sh
)
(可选)最后,保存第二个标记文件 (_INIT_COMPLETE_),该文件将具有 userdata
脚本完成时的创建时间戳。 (此文件的缺失也有助于在登录实例后检测脚本故障和/或仍在运行的脚本。)
对于 AWS Linux 实例:
data "template_file" "userdata_lin"
template = <<EOF
#!/bin/bash
mkdir -p /home/ubuntu/setup-scripts
cd /home/ubuntu/setup-scripts
touch _INIT_STARTED_
echo $base64encode(file("$path.module/userdata_lin.sh")) | base64 --decode > userdata.sh
echo $base64encode(file("$path.module/config.json")) | base64 --decode > config.json
$file("$path.module/userdata_lin.sh")
sudo chmod 777 *
touch _INIT_COMPLETE_
EOF
# ...
resource "aws_instance" "my_linux_instance"
# ...
user_data = data.template_file.userdata_lin.rendered
对于 AWS Windows 实例:
data "template_file" "userdata_win"
template = <<EOF
<script>
mkdir C:\Users\Administrator\setup-scripts
cd C:\Users\Administrator\setup-scripts
echo "" > _INIT_STARTED_
echo $base64encode(file("$path.module/userdata_win.bat")) > tmp1.b64 && certutil -decode tmp1.b64 userdata.bat
echo $base64encode(file("$path.module/config.json")) > tmp2.b64 && certutil -decode tmp2.b64 config.json
$file("$path.module/userdata_win.bat")
echo "" > _INIT_COMPLETE_
</script>
<persist>false</persist>
EOF
# ...
resource "aws_instance" "my_windows_instance"
# ...
user_data = data.template_file.userdata_win.rendered
【讨论】:
感谢这个想法!如果cloud-config 可用,您可以使用write_files 和b64
编码。以上是关于Cesium本地文档部署与第一个实例的主要内容,如果未能解决你的问题,请参考以下文章