API(RaaS)는 SaltStack Config 클라이언트가 연결하는 애플리케이션 서버를 나타냅니다. 이러한 클라이언트에는 SaltStack Config의 사용자 인터페이스 구성 요소, 올바르게 구성된 마스터 및 기타 RaaS 사용자가 포함됩니다. 애플리케이션 서버는 eAPI 서버라고도 합니다.

참고:

SaltStack Config에 대한 전체 API 설명서는 VMware의 API 설명서 사이트 https://code.vmware.com/apis/1179/saltstack-config-raas에 PDF 형식으로 제공됩니다.

RaaS는 모듈("리소스"라고 함)과 함수("메서드"라고 함)로 구성됩니다. API 호출 test.echo(‘hello, world’)에서 리소스는 test이고 메서드는 echo()입니다. 인수는 위치 또는 키워드로 메서드에 전달될 수 있습니다.

RaaS는 두 가지 방법 즉, RPC 클라이언트를 통해 그리고 HTTP(또는 HTTPS) 브리지를 통해 액세스할 수 있습니다.

RaaS에 연결하려면 client = APIClient()에서 다음 옵션을 설정합니다.

  • 서버
  • username
  • 암호
  • config_name='internal' LDAP를 사용하는 경우 인증 백엔드 이름으로 변경
  • timeout=60 # 각 작업 수행에 최대 60초 대기함
  • ssl_key=None
  • sl_cert=None
  • ssl_context=None
  • ssl_validate_cert=True = 자체 서명된 인증서를 사용하는 경우 False로 설정

예:

from sseapiclient import APIClient
client = APIClient('https://localhost', 'root', 'PASSWORD', ssl_validate_cert=False)
참고:

6.2 이전 버전에서는 API 연결이 SyncClient.connect()를 사용하여 이루어졌으며, 이것은 6.2 이상 버전과 여전히 호환됩니다. SyncClient.connect()를 사용하는 경우에는 변경할 필요가 없습니다.

API 구문

client.api.<interface>.<method>(parameter=parameter_value)

예:

from sseapiclient import APIClient
client = APIClient('https://localhost', 'root', 'PASSWORD')
client.api.sec.download_content(auto_ingest=True)

Curl과 함께 API(RaaS) 사용

HTTP 및 JSON에서 직접 RaaS를 사용할 수도 있습니다. 다음은 curl과 함께 API를 사용하는 예입니다. xsrf를 사용하도록 설정한 경우 먼저 xsrf 쿠키와 토큰을 얻어야 합니다. xsrf 토큰 및 쿠키를 얻고 사용하는 방법은 HTTP 브리지를 참조하십시오. Python API 클라이언트를 사용하는 경우에는 기본적으로 이 작업이 자동 수행됩니다.

예:

curl --user 'root:PASSWORD' --url 'https://localhost/rpc' \
  --data '{
    "resource": "sec",
    "method": "download_content",
    "kwarg": {"auto_ingest": true}
  }'

라이센싱

라이센스 만료가 가까워지면 주의를 주는 알림이 SaltStack Config 사용자 인터페이스에 표시됩니다. RaaS 사용자는 라이센스 업무 공간을 사용하여 라이센스 상태를 추적하고 활성 상태를 유지해야 합니다. 라이센스가 만료되면 RaaS 서비스가 중지됩니다.

RPC 클라이언트

sseapiclient 모듈의 프로그래밍 방식 RPC 클라이언트는 Python 버전 2.7 및 Python 버전 3.5 이상에서 작동합니다. 클라이언트는 HTTP 또는 HTTPS를 통해 SSE에 연결하고 인증합니다. RPC 클라이언트를 사용하면 HTTP 브리지보다 조금 더 쉽게 사용할 수 있다는 장점이 있습니다.

HTTP 브리지

HTTP(또는 HTTPS) 브리지는 SSE에 의해 노출된 끝점에 POST되는 JSON 페이로드를 수락하고, 이 페이로드를 RPC 호출로 변환한 다음 결과를 JSON으로 반환합니다. 끝점은 쿠키 기반 인증을 지원하므로 인증 자격 증명을 세션당 한 번만 전달하면 됩니다. 브리지를 사용하면 단일 페이로드에 여러 호출을 보낼 수도 있습니다.

/etc/raas/raas.conf tornado_xsrf_cookies_enabled: True를 통해 xsrf가 사용되도록 설정한 경우(상태 설치 시 기본값) 나머지 호출의 헤더에 X-Xsrftoken:을 제공해야 합니다. 가장 좋은 방법은 get 호출로 쿠키를 저장한 다음 쿠키를 사용하여 헤더 토큰을 제공하는 것입니다. 이 쿠키는 $HOME(사용자 홈) 디렉토리에 저장됩니다. 페이로드는 사전입니다.

xsrf 헤더가 있는 curl 호출 예:

curl -k -c $HOME/eAPICookie.txt -u root:PASSWORD 'https://localhost/account/login' >/dev/null
curl -k -u root:PASSWORD -b $HOME/eAPICookie.txt \
  -H 'X-Xsrftoken: '$(grep -w '_xsrf' $HOME/eAPICookie.txt | cut -f7)'' \
  -X POST https://localhost/rpc \
  -d '{
    "resource": "sec",
    "method": "download_content",
    "kwarg": {"auto_ingest": true}
  }'

샘플에서 가정하는 내용은 다음과 같습니다.

  • client=APIClient(<addr>,<user>, <pwd>)
  • eAPI의 기본 상태 기반 설치
  • SSL 사용
  • sseapiclient 가져오기. 예:
    from sseapiclient import APIClient