DE Zoomcamp Week1 Note(1.3 & 1.4)
1.3.1
Terraform
一种代码工具,自定义云和本地资源,对文件进行版本控制,重复使用和共享,可使用一直的工作流程在整个生命周期内配置和管理所有基础设施。
Why use Terraform
Simplicity in keeping track of infrastructure 简化基础设施管理
- 使用声明式语法,可以清晰定义和跟踪基础设施状态。
- 通过代码文件轻松管理变更历史。
Easier collaboration 更容易的协作
- 代码存储在版本控制系统(如 Git)中,支持团队共同编辑和审查。
- 减少人为错误,提升协作效率。
Reproducibility可重复性
- 相同代码可用于创建开发、测试、生产等多个环境。
- 确保不同环境的一致性。
Ensure resources are removed确保资源被清理
- 自动化管理资源生命周期,包括资源销毁。
- 避免遗留资源浪费成本或引发安全问题。
What Terraform is not
**无法管理和更新基础设施中的代码 ** Does not manage and update code on infrastructure
- Terraform 专注于基础设施的配置管理,而不负责应用程序代码的部署或更新。
无法更改不可变资源 Does not allow changes to immutable resources
- 对于标记为不可变的资源(如某些云服务配置),Terraform 无法直接进行修改,需要销毁并重新创建。
**无法管理未定义在 Terraform 文件中的资源 ** Cannot manage resources not defined in Terraform files
- Terraform 只能管理其配置文件中明确定义的资源,无法识别或管理手动创建的资源。
key Terraform Commands
初始化项目
1 | terraform init |
- 下载和配置必要的 providers。
- 初始化 Terraform 工作目录。
预览计划
1 | terraform plan |
- 显示即将执行的更改计划。
- 可通过
-out
参数保存计
应用更改
1 | terraform apply |
执行计划,创建或更改资源。
如果之前保存了计划文件:
1
terraform apply tfplan
销毁资源
1 | terraform destroy |
删除所有由当前配置文件管理的资源。
可通过
-auto-approve
跳过确认:1
terraform destroy -auto-approve
1.3.2
格式化
terraform fmt
格式化。这里的project
要是在google cloud
的dashboard
里面找到的Project ID
设置环境变量(Win)
$env:GOOGLE_CREDENTIALS="H:\data-engineering-zoomcamp\01-docker-terraform\terraform\keys\my-creds.json"
env:GOOGLE_CREDENTIALS=”H:\data-engineering-zoomcamp\01-docker-terraform\hw1\terraform\my-creds.json”
设置完毕后可以通过echo $env:GOOGLE_CREDENTIALS
来检查
进行初始化
terraform init
初始化产生的文件,这里的windows版本和我的电脑环境一致
terraform plan
1 | esource "google_storage_bucket" "demo-bucke" { # demo-bucke 是 local variable name 访问的时候用google_storage_bucket.demo-bucket 来访问 |
使用terraform plan
terraform apply
当运行terraform apply
之后会出现下面这个.tfstate
文件
terraform destory
摧毁指令,可以通过输入no
来退出
![image-20250114214241655](E:\hexo\blog\source_posts\Week1 DE Zoomcamp2.assets\image-20250114214241655.png)
编写.gitignore
防止上传隐私文件
1 | Local .terraform directories |
1.3.3
类似于创建环境变量,之后引用,例如一下文件:
1.4.1
Google Cloud Platform
创建key
ssh-keygen -t rsa -f gcp -C phoebe -b 2048
上传public key
创建instance(实例)
Advance里面可以选择OS
git bash链接
创建成功实例后,查看external IP
然后键入ssh -i ~/.ssh/gcp phoebe@external IP
ssh -i ~/.ssh/gcp phoebe@34.57.229.219
git bash
中下载Anaconda安装包
执行 wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh
安装Anaconda
bash Anaconda3-2024.10-1-Linux-x86_64.sh
之后按找要求操作,一路Enter
和输入yes
会问要不要初始化,也是yes
,之后要关闭shell
,重新打开才能生效
创建config
在.ssh
目录下
1 | phoebe@LiChunNan MINGW64 ~/.ssh |
配置ssh
对服务器的访问
编写config
文件
在git bash
中执行ssh de-zoomcamp
,这里的de-zoomcamp
正是我们上面给Host
的名字
python
安装docker
1 | sudo apt-get update |
ssh with vscode
在拓展里下载Remote - SSH
克隆课程
git clone https://github.com/DataTalksClub/data-engineering-zoomcamp.git
进行如下配置,之后重新连接
1 | sudo groupadd docker |
重启之后可以使用docker
了
使用exit
退出
安装docker compose
根目录下
1 | mkdir bin |
根目录下
nano .bashrc
进去后到最后一行,输入
export PATH="${HOME}/bin:${PATH}"
之后ctrl+O
保存ctrl+X
退出
再执行source .bashrc
在环境中运行docker-compose
1 | cd data-engineering-zoomcamp/ |
根目录安装pgcli
pip install pgcli
输入pgcli -h localhost -U root -d ny_taxi
,之后输入密码root
即可执行。ctrl+d
退出
之后使用pip uninstall pgcli
删除,会安装conda pgcli
conda pgcli
由于我遇到了一直在Solving environment
的问题,所以使用了
conda update --all --yes
然后
conda install -c conda-forge pgcli
pip install -U mycli
成功登录,跟之前一样
port forward to local machine
这里有个坑,要用
winpty pgcli -h localhost -U root -d ny_taxi
视频里没有
winpty
原因不做深究,可以像之前一样设置变量来解决,不详述
Jupyter Notebook
下载数据wget https://github.com/DataTalksClub/nyc-tlc-data/releases/download/yellow/yellow_tripdata_2021-01.csv.gz
解压数据gzip -d yellow_tripdata_2021-01.csv.gz
之后还要在git bash
中输入
1 | sudo apt-get install build-dep python-psycopg2 |
之后执行文件,再次在instance
中查看表格是否创建成功,结果如图
下载terraform
1 | cd |
Google Cloud SDK Authentication
都在terraform_basic
文件夹下进行
1 | export GOOGLE_APPLICATION_CREDENTIALS=~/.gc/my-creds.json |
关闭链接
sudo shutdown now
停止后再启动,需要修改IP
查找新的External IP
修改.ssh/config
启动
ssh de-zoomcamp
1.4.2
本章介绍了如何通过 GitHub Codespace 进行配置,步骤非常简单明了。效果与前序1.2章节基本相同。