amazon-web-services - EC2用户数据在S3中复制过时版本的文件?
问题描述
因此,我正在尝试在 EC2 实例中设置 Jenkins 服务器并将其与 CasC 一起使用。我创建了一个 S3 存储桶来存储 CasC 配置并设置了一个用户数据脚本以将该配置复制到特定路径中。在用户数据脚本的第一次运行中一切顺利,文件被复制到正确的路径。但是,当我上传文件的新版本并重新启动 EC2 实例时,似乎 aws cli 正在复制旧版本,无论之后我重新启动实例多少次。这是我的用户数据脚本:
#! /bin/bash
sudo su -
yum update -y
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins java-1.8.0-openjdk-devel -y
systemctl daemon-reload
systemctl stop jenkins
aws s3 cp s3://jenkins-casc/jenkins.yaml /var/lib/jenkins/
systemctl start jenkins
这是复制命令的 cloud-init 输出:
download: s3://jenkins-casc/jenkins.yaml to var/lib/jenkins/jenkins.yaml
解决方案
用户数据脚本仅在实例的“首次启动”时执行。(实际上,它是“给定实例 ID 的首次启动”。)
如果您希望在每次启动时执行脚本,请将其放在此目录中:
/var/lib/cloud/scripts/per-boot/
这是cloud-init的一个特性。
推荐阅读
- django - 如何以编程方式将条件字段添加到 wagtail 页面类型?
- laravel - 如果不允许用户角色 Laravel 如何抛出错误
- pandas - Pandas 按组应用函数返回多个新列
- c# - 如何在不使用 ado.net 插入的情况下添加新行
- php - 我创建了 laravel 包并在其他项目中需要我的包。我在项目模型中使用包特征。但我收到此错误 => 未找到特征
- vue.js - 为什么在我的 nuxt-link 中没有重新加载具有相同 url 的页面?
- python - 在 DRF 中获取序列化程序列表时出现 TypeError
- docker - Vidyo 问题:在 mediabrige 容器中,当所有参与者离开时,“呼叫”过程并未结束
- javascript - 无法在节点 js 中使用 facebook-nodejs-business-sdk 模块创建 AdCreative
- php - 如何使用 Laravel 获取选择值文本?