Назад | Перейти на главную страницу

Марионетка: условный источник файла

Я хотел бы использовать другой файл squid.conf в зависимости от условия. Что-то вроде:

    file { '/etc/squid/squid.conf':
    ensure => file,
    if condition = true then
        source => 'puppet:///modules/1/squid.conf_1',
    else
        source => 'puppet:///modules/1/squid.conf_2',
    fi
    }

Есть ли способ сделать это?

Ты нуждаешься в селектор, что позволит вам иметь условное выражение внутри ресурса - или установить переменную вне его.

Вот селектор:

file { '/etc/squid/squid.conf':
  ensure => file,
  source => $fact ? {
    "foo"   => 'puppet:///modules/1/squid.conf_1',
    "bar"   => 'puppet:///modules/1/squid.conf_2',
    default => 'puppet:///modules/1/squid.conf_default',
  },
}

Или установите переменную и используйте ее вместо:

if $fact == "foo" {
  $squidconf = 'puppet:///modules/1/squid.conf_1'
} else {
  $squidconf = 'puppet:///modules/1/squid.conf_2'
}

file { '/etc/squid/squid.conf':
  ensure => file,
  source => $squidconf,
}

Конечно, есть и другие варианты, взгляните на языковое руководство, указанное выше, и Изучение Puppet учебник раздел о переменных.