文件路径必须是完全限定的-Puppet

文件路径必须是完全限定的-Puppet,puppet,Puppet,我刚开始学习puppet,我有一个关于在类中使用变量的基本问题。这是我的课 # == Class: mysql::configure_mysql class mysql::configure_mysql inherits mysql { $mysql_backup = "/var/mysql_backup" #Create directories file { 'mysql_backup': path => '($mysql_backup)', ens

我刚开始学习puppet,我有一个关于在类中使用变量的基本问题。这是我的课

# == Class: mysql::configure_mysql
class mysql::configure_mysql inherits mysql {

  $mysql_backup = "/var/mysql_backup"

  #Create directories 
  file { 'mysql_backup':
    path   => '($mysql_backup)',
    ensure => 'directory',
  }
}
我犯了一个错误

Error: Failed to apply catalog: Parameter path failed on File[mysql_backup]: File paths must be fully qualified, not '($mysql_backup)'
有人能帮我声明一个变量并使用它吗

我已将此作为参考:


谢谢

文件标题必须是文件的绝对路径

 file { '/your/full/file/path/here':
    path    => "${mysql_backup}"
    ensure  => 'directory',
    }

路径应设置为:

path => $mysql_backup,
在您的案例中,它不起作用的原因是变量(如$mysql\u backup)没有插入单引号。将单引号更改为双引号会有所帮助,但是您还需要删除多余的
(..)
括号。

'
是编码语言中的字符串文字。您需要解析变量
$mysql\u backup
。您的资源实际上使用了字符串
($mysql\u backup)
。您还需要删除这些偏执,因为它们只是一个语法错误。由于这些原因,
'($mysql\u backup)
需要更改为
$mysql\u backup
。您也可以在变量周围加上双引号,但这没有意义

file { 'mysql_backup':
  path    => $mysql_backup,
  ensure  => 'directory',
}
Puppet还使用文件资源的标题作为路径,因此您可以将资源缩短为:

file { $mysql_backup: ensure => 'directory' }

另外,您能告诉我在哪里可以存储全局变量,以及如何在不同的模块中使用它们吗?非常感谢。@Adithya Puppet可以使用的全局变量可以从Facter(系统定义的文本全局变量)或数据(现在是Hiera,后来是Puppet数据提供程序;这些变量将由您定义)访问。签出以下链接:。不需要更改标题,但需要在标题或路径参数中指定路径。按照您所做的方式修复引号将实现后者。