Puppet을 사용하여 디렉토리의 여러 파일을 모두 정의하지 않고도 존재하는지 확인할 수 있습니까?


8

디렉토리에 있어야하는 다른 구성 파일이있는 수백 개의 일회용 서버가 있습니다. 파일의 사본은 꼭두각시 마스터에 있습니다.

내 클래스 중 하나 내에 항상 다음과 같이 노드로 푸시되는 기본 구성 세트가 있습니다.

file { "/etc/someprogram/config/000-default":
  ensure => "present",
  owner => "root",
  group => "root",
  mode =>  0764,
  source => "puppet:///modules/someprogram/000-default",
}

내가 갖고 싶은 것은 다음과 같습니다.

$filearray = directory listing of /etc/puppet/modules/someprogram/files/$fqdn
with each file as an element into array

$filearray.each(
file { "/etc/someprogram/config/$filename":
  ensure => "present",
  owner => "root",
  group => "root",
  mode =>  0764,
  source => "puppet:///modules/someprogram/files/$fqdn/$filename",
}
)

나는 꼭두각시에 익숙하지 않지만 이것을 할 수있는 방법이 없다는 인상을 받고 있습니다.


1
당신은 재귀 적 디렉토리 (이러한 상주 관리에 괜찮을까요 recurse => truefile타입), 대신 별도의 자원으로 각 파일을 선언?
Shane Madden

답변:


8

당신이 시도하는 것을 할 수 있습니다 :

file { "/etc/someprogram/config":
    ensure => directory,
    recurse => remote,
    source => "puppet:///modules/someprogram/files/$fqdn"
    #Other options
}

$ fqdn의 모든 파일을 / etc / someprogram / config에 복사하여 이미 존재하는 경우 덮어 씁니다.


1
또한 recurse => remote해당 디렉토리에 꼭두각시 서버에 의해 푸시되지 않는 로컬 파일이 있는지 확인하십시오.
Zoredache

그것은 좋은 팁입니다. 이것이 사양에 추가되었고 이것을 반영하도록 원본을 편집 한 것을 몰랐습니다.
meatflag

3

전체 디렉토리를 되풀이하지 않고 디렉토리에서 여러 파일을 정의하려면 다음과 같이 배열을 사용할 수 있습니다.

$myfiles = [ "/my/dir/file1", "/my/dir/file2", ]
file { $myfiles:
    ensure => "present",
    owner  => "root",
    group  => "root",
    mode   =>  0644,
    source => "puppet:///modules/someprogram/$fqdn/$name",
}

물론, "/ my / dir"또는 많은 파일에 대한 긴 경로를 사용하면 약간 까다로울 수 있으므로이 경우 디렉토리 경로를 포함하는 정의를 작성하는 것이 좋습니다. 파일 이름.


불행히도 alias파일에 세트 가있을 때 작동하지 않습니다 : /
cweiske

1
당신 같은 외모는 오타 $의 myfiles이 -> $ 파일
파브리 지오 REGINI

1
작동하지 않습니다. $name여기서 언급 할 수 없습니다 . 정의 된 유형 인 경우에만 작동합니다.
faker

1

이 작업을 수행하는 방법에 대한 예는 다음과 같습니다.

file {
        [
        '/sys/block/sda/queue/scheduler',
        '/sys/block/sdb/queue/scheduler',
        '/sys/block/sdc/queue/scheduler',
        '/sys/block/sdd/queue/scheduler',
        '/sys/block/sde/queue/scheduler',
        '/sys/block/sdf/queue/scheduler'
        ]:
  ensure  => 'file',
  content => 'deadline',
  group   => '0',
  mode    => '644',
  owner   => '0',
  type    => 'file',
}

위의 예에서, 최종 기한 I / O 스케줄러를 Puppet을 통해 지정된 서버의 각 디스크에 할당합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.