2016-07-29 62 views
2

我刚刚开始使用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

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

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

木偶也使用文件资源作为路径的标题,所以你可以缩短你的资源:

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

我确实尝试了你的语法,它的确帮助了谢谢! – Adithya

+0

也可以请指导我在哪里可以存储全局变量,以及如何跨越不同模块使用它们?我真的很感激。 – Adithya

+0

@Adithya Puppet可以使用的全局变量可以从Facter(由系统定义的字面全局变量)或数据(现在是Hiera,后来的Puppet数据提供程序;这些将由您定义)访问。请查看以下链接:https://docs.puppet.com/facter/ https://docs.puppet.com/hiera/。 –

-1

文件的标题必须是你的文件absoloute路径。

path => $mysql_backup, 

它之所以没有工作你的情况是变量(如$ mysql_backup)没有在单引号内插:

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

更改标题是没有必要的,但无论是在标题确定的路径或者路径参数是。如你所做的那样修复报价将做后者。 –

0

的路径应该设置。将单引号更改为双引号会有所帮助,但是您还需要删除多余的(..)括号。