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

Ресурсы файлов Puppet 2 в одном манифесте

вот мой манифест, также извиняюсь за форматирование. В самом низу ошибка. Как я могу реорганизовать это, чтобы оно работало? Я знаю, что он говорит мне, что /etc/yum.repos.d используется более одного раза, но мне нужно использовать его более одного раза, чтобы выполнить то, что мне нужно сделать, а именно удалить каталог /etc/yum.repos.d и добавить его обратно с шаблоном из моего локального репо. Любая помощь будет принята с благодарностью.

class profile::base {

  #the base profile should include component modules that will be on all nodes

#Remove Directory
#file {'Remove_Directory':
#   ensure  => absent,
#   path    => '/etc/yum.repos.d',
#   recurse => true,
#   purge   => true,
#   force   => true,
#   }

#Add Directory
file {'Add_Directory':
   ensure  => directory,
   path    => '/etc/yum.repos.d',
   recurse => true,
   purge   => true,
   force   => true,
   }

#Copy Repo Template in directory
file { 'Copy_Template':
  path    => '/etc/yum.repos.d',
  ensure  => file,
  content => template('profile/local-repos.repo.epp'),
   }
}
Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Resource Statement, Cannot alias File[Copy_Template] to ["/etc/yum.repos.d"] at (file: /etc/puppetlabs/code/environments/bastion/site/profile/manifests/base.pp, line: 24); resource ["File", "/etc/yum.repos.d"] already declared (file: /etc/puppetlabs/code/environments/bastion/site/profile/manifests/base.pp, line: 15) (file: /etc/puppetlabs/code/environments/bastion/site/profile/manifests/base.pp, line: 24, column: 1) on node sshtest.mmps.mcrc.cspm.marines.usmc.mil

Думаю, вы хотите сделать что-то вроде следующего:

Убедитесь, что каталог существует, но содержит только управляемые файлы:

file { '/etc/yum.repos.d':
  ensure  => 'directory',
  purge   => true,
  recurse => true,
  force   => true,
  [...]
}

Добавьте в этот каталог управляемый файл:

file { '/etc/yum.repos.d/your-repo-file.repo':
  ensure  => 'present',
  content => template('your-template'),
  [...]
}

Вы можете добиться того, что пытаетесь сделать, с помощью собственного ресурса yumrepo.

Во-первых, удалите все неуправляемые репозитории yum. (Я считаю, что это то, что вы пытаетесь сделать с файловым ресурсом Add_Directory.)

resources { 'yumrepo':
  purge => true,
}

Затем вы можете определить свои локальные репозитории.

yumrepo { 'myrepo1':
  ...
}

yumrepo { 'myrepo2':
  ...
}