2016-12-12 6 views
1

꼭두각시 서버에 있지만 클라이언트에는없는 SELinux .te 파일에서 명령을 실행하는 방법을 찾으려고합니다. puppetforge의 puppet-selinux 모듈을 사용하여 .te 파일을 .pp 모듈 파일로 컴파일하므로 클라이언트 서버에는 필요하지 않습니다. 내가 얻을 클라이언트 서버에서 실행하려고 할 때Puppet 서버에 있고 클라이언트가 아닌 파일에 BASH 명령 실행하기

class security::selinux_module { 

    exec { 'selinux_module_check': 
    command => "grep module selinux_module_source.te | awk '{print $3}' | sed 's/;//' > /tmp/selinux_module_check.txt", 
    source => 'puppet:///modules/security/selinux_module_source.te', 
    } 
} 

비록 :이에

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Invalid parameter source on Exec[selinux_module_check] at /etc/puppet/environments/master/security/manifests/selinux_module.pp:3 on node client.domain.com 
Warning: Not using cache on failed catalog 
Error: Could not retrieve catalog; skipping run 

어떤 도움을 주시면 감사하겠습니다 내 기본 개념은 무엇인가 등이다.

답변

1

Puppet의 generate() 함수를 사용하여 카탈로그 컴파일 중에 마스터에서 명령을 실행하고 출력을 캡처 할 수 있지만, 특히 해당 명령이 비싼 경우에는 거의 수행하지 않는 것이 좋습니다. 결과 출력을 클라이언트에 전송하려는 경우 클라이언트에 적합한 지 확인하는 데 세심한주의를 기울여야합니다. 클라이언트가 클라이언트와 너무 많이 다른 경우에는 그렇지 않을 수도 있습니다. 섬기는 사람.

나는 꼭두각시 서버에있는 SELinux는 .TE 파일에 명령을 실행하는 방법을 찾기 위해 노력하고 있지만 클라이언트 (나는 컴파일 puppetforge에서 꼭두각시 - SELinux가 모듈을 사용합니다. 테 .PP 모듈 파일에 파일을, 그래서 나는

가장 간단한 방법은 대화 형 쉘에서, 모든 번, 필요한 명령 직접을 실행하는 것입니다 클라이언트 서버에 필요하지 않습니다 결과를 퍼핏이나 다른 방법으로 에이전트가 얻을 수있는 파일에 넣으십시오. 유형 강제 파일이 동적으로 생성 된 경우에만 bui를 실행할 때마다 컴파일해야합니다. 카탈로그.

그러나 selinux 정책 파일과 필요한 설치 스크립트가 포함 된 패키지 (RPM, DEB 등)를 빌드하는 것이 좋습니다. 패키지를 로컬 저장소에두고 Package 리소스를 통해 관리하십시오.

+0

카탈로그 컴파일 중에 마스터에서 아무 것도하지 않으려 고하면 기능이 제대로 작동하지 않을 수 있습니다. '소스'를'exec'과 함께 사용하고 절대가 아닌 실행 파일을'exec'에서 사용하려는 시도에 대해 언급 할 지 확신이 없습니다. –