big-ip rest api

jsonで返ってくるのでjqかなければpython -m json.tool を使うと見易い。

$ curl -s -k --user user:pass https://192.168.0.1/mgmt/tm/ | jq .

URLはこの辺
/tm/net/
/tm/ltm/
/tm/security/
/tm/apm/

ltm

  • node追加
curl --user user:pass -s -k https://192.168.0.1/mgmt/tm/ltm/node \
     -H 'Content-Type: application/json' -X POST \
     -d '{"address": "192.168.0.1", "name": "testnode"}'

responseで帰ってくるの "selfLink": "https://localhost/mgmt/tm/ltm/node/~Common~testnode",
というのこのnodeをapiで操作するurl

  • node削除
curl --user user:pass -s -k https://192.168.0.1/mgmt/tm/ltm/node/~Common~testnode \
     -X DELETE 
  • pool追加

https://192.168.0.1/mgmt/tm/ltm/pool
postパラメータ

'{"name":"testpool-http","monitor":"http","description":"hoge:","members":[{"name":"testnode:80"}]}'

複数monitorを登録する方法は不明

https://192.168.0.1/mgmt/tm/ltm/virtual
postパラメータ

'{"name":"testvirtual-http","destination":"192.168.0.10:80","pool":"testpool-http"}' 

typeがstandardではなくてPerformance(layer 4)になる。。。

afm (security)

  • security address-list一覧

/mgmt/tm/security/firewall/address-list

  • security address-list追加

/mgmt/tm/security/firewall/address-list

'{"name": "hogehoge", "addresses": ["1.1.1.1/32"]}'
  • security address-list変更

PUTメソッドで上書きする
既存の内容を全て上書きするので、追加文だけではなくて既存のものも含める必要がある
/mgmt/tm/security/firewall/address-list/hogehoge -X PUT

'{"addresses": ["1.1.1.1/32", "2.2.2.2/32", "3.3.3.3/32"]}'