De API (RaaS) verwijst naar de applicatieserver waarmee SaltStack Config-clients verbinding maken. Deze clients omvatten het gebruikersinterfaceonderdeel van SaltStack Config, goed geconfigureerde masters en andere gebruikers van RaaS. De applicatieserver wordt ook wel de eAPI-server genoemd.
RaaS is ingedeeld in modules (resources genoemd) en functies (methoden genoemd). In de API-aanroep test.echo('hello, world') is 'test' de resource en 'echo()' de methode. Argumenten kunnen aan methoden worden doorgegeven op positie of op trefwoord.
Toegang tot RaaS kan op twee manieren worden gekregen: via een RPC-client en via een HTTP-brug (of HTTPS).
Als u verbinding wilt maken met RaaS, stelt u de volgende opties in client = APIClient() in:
- server
- gebruikersnaam
- wachtwoord
- config_name='internal' Wijzig dit in backendnaam voor verificatie bij gebruik van LDAP
- time-out=60 # Het uitvoeren van een bewerking kan maximaal 60 seconden duren
- ssl_key=None
- ssl_cert=None
- ssl_context=None
- ssl_validate_cert=True = Stel dit in op False als u zelfondertekende certificaten gebruikt
Voorbeeld:
from sseapiclient import APIClient client = APIClient('https://localhost', 'root', 'PASSWORD', ssl_validate_cert=False)
In versies vóór 6.2 werd de API-verbinding gemaakt met SyncClient.connect()
, die nog steeds compatibel is met versies 6.2 en hoger. Als u SyncClient.connect()
gebruikt, zijn er geen wijzigingen vereist.
API-syntaxis
client.api.<interface>.<method>(parameter=parameter_value)
Voorbeeld:
from sseapiclient import APIClient client = APIClient('https://localhost', 'root', 'PASSWORD') client.api.sec.download_content(auto_ingest=True)
De API (RaaS) met Curl gebruiken
U kunt RaaS ook direct met HTTP en JSON gebruiken. Hieronder ziet u een voorbeeld van het gebruik van de API met curl
. Wanneer xsrf is ingeschakeld, moet u eerst een xsrf-cookie en -token verkrijgen. Zie HTTP-brug voor informatie over het verkrijgen en gebruiken van een xsrf-token en -cookie. Wanneer de Python API-client wordt gebruikt, wordt dit standaard automatisch gedaan.
Voorbeeld:
curl --user 'root:PASSWORD' --url 'https://localhost/rpc' \ --data '{ "resource": "sec", "method": "download_content", "kwarg": {"auto_ingest": true} }'
Licenties
In de gebruikersinterface van SaltStack Config wordt u er in meldingen voor gewaarschuwd wanneer uw licentie bijna verloopt. Als RaaS-gebruiker moet u de werkplek Licentie (License) gebruiken om de licentiestatus bij te houden en ervoor te zorgen dat deze actief blijft. Als uw licentie verloopt, stopt de RaaS-service.
RPC-client
De programmatische RPC-clients in de module sseapiclient werken met Python versie 2.7 en Python versie 3.5 of hoger. De clients maken verbinding met SSE via HTTP of HTTPS en voeren verificatie uit. De RPC-client heeft het voordeel dat deze gemakkelijker is te gebruiken dan de HTTP-brug.
HTTP-brug
De HTTP-brug (of HTTPS) accepteert JSON-ladingen die zijn gepost naar een eindpunt dat wordt blootgesteld door SSE, zet de nettoladingen om in RPC-aanroepen en retourneert vervolgens het resultaat als JSON. Het eindpunt ondersteunt op cookies gebaseerde verificatie, zodat verificatiegegevens slechts eenmaal per sessie hoeven te worden doorgegeven. Met de brug kunt u ook meerdere oproepen verzenden in één nettolading.
Als xsrf is ingeschakeld (standaard met state install) in de /etc/raas/raas.conf tornado_xsrf_cookies_enabled: True, moet u het X-Xsrftoken: opgeven in de header van de restaanroep. De beste manier is om een cookie op te slaan met een ophaalaanroep en vervolgens de cookie te gebruiken om de headertoken op te geven. Deze cookie wordt opgeslagen in de directory $HOME (basismap van gebruikers). De lading is een woordenboek.
Voorbeeld van curl-aanroep met xsrf-header:
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} }'
In de voorbeelden wordt het volgende verondersteld:
- client=APIClient(<addr>,<user>, <pwd>)
- Standaard op status gebaseerde installatie van eAPI
- SSL ingeschakeld
- Import van sseapiclient. Voorbeeld:
from sseapiclient import APIClient