Terraform-provider-local: local_file 资源应该有模式,默认不设置可执行位

创建于 2018-11-07  ·  8评论  ·  资料来源: hashicorp/terraform-provider-local

_这个问题最初是由@kojiromike作为hashicorp/terraform#14768 打开的。 由于提供者拆分,它被迁移到这里。 问题的原始正文如下。_


地形版本

0.9.5

受影响的资源

  • 本地文件

Terraform 配置文件

resource "local_file" "foo" {
  content = "contents"
  filename = "foo.txt"
}

我这里的umask是0022

预期行为

应该已经使用模式-rw-r--r--创建了一个文件。

实际行为

使用模式-rwxr-xr-x创建了一个文件。

卑微的意见

虽然我更喜欢在 tf 配置中提供特定模式的选项,但我认为 Terraform 应该回退到支持open的标准行为,这将导致文件不可执行。

最有用的评论

虽然我们没有合适的解决方案,但我正在使用以下解决方法。

resource "local_file" "foo" {
  content = "contents"
  filename = "foo.txt"
  provisioner "local-exec" {
    command = "chmod 644 foo.txt"
}

不是最好的解决方案,但对我有用! 希望能帮助到你。

所有8条评论

我认为mode应该是一个属性。 例如,我为一组实例使用动态生成的私钥,但使用 loca_file 将其放在我的本地路径中,以防我稍后需要 ssh 和故障排除。 但是在我的情况下,生成的.pem文件应该使用600模式,以便与ssh -i <*.pem> <host>命令一起使用。

我同意,在保存需要较少许可模式的文件时遇到此问题。

虽然我们没有合适的解决方案,但我正在使用以下解决方法。

resource "local_file" "foo" {
  content = "contents"
  filename = "foo.txt"
  provisioner "local-exec" {
    command = "chmod 644 foo.txt"
}

不是最好的解决方案,但对我有用! 希望能帮助到你。

@rodrigocmn感谢您的解决,这对我的场景非常有用!

虽然我们没有合适的解决方案,但我正在使用以下解决方法。

resource "local_file" "foo" {
  content = "contents"
  filename = "foo.txt"
  provisioner "local-exec" {
    command = "chmod 644 foo.txt"
}

不是最好的解决方案,但对我有用! 希望能帮助到你。

很不错的把戏!

现在支持模式(在 pull request #30 中实现),使用 $# v1.4.0 file_permission参数

这对我不起作用。 当我创建我的本地文件时,我设置了这个参数file_permission = "0600" 。 但是,该文件仍然是使用 755 创建的。

此页面是否有帮助?
0 / 5 - 0 等级