当资源声明为抽象资源类型时,puppet清单给出错误

当资源声明为抽象资源类型时,puppet清单给出错误,puppet,puppet-enterprise,Puppet,Puppet Enterprise,我了解到,也可以使用清单中的Resource[]语法声明资源。我写了下面的清单,但它给出了错误 Error: Could not parse for environment production: Syntax error at 'NO'; expected '}' at /etc/puppet/manifests/no.pp:3 on node pk-docker-01.cs1cloud.internal Error: Could not parse for environment produ

我了解到,也可以使用清单中的Resource[]语法声明资源。我写了下面的清单,但它给出了错误

Error: Could not parse for environment production: Syntax error at 'NO'; expected '}' at /etc/puppet/manifests/no.pp:3 on node pk-docker-01.cs1cloud.internal
Error: Could not parse for environment production: Syntax error at 'NO'; expected '}' at /etc/puppet/manifests/no.pp:3 on node pk-docker-01.cs1cloud.internal


file { '/var/NO/tmp' : ensure => directory,
}
Resource[User] {"NO":

    ensure => present ,
    password => 'admin@123',
}

group { no :
    ensure => present ,
}

谢谢

您引用的文档是针对Puppet 4.2的。您可以找到Puppet 3.8参考

3.8不支持您使用的声明类型。无论哪种方式,您都应该使用标准的
文件{'dfsf':}
资源声明,因为它与更多版本的puppet兼容。

我检查了资源,没有看到抽象资源,但这并不意味着该功能不存在。尽管如此,我还是在页面上找到了以下信息和示例。在3.8中,资源类型可能需要引用字符串,如下例所示:

# A resource declaration using a resource data type:
File { "/etc/ntp.conf":
  mode  => "0644",
  owner => "root",
  group => "root",
}

# Equivalent to the above:
Resource["file"] { "/etc/ntp.conf":
  mode  => "0644",
  owner => "root",
  group => "root",
}

# A resource default:
File {
  mode  => "0644",
  owner => "root",
  group => "root",
}
因此,您可以在代码中尝试以下操作,看看它是否解决了问题:

file { '/var/NO/tmp' : ensure => directory,
}
Resource["user"] {"NO":

    ensure => present ,
    password => 'admin@123',
}

group { no :
    ensure => present ,
}
不过,我最好的建议是在查看Puppet文档时要特别小心。在计划对生产环境进行更改时,请确保始终查看正在运行的版本,而不仅仅是了解即将推出的功能等


我希望这有帮助

您使用的是什么版本的puppet?puppet--版本3.8.2