2016-11-08 8 views
1

Я новичок в марионетке и планирую реализовать ее в нашей среде.Использовать факты фактов в кукольном

У меня есть марионеточные агенты, которые работают на разных версиях Redhat.

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

У меня есть следующие манифесты.

file { 'local_repo': 
    ensure => file, 
    path => '/etc/yum.repos.d/local.repo', 
    mode => "600", 
    source => 'puppet:///modules/repo/rhel7.1', 
} 

file { 'local_repo': 
    ensure => file, 
    path => '/etc/yum.repos.d/local.repo', 
    mode => "600", 
    source => 'puppet:///modules/repo/rhel6.7', 
} 

Когда я выполняю FACT CLI, я получаю нижний вывод.

[[email protected] ~]# facter os 
{ 
    architecture => "x86_64", 
    family => "RedHat", 
    hardware => "x86_64", 
    name => "RedHat", 
    release => { 
    full => "7.2", 
    major => "7", 
    minor => "2" 
    } 
} 

Я хочу использовать приведенный выше вывод и выполнять свои манифесты соответственно. То есть, если марионетный агент выполняет Redhat 7.1, мастер Марионеток использует соответствующий файл.

ответ

3

Вы можете сделать это, используя переменную Facter внутри атрибута source, а затем интерполировать его внутри строки. Обратите внимание, что ваш ' должен быть изменен на ", чтобы интерполировать переменную в строке.

Facter 2/Puppet 3:

file { 'local_repo': 
    ensure => file, 
    path => '/etc/yum.repos.d/local.repo', 
    mode => "600", 
    source => "puppet:///modules/repo/rhel${::os['release']['full']}", 
} 

Facter 3/кукольный 4:

file { 'local_repo': 
    ensure => file, 
    path => '/etc/yum.repos.d/local.repo', 
    mode => "600", 
    source => "puppet:///modules/repo/rhel${facts['os']['release']['full']}", 
} 

Вы можете найти полезную документацию здесь: https://docs.puppet.com/puppet/4.8/reference/lang_facts_and_builtin_vars.html

Это для последних версий, но содержит устаревшую информацию о Puppet/Facter.

+0

Большое спасибо Мэтт, Небольшая коррекция, которую вы пропустили, чтобы добавить выпуск. source => "puppet: /// modules/repo/rhel $ {Facts ['os'] ['release'] ['full']}", – sagar

+0

@sagar Правда, я неправильно понял хэш хэша выше. Редактирование ответа для этого. Если бы этот ответ был полезен для вас, пожалуйста, примите его. –

+0

Я не нашел ответ. Пожалуйста, отметьте это как решение – sagar