Puppet에 설치된 경우에만 서비스를 활성화하는 방법은 무엇입니까?

Puppet에 설치된 경우에만 서비스를 활성화하는 방법은 무엇입니까?

onlyif 매개변수를 사용했다고 하는데 해당 서비스 유형에는 해당 매개변수가 존재하지 않는 것 같습니다.

설치 후에만 이 서비스를 활성화하려면 어떻게 해야 합니까? 바이너리 설치 프로그램으로 설치되었으므로 설치 디렉터리가 있는지 테스트하세요.

class scom {
    service { 'scx-cimd':
        ensure => running,
        enable => true,
        hasstatus => true,
        hasrestart => true,
        onlyif => "test -f /opt/microsoft/scx"
    }
}

서비스에 onlyif 매개변수가 없기 때문에 현재 오류 메시지는 "잘못된 매개변수 onlyif"입니다. 설치 디렉터리가 존재하는 경우에만 이 서비스를 활성화하려면 어떻게 해야 합니까?

답변1

서비스 종류(3.x,2.x)에는 exec 유형(3.x,2.x.

원하는 작업을 수행하는 방법에는 두 가지가 있습니다. 첫 번째 방법은 작업을 수행하는 일반적이고 선호되는 방법입니다. 두 번째 방법도 작동하는 해킹입니다. 이상적으로는 서비스의 chkconfig가 별도의 실행기여야 하지만 이미 이런 방식으로 구성되어 있더라도 서비스를 chkconfiging해도 아무런 해가 없습니다.

옵션 1. 서비스가 설치되었는지 확인하고 서비스 유형에 대한 조건을 추가하는 팩트를 작성합니다.

# service_scx_installed.rb
Factor.add('service_scx_installed') 는
  수행할 코드 설정
    파일이 존재? ('/opt/microsoft/scx')

#scom.pp
수업 불량 {
  $service_scx_installed인 경우 {
    서비스 {'scx-cimd':
        => 실행을 확인하세요.
        활성화 => 사실,
        상태 => 사실,
        다시 시작됨 => 사실,
    }
  }
}

옵션 2. 모든 로직을 대형 실행기에 넣습니다.

exec {'시작 및 chkconfig scx 서비스':
  명령 => 'chkconfig scx 서비스가 열립니다. 서비스 scx가 다시 시작됩니다.',
  onlyif => ['test -f /opt/microsoft/scx', '!Service scx status'],
  공급자 => "쉘",
}

관련 정보