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

时间:2016-07-29 11:12:24

标签: 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)',
    ensure => 'directory',
  }
}

我收到错误

Error: Failed to apply catalog: Parameter path failed on File[mysql_backup]: File paths must be fully qualified, not '($mysql_backup)'

有人可以帮我解释如何声明变量并使用它吗?

我已将此用作参考:https://serverfault.com/questions/41577/how-to-fix-puppet-fully-qualified-parameter-path-error

由于

3 个答案:

答案 0 :(得分:3)

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

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

Puppet还使用文件资源的标题作为路径,因此您可以将资源缩短为:

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

路径应设置为:

path => $mysql_backup,

它在你的情况下没有工作的原因是变量(如$ mysql_backup)没有用单引号插值。将单引号更改为双引号会有所帮助,但是您还需要删除无关的(..)括号。