我注意到的唯一区别是rails server在端口3000上启动服务器,同时rackup在端口9292上启动服务器.
还有其他差异吗?
是否存在一个用例而不是另一个用例?
我有一个针对AWS部署的Terraform配置.当使用有权做任何事情的IAM用户时(即{actions: ["*"], resources: ["*"]}.
为了实现Terraform配置的自动化应用,我想确定最初应用配置并影响后续更改所需的最小权限集.我特别想避免在政策中给予过多的权限,例如{actions: ["s3:*"], resources: ["*"]}.
到目前为止,我只是运行terraform apply直到发生错误.我查看输出或terraform日志输出以查看API调用失败,然后将其添加到部署用户策略中.EC2和S3特别令人沮丧,因为动作的名称似乎不一定与API方法名称一致.我有几个小时的时间用简单的方式告诉我多久了.
有没有更有效的方法来做到这一点?
如果Terraform建议我需要什么许可/行动,那将是非常好的,但这是Hashicorp最好的产品增强.
我有一个看起来像这样的对象:
object Settings {
final val Host = "host"
final val Protocol = "protocol"
object User {
final val Name = "username"
final val Password = "password"
}
object Subject {
final val Query = "query"
final val Predicate = "predicate"
}
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是类似于membersAsHash(classOf[CollectionSettings])并接收哈希)我在对象中声明的所有val:
[
Host => "host",
Protocol => "protocol",
Name => "username",
Password => "password",
Query => "query",
Predicate => "predicate"
]
Run Code Online (Sandbox Code Playgroud)
如果键是一个字符串,即使是完整的包名称(例如com.example.Settings.User),也没关系.我真正需要的是价值观,所以如果我只能得到它,它仍然可以接受.
这让我得到了子对象的名称,但我似乎无法弄清楚如何获取每个子对象的内部值:
val optionsToCheck = {
import scala.reflect.runtime.{universe => ru}
val mirror = ru.runtimeMirror(getClass.getClassLoader) …Run Code Online (Sandbox Code Playgroud) 我正在构建 Terraform 配置以将一些容器部署到 AWS ECS。显然,我必须将 Docker 镜像推送到 ECR。我在 ECR 中创建了一个存储库并推送了图像。
现在我正在自动化。如果我这样声明aws_ecr_repository:
data "aws_ecr_repository" "service" {
name = "myrepository"
}
Run Code Online (Sandbox Code Playgroud)
然后 Terraform 将管理它。我最终可以用类似的东西来引用它
image = "${aws_ecr_repository.myrepository.repository_url}"
Run Code Online (Sandbox Code Playgroud)
在构建 ECS 任务定义的过程中。
我的印象是,当我terraform destroy作为开发周期的一部分运行时,Terraform 会删除这个存储库——或者当它有图像时会失败。这会很糟糕,因为terraform destroy要么永远不会完成,要么我必须清除 ECR 存储库才能成功完成该命令。
如何最好地引用已经存在但我似乎不希望 Terraform 管理的 ECR 存储库,因为 Terraform 可能会破坏位于 Terraform 之外的数据,即发布 CI 作业上传的 Docker 图像?