꼭두각시를 사용하여 모든 클라이언트에 파일을 복사하는 방법은 무엇입니까?


8

꼭두각시를 사용하여 모든 클라이언트에 파일을 어떻게 복사합니까? 꼭두각시 서버와 클라이언트를 설정했으며 제대로 작동하는 연결을 테스트했습니다. 저는 꼭두각시 전문가가 아니며 초보자 일뿐입니다. 꼭두각시 서버에서 모든 클라이언트에 파일을 복사하는 방법을 알고 싶습니다. 또한 파일을 삭제하는 방법을 알고 싶습니다.


1
채팅에서 Jorge의 docs.puppetlabs.com/guides/file_serving.html 답변으로 링크를 복사했습니다.
Rinzwind

답변:


8

꼭두각시 파일 서버

이 가이드는 Puppet의 파일 제공 기능 사용에 대해 설명합니다.


퍼펫 마스터 서비스에는 정적 파일을 전송하기위한 파일 서버가 포함되어 있습니다. 파일 자원 선언에 소스 속성에 꼭두각시 : URI가 포함 된 경우 노드는 마스터의 파일 서버에서 해당 파일을 검색합니다.

# 원격 파일을 / etc / sudoers에 복사
파일 { "/ etc / sudoers":
    모드 => 440,
    소유자 => 루트,
    그룹 => 루트,
    source => "puppet : /// modules / module_name / sudoers"
}

모든 퍼펫 파일 서버 URI는 다음과 같이 구성됩니다.

puppet://{server hostname (optional)}/{mount point}/{remainder of path}

서버 호스트 이름이 생략 된 경우 (즉 puppet:///{mount point}/{path}, 트리플 슬래시 참고) URI는 평가 노드가 마스터로 간주하는 서버로 확인합니다. 이렇게하면 매니페스트 코드가 이식성과 재사용 성이 향상되므로 가능할 때마다 호스트 이름을 생략해야합니다.

퍼펫의 나머지 부분 : URI는 파일이에 의해 제공되는지 module또는를 통해 노출 되는지에 따라 두 가지 방법 중 하나로 서버의 파일 시스템에 맵핑됩니다 custom mount point.

서빙 모듈 파일

대부분의 파일 서비스는 모듈을 통해 수행되어야하므로 Puppet 파일 서버는 기본적으로 사용 가능한 모듈이라는 특수한 반 마법 마운트 지점을 제공합니다. URI의 마운트 지점이 모듈 인 경우 Puppet은 다음을 수행합니다.

  • 경로의 다음 세그먼트를 모듈 이름으로 해석하십시오…
  • ... 서버의 모듈 경로에서 해당 모듈을 찾습니다 (여기서는 "모듈 검색"에 설명되어 있음).
  • ... 및 해당 모듈의 파일 / 디렉토리에서 시작하는 나머지 경로를 해결하십시오.
  • 즉, test_module이라는 모듈이 중앙 서버의 /etc/puppet/modules디렉토리에 설치되면 다음 꼭두각시 : URI ...

    puppet:///modules/test_module/testfile.txt
    

    ... 다음과 같은 절대 경로로 해결됩니다.

    /etc/puppet/modules/test_module/files/testfile.txt
    

    test_module에 설치된 경우 /usr/share/puppet/modules동일한 URI가 대신 다음과 같이 해결됩니다.

    /usr/share/puppet/modules/test_module/files/testfile.txt
    

모듈 마운트 포인트를 사용하기 위해 추가 구성이 필요하지는 않지만 [modules]구성 블록 을 추가하여 파일 서버 구성에서 일부 액세스 제어를 지정할 수 있습니다 . 보안을 참조하십시오.

사용자 정의 마운트 지점에서 파일 제공

Puppet은 서버의 파일 서버 구성에 지정된 임의의 마운트 지점에서 파일을 제공 할 수도 있습니다 (아래 참조). 사용자 정의 마운트 지점에서 파일을 제공 할 때 Puppet은 모듈 마운트에 사용 된 추가 URI 추상화를 수행하지 않으며 마운트 이름 다음의 경로를 간단한 디렉토리 구조로 분석합니다.

파일 서버 구성

파일 서버 구성 데이터의 기본 위치는 /etc/puppet/fileserver.conf; 이것은 --fsconfig퍼펫 마스터에 플래그를 전달하여 변경할 수 있습니다 .

fileserver.conf파일 형식은 형식과 거의 동일 rsync하며 INI 파일과 거의 비슷합니다.

[mount_point]
    path /path/to/files
    allow *.domain.com
    deny *.wireless.domain.com

주어진 마운트 지점에 대해 다음 옵션을 현재 지정할 수 있습니다.

  • 디스크에서 마운트 위치의 경로
  • 임의의 개수의 지시문
  • 많은 거부 지시문

path는 유일한 필수 옵션이지만 기본 보안 구성은 모든 액세스를 거부하는 것이므로 allow 지시문이없는 마운트 포인트는 어떤 노드에서도 사용할 수 없습니다.

경로는 일부 또는 모두 포함 할 수 있습니다 %h, %H그리고 %d동적으로 각각 클라이언트의 호스트 이름, 정규화 된 도메인 이름과 도메인 이름으로 대체되는을. 모두 클라이언트의 SSL 인증서에서 가져옵니다 (호스트 이름 / 인증서 이름이 일치하지 않는 경우주의하십시오). 개인 ssh 호스트 키와 같이 각 클라이언트의 파일이 완전히 별도로 유지되는 모듈을 만드는 데 유용합니다. 예를 들어, 구성

[private]
   path /data/private/%h
   allow *

/private/file.txt클라이언트 client1.example.com의 파일 요청은 파일 을 찾고 /data/private/client1/file.txt, 동일한 요청 client2.example.com은 파일 서버에서 /data/private/client2/file.txt 파일을 검색하려고합니다.

현재 경로는 슬래시를 포함 할 수 없거나 오류가 발생합니다. 또한 puppet.conf슬래시가있는 디렉토리 위치를 지정하지 않도록 주의하십시오 .

보안

Puppet 파일 서버 보안은 마운트 지점마다 (다양한 수준의 특정) 액세스를 허용하고 거부하는 것으로 구성됩니다. 노드 그룹은 IP 주소, 이름 또는 단일 전역 와일드 카드 (*)로 세 가지 방법으로 권한을 부여하거나 거부 할 수 있습니다. 사용자 정의 탑재 지점은 기본적으로 모든 액세스를 거부합니다.

사용자 지정 마운트 지점 외에도 fileserver.conf다음 modules과 같이 관리 할 수있는 두 가지 특수 마운트 지점이 있습니다 plugins. 이 마운트 지점 중 어느 것도 경로 옵션을 지정하지 않아야합니다. 모듈 마운트 지점의 동작은 위에서 사용자 정의 마운트 지점에서 파일 제공에 설명되어 있습니다. 플러그인 마운트는 실제 마운트 지점이 아니라 fileserver.conf가 Puppet Master에서 플러그인을 동기화 할 수있는 노드를 지정할 수 있도록하는 후크입니다. 이 두 마운트 지점은 기본적으로 존재하며 모든 액세스 지점은 기본적으로 모든 액세스를 허용합니다. 이러한 특수 마운트 중 하나에 대해 허용 또는 거부 지시문이 설정되면 해당 보안 설정은 일반 마운트의 보안 설정처럼 작동합니다 (즉, 기본적으로 모든 액세스를 거부합니다). 이것들은 deny *가 중복되지 않는 유일한 마운트 포인트입니다.

노드가 Puppet 파일 서버에 직접 연결되지 않은 경우 (예 : 리버스 프록시 및 Mongrel 사용) (Mongrel 사용 참조), 파일 서버는 모든 연결이 Puppet Agent 노드가 아닌 프록시 서버의 IP 주소에서 오는 것으로 간주합니다. . 이 경우 호스트 이름을 기준으로 액세스를 제한하는 것이 가장 좋습니다. 또한 리버스 프록시 (보통 127.0.0.0/8)로 작동하는 머신은 해당 마운트 지점에 액세스 할 수 있어야합니다.

우선 순위

보다 구체적인 거부 및 허용 문은 덜 구체적인 문보다 우선합니다. 즉, node.domain.com에 대한 allow 문은 * .domain.com에 대한 거부 문에도 불구하고 연결할 수 있습니다. 특정 수준의 특정 성에서 거부 문은 허용 문보다 우선합니다.

IP 주소 지시문과 호스트 이름 및 도메인 이름 지시문을 혼합하면 예기치 않은 동작이 발생할 수 있으므로 그렇게하지 마십시오. (현재 node.domain.com의 IP 주소가 192.168.1.80이고 fileserver.conf에 allow 192.168.1.80 및 deny node.domain.com이 포함 된 경우 IP 기반 allow 지시문이 실제로 우선합니다.이 동작은 다음에서 변경 될 수 있습니다. 미래에 의존해서는 안됩니다.)

호스트 이름

호스트 이름은 완전한 호스트 이름을 사용하거나 * 와일드 카드를 사용하여 전체 도메인을 지정하여 지정할 수 있습니다.

[export]
    path /export
    allow host.domain1.com
    allow *.domain2.com
    deny badhost.domain2.com

IP 주소

완전한 IP 주소 또는 와일드 카드 주소를 사용하여 호스트 이름과 유사하게 IP 주소를 지정할 수 있습니다. CIDR 스타일 표기법을 사용할 수도 있습니다.

[export]
    path /export
    allow 127.0.0.1
    allow 192.168.0.*
    allow 192.168.1.0/24

글로벌 허용

단일 와일드 카드를 지정하면 모든 노드가 마운트 지점에 액세스 할 수 있습니다.

[export]
    path /export
    allow *

사용자 지정 마운트 지점의 기본 동작은 deny *와 같습니다.


안녕하세요 @Rinzwind 내가 원하는 정확한 답변을 추가하면 좋을 것입니다.
karthick87

Jorge / this answer의 링크는이 작업을 시작하는 시작이며 "퍼펫을 사용하여 모든 클라이언트에 파일을 어떻게 복사합니까?"라는 질문에 대답합니다. 고려해야 할 보안을 포함하여. 부족한 것은 파일을 제거하는 방법입니다. 나는 이것을 포함시킬 것이다. (이 답변의 마지막 부분은 그것을 제거하는 것이 더 좋을 수도 있습니다.)
Rinzwind

매니페스트 파일을 편집하고 싶습니까? 그리고 위의 줄을 입력 하시겠습니까?
karthick87
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.