Record your life!
Dashboard
My Blogs
← Back to List
Create Blog
Title
Type
Diary
Blog
Category
CI/CD
Content
Edit
Preview
## Github action ``` name: Hello world workflow on: push: branches: - main pull_request: branches: - main workflow_dispatch: jobs: hello: runs-on: ubuntu-latest steps: - name: Say Hello run: echo "Hello, world12345!" shell: bash - uses: actions/checkout@v3 - name: List files run: ls -la shell: bash - name: Hello world action step id: hello uses: ./ with: who-to-greet: Mona the Octocat # Use the output from the `hello` step - name: Get the output time run: echo "The time was ${{ steps.hello.outputs.time }}" - name: Hello world action step with error yeah id: hello2 uses: ./ with: who-to-greet: aa goodby: runs-on: ubuntu-latest steps: - name: Say Goodbye run: echo "Goodbye, world!" shell: bash ``` ## Packer - [不错的教程](https://www.youtube.com/watch?v=tbv1lTF1wFU&list=PL8VzFQ8k4U1Jp6eWgHSXHiiRWRvPyCKRj&index=2) - 可以在AWS,GCP,AZure,DockerHub等多个平台去构建镜像的工具。比如AWS上可以基于一个基础AMI构建,他会新起一个镜像(amazon-esb模式),或者基于当前正在运行的EC2实例(amazon-instance)构建一个新的AMI镜像。 - pakcer三个核心概念,Builder(即第一条),Provisioner(修改镜像,比如通过执行shell命令,通过file把本地文件cp到镜像中), 以及post-processor,比如manifest(把镜像细节导出到一个json),vagrant(构建vagrant能打开的镜像) - 注意不同AMI镜像的用户(User)不一样,比如Ubuntu镜像的用户就是ubuntu,执行shell或者file类型的provisioner时,默认的用户就是Ubuntu。假设说,AMI启动后如果目录是root权限的,普通的ubuntu用户是没法访问的,这个时候可以先用file provisioner把文件copy到一个公共目录(比如/tmp),然后用shell执行sudo move即可 - 可以在packer的json文件里定义变量,引用环境变量等 - 对于AWS来说,既可以把app_key和secret写在json文件里,也可以定义在环境变量里(比如.zshrc),也可以放在~/.aws/credentials文件里 ## Terraform - Terraform output可以把一些aws对象的细节打印出来, `terraform apply`的最后,或者`terraform output` 。在tf文件里改动output后,不一定执行apply命令,这样对线上太危险,可以执行refresh命令 - Terraform 可以把变量定义在terraform.tfvar文件,也可以在源文件里指定default,也可以通过--var在命令行传入
Update