How to add or remove datagroup records using iControl REST API
There are two known ways to manipulate datagroup records using the REST API:
- retrieve the current list of records, add or remove as required and import the updated list – not very friendly for simple batch processing
- using /mgmt/tm/util/bash hack to run the actual tmsh command – unfortunately this requires admin/bash privileges
I’ve found a new one using the options parameter:
curl -X PATCH -H "Content-Type: application/json" -d '{"name":"Test-DataGroup"}' -u"test:test" https://5.6.7.8/mgmt/tm/ltm/data-group/internal/Test-DataGroup?options=records%20add%20%7B%201.2.3.4%2F32%20%7D
PHP snippet:
$f5hostname = "5.6.7.8"; $f5credentials = "test:test"; $ip = "1.2.3.4"; $dg = "Test-DataGroup"' function curl_json($method, $url, $data = "") { global $f5credentials; $s = curl_init(); curl_setopt($s, CURLOPT_URL, $url); curl_setopt($s, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($s, CURLOPT_USERPWD, $f5credentials); curl_setopt($s, CURLOPT_RETURNTRANSFER, true); if($method!="GET") { curl_setopt($s, CURLOPT_CUSTOMREQUEST, $method); curl_setopt($s, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: ' . strlen($data))); curl_setopt($s, CURLOPT_POSTFIELDS, $data); } $response = json_decode(curl_exec($s)); curl_close($s); return $response; } $command = urlencode("records add { ${ip}/32 }"); $dgurl = str_replace("/", "~", $dg); curl_json("PATCH", "https://${f5hostname}/mgmt/tm/ltm/data-group/internal/${dgurl}?options=${command}", "{\"name\":\"${dg}\"}");
Zveřejněno 15.12.2017 v 12:43 v rubrice F5 · Trvalý odkaz