2017-12-08 25 views
0

Splunk /opt/splunkforwarder/etc/system/local/inputs.conf 파일을 추가해야하는 메타 데이터에 대한 단일 항목으로 업데이트하는 방법이 있습니다. 인덱서로 전달되는 이벤트Chef가 수렴하는 동안 test-kitchen을 실행할 때 테스트 데이터를 읽는 방법

이 메타 데이터 항목은 이미 호스트에 설치된 다른 소프트웨어의 구성 파일에있는 9 문자 텍스트 항목입니다.

이 파일에서 데이터를 읽을 수있는 코드가 있지만 test-kitchen을 실행할 때이 정보가있는 테스트 파일이 내 .kitchen.yml 파일에있는 위치를 선언하는 방법을 알지 못합니다.

:

내가이이 역할, 환경, 요리 책 디렉토리처럼 복사 될 생각에이 파일 내의 repo의 루트 디렉토리를 생성 시도했습니다 그래서 내 .kitchen.yml는 항목을 포함

attributes: 
     splunk: 
     sliceconf_path: test/slice.conf 

그러나 나는 많은 다른 위치를 시도했다 그러나 나는 여전히이 파일을 찾을 수 없습니다

Errno::ENOENT 
     ------------- 
     No such file or directory @ rb_sysopen - test/slice.conf 

같은 오류가 발생하는 것입니다. 그것은 내가 "파일/테스트/slice.conf"에 넣어 경우 복사 얻을 것이다 그러나 나는 경로를 선언하는 경우 그것은 여전히 ​​그것을 찾을 수 있습니다

sliceconf_path: files/test/slice.conf 

또는 (의 디렉토리 구조를 검사를 기반으로 테스트 - 부엌에 내가 사용하고있어 도커 이미지) 내가 요리사/테스트 - 부엌 파일을 찾아 갈 수있는 방법으로 난처한 상황에 빠진거야

cookbooks/cookbook-dh_rainbow_forwarders/files/test/slice.conf 

.

---------------

코드는 다음과 같습니다. 명확히하기 위해 단지 사용 : 내 .kitchen.yml에서 노드 속성 (노드 [ 'sliceconf_path를']) 설정 한

Recipe 
slice_name = '' 
ruby_block 'read_slice_conf' do 
    block do 
    slice_name = File.read("#{node['sliceconf_path']}").chomp 
    end 
end 

# Update local input conf file with meta-data about slice. 
template '/opt/splunkforwarder/etc/system/local/inputs.conf' do 
    source 'system_local_inputs.erb' 
    owner 'nobody' 
    group 'nobody' 
    mode 0o600 
    mode '0600' 
    action :create 
    variables(
    slice_decorators: slice_name 
) 
end 

Template 
[default] 
host = <%= node['fqdn'] %> 

_meta = slice::#{slice_name} 

답변

0

당신이 IO.read(node['splunk']['sliceconf_path']) 같은 일을하는 것 그것을 의미 소리 대상 VM의 절대 경로 여야합니다. 사용자가 제공하는 것과 같은 Chef-y에 대한 지식이 없습니다. 하지만 해당 속성은 커뮤니티 splunk 요리 책에 존재하지 않으므로 코드 작동 방식을 알 수 없습니다. 자동으로 cookbook_files를 이해하기 원한다면, 그 코드를 작성해야합니다.