Skydive ã¯ããªãŒãã³ãœãŒã¹ã®ãªã¢ã«ã¿ã€ã ãããã¯ãŒã¯ ããããžããã³ãããã³ã« ã¢ãã©ã€ã¶ãŒã§ãã ãããã¯ãŒã¯ ã€ã³ãã©ã¹ãã©ã¯ãã£ã§äœãèµ·ãã£ãŠããããç解ããããã®å æ¬çãªæ¹æ³ãæäŸããããšãç®çãšããŠããŸãã
èå³ãæã£ãŠããã ãããããSkydive ã«é¢ããã¹ã¯ãªãŒã³ã·ã§ãããããã€ã玹ä»ããŸãã 以äžã«Skydiveã®çŽ¹ä»èšäºãæ²èŒããŸãã
åœ¹è· "
Skydive ã¯ãSkydive ãšãŒãžã§ã³ããããããã¯ãŒã¯ ã€ãã³ããåä¿¡ããããšã«ããããããã¯ãŒã¯ ããããžã衚瀺ããŸãã Skydive ãšãŒãžã§ã³ã ãããã¯ãŒã¯ã®å€åŽã«ãããããã¯ãŒã¯ ã³ã³ããŒãã³ãããTORãããŒã¿ ã¹ãã¬ãŒãžãªã©ã®éãããã¯ãŒã¯ ãªããžã§ã¯ããããããžå³ã«è¿œå ãŸãã¯è¡šç€ºããæ¹æ³ãèããããšã¯ãããŸãããããŒã ã«ãŒã« API ã®ãããã§ãããå¿é ããå¿ èŠã¯ãããŸããã
ããŒãžã§ã³ 0.20 以éãSkydive ã¯ãæ°ããããŒããšãšããžãäœæããããæ¢åã®ããŒãã®ã¡ã¿ããŒã¿ãæŽæ°ãããããããã«äœ¿çšã§ããããŒã ã«ãŒã« API ãæäŸããŸãã ããŒã ã«ãŒã« API ã¯ãããŒã ã«ãŒã« API ãšãšããž ã«ãŒã« API ã® XNUMX ã€ã® API ã«åãããŠããŸãã ããŒã ã«ãŒã« API ã¯ãæ°ããããŒããäœæããæ¢åã®ããŒãã®ã¡ã¿ããŒã¿ãæŽæ°ããããã«äœ¿çšãããŸãã ãšããž ã«ãŒã« API ã¯ãXNUMX ã€ã®ããŒãéã®å¢çãäœæããããã«äœ¿çšãããŸãã XNUMX ã€ã®ããŒããæ¥ç¶ããŸãã
ãã®ããã°ã§ã¯ XNUMX ã€ã®äœ¿çšäŸã«ã€ããŠèª¬æããŸãããã®ãã¡ã® XNUMX ã€ã¯ãSkydive ãããã¯ãŒã¯ã®äžéšã§ã¯ãªããããã¯ãŒã¯ ã³ã³ããŒãã³ãã§ãã XNUMX çªç®ã®ãªãã·ã§ã³ã¯ãéãããã¯ãŒã¯ ã³ã³ããŒãã³ãã§ãã ãã®åã«ãããããž ã«ãŒã« API ã䜿çšããåºæ¬çãªæ¹æ³ãããã€ãèŠãŠãããŸãã
Skydive ããŒãã®äœæ
ããŒããäœæããã«ã¯ãäžæã®ããŒãåãšæå¹ãªããŒã ã¿ã€ããæå®ããå¿ èŠããããŸãã ããã€ãã®è¿œå ãªãã·ã§ã³ãæäŸããããšãã§ããŸãã
skydive client node-rule create --action="create" --node-name="node1" --node-type="fabric" --name="node rule1"
{
"UUID": "ea21c30f-cfaa-4f2d-693d-95159acb71ed",
"Name": "node rule1",
"Description": "",
"Metadata": {
"Name": "node1",
"Type": "fabric"
},
"Action": "create",
"Query": ""
}
Skydive ããŒãã®ã¡ã¿ããŒã¿ãæŽæ°ãã
æ¢åã®ããŒãã®ã¡ã¿ããŒã¿ãæŽæ°ããã«ã¯ãã¡ã¿ããŒã¿ãæŽæ°ããããŒããéžæããããã® gremlin ã¯ãšãªãæäŸããå¿ èŠããããŸãã ãªã¯ãšã¹ãã«å¿ããŠãåäžããŒã ã«ãŒã«ã䜿çšã㊠XNUMX ã€ä»¥äžã®ããŒãã®ã¡ã¿ããŒã¿ãæŽæ°ã§ããŸãã
skydive client node-rule create --action="update" --name="update rule" --query="G.V().Has('Name', 'node1')" --metadata="key1=val1, key2=val2"
{
"UUID": "3e6c0e15-a863-4583-6345-715053ac47ce",
"Name": "update rule",
"Description": "",
"Metadata": {
"key1": "val1",
"key2": "val2"
},
"Action": "update",
"Query": "G.V().Has('Name', 'node1')"
}
Skydive Edge ã®äœæ
ãšããžãäœæããã«ã¯ããœãŒã¹ ããŒããšå®å ããŒããããã³ãšããžã®ãªã³ã¯ ã¿ã€ããæå®ããå¿ èŠããããŸããåããŒããäœæããã«ã¯ããªã³ã¯ ã¿ã€ãã®å€ãæææš©ã§ããå¿ èŠããããŸããåæ§ã«ããªã³ã¯ ã¿ã€ã Layer2 ãäœæããã«ã¯ããªã³ã¯ ã¿ã€ãã®å€ã次ã§ããå¿ èŠããããŸããã¬ã€ã€ãŒ2ã XNUMX ã€ã®ããŒãéã«è€æ°ã®ãªã³ã¯ãäœæã§ããŸããããªã³ã¯ã®ã¿ã€ãã¯ç°ãªãå¿ èŠããããŸãã
skydive client edge-rule create --name="edge" --src="G.v().has('TID', '2f6f9b99-82ef-5507-76b6-cbab28bda9cb')" --dst="G.V().Has('TID', 'd6ec6e2f-362e-51e5-4bb5-6ade37c2ca5c')" --relationtype="both"
{
"UUID": "50fec124-c6d0-40c7-42a3-2ed8d5fbd410",
"Name": "edge",
"Description": "",
"Src": "G.v().has('TID', '2f6f9b99-82ef-5507-76b6-cbab28bda9cb')",
"Dst": "G.V().Has('TID', 'd6ec6e2f-362e-51e5-4bb5-6ade37c2ca5c')",
"Metadata": {
"RelationType": "both"
}
}
æåã®äœ¿çšäŸ
ãã®å Žåãã¹ã«ã€ãã€ã ããããžã§éãããã¯ãŒã¯ ããã€ã¹ã衚瀺ããæ¹æ³ãèŠãŠãããŸãã ããã€ãã®æçšãªã¡ã¿ããŒã¿ãå«ã Skydive ããããž ãã€ã¢ã°ã©ã ã«è¡šç€ºããå¿ èŠãããããŒã¿ ãŠã§ã¢ããŠã¹ããããšèããŠã¿ãŸãããã
ããŒã ã«ãŒã«ãäœæããŠããã€ã¹ãããããžã«è¿œå ããã ãã§ãã äœæã³ãã³ãã®äžéšãšããŠããã€ã¹ ã¡ã¿ããŒã¿ãè¿œå ããããåŸã§ XNUMX ã€ä»¥äžã®ããŒã ã«ãŒã«æŽæ°ã³ãã³ããäœæãããã§ããŸãã
次ã®ãã¹ã ã«ãŒã« ã³ãã³ããå®è¡ããŠãã¹ãã¬ãŒãž ããã€ã¹ãããããž ãã€ã¢ã°ã©ã ã«è¿œå ããŸãã
skydive client node-rule create --action="create" --node-name="sda" --node-type="persistentvolume" --metadata="DEVNAME=/dev/sda,DEVTYPE=disk,ID.MODEL=SD_MMC, ID.MODEL ID=0316, ID.PATH TAG=pci-0000_00_14_0-usb-0_3_1_0-scsi-0_0_0_0, ID.SERIAL SHORT=20120501030900000, ID.VENDOR=Generic-, ID.VENDOR ID=0bda, MAJOR=8, MINOR=0, SUBSYSTEM=block, USEC_INITIALIZED=104393719727"
ãšããž ã«ãŒã«ã®äžã®ã³ãã³ããå®è¡ããŠãäœæããããŒãããã¹ã ããŒãã«é¢é£ä»ããŸãã
skydive client edge-rule create --src="G.V().Has('Name', 'node1')" --dst="G.V().Has('Name', 'sda')" --relationtype="ownership"
äžèšã®ã³ãã³ããå®è¡ãããšã次ã®å³ã«ç€ºãããã«ãæå®ãããã¡ã¿ããŒã¿ãæ〠Skydive ããããž ãã€ã¢ã°ã©ã ã«ããã€ã¹ã衚瀺ãããããã«ãªããŸãã
XNUMX çªç®ã®äœ¿çšäŸ
ãã®å ŽåãSkydive ãããã¯ãŒã¯ã®äžéšã§ã¯ãªããããã¯ãŒã¯ ããã€ã¹ãè¿œå ããæ¹æ³ãèŠãŠãããŸãã ãã®äŸãèŠãŠã¿ãŸãããã XNUMX ã€ã® Skydive ãšãŒãžã§ã³ãã XNUMX ã€ã®ç°ãªããã¹ãäžã§å®è¡ãããŠãããããã XNUMX ã€ã®ãã¹ããæ¥ç¶ããã«ã¯ TOR ã¹ã€ãããå¿ èŠã§ãã ããã¯æ§æãã¡ã€ã«ã§æ§é ããŒããšãªã³ã¯ãå®çŸ©ããããšã§å®çŸã§ããŸãããããããž ã«ãŒã« API ã䜿çšããŠåãããšãè¡ãæ¹æ³ãèŠãŠã¿ãŸãããã
TOR ã¹ã€ããããªãå Žåã次ã®å³ã«ç€ºãããã«ãXNUMX ã€ã®ãšãŒãžã§ã³ãã¯ãªã³ã¯ã®ãªã XNUMX ã€ã®ç°ãªãããŒããšããŠè¡šç€ºãããŸãã
次ã«ã次ã®ãã¹ã ã«ãŒã« ã³ãã³ããå®è¡ããŠãTOR ã¹ã€ãããšããŒããäœæããŸãã
skydive client node-rule create --node-name="TOR" --node-type="fabric" --action="create"
skydive client node-rule create --node-name="port1" --node-type="port" --action="create"
skydive client node-rule create --node-name="port2" --node-type="port" --action="create"
ã芧ã®ãšãããTOR ã¹ã€ãããšããŒããäœæãããSkydive ããããžã«è¿œå ãããŸãããããããžã¯æ¬¡ã®ç»åã®ããã«ãªããŸãã
次ã«ã次ã®ãšããž ã«ãŒã« ã³ãã³ããå®è¡ããŠãTOR ã¹ã€ãããããŒã 1ãããã³ãã¹ã 1 ã®ãããªã㯠ã€ã³ã¿ãŒãã§ã€ã¹éã®æ¥ç¶ãäœæããŸãã
skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port1')" --relationtype="ownership"
skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port1')" --relationtype="layer2"
skydive client edge-rule create --src="G.V().Has('TID', '372c254d-bac9-50c2-4ca9-86dcc6ce8a57')" --dst="G.V().Has('Name', 'port1')" --relationtype="layer2"
次ã®ã³ãã³ããå®è¡ããŠãTOR ã¹ã€ããã®ããŒã 2 ãšãã¹ã 2 ã®ãããªã㯠ã€ã³ã¿ãŒãã§ã€ã¹ã®éã«ãªã³ã¯ãäœæããŸãã
skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port2')" --relationtype="layer2"
skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port2')" --relationtype="ownership"
skydive client edge-rule create --src="G.V().Has('TID', '50037073-7862-5234-4996-e58cc067c69c')" --dst="G.V().Has('Name', 'port2')" --relationtype="layer2"
æææš©ãšã¬ã€ã€ãŒ 2 é¢é£ä»ãã TOR ã¹ã€ãããšããŒãã®éã«äœæããããšãŒãžã§ã³ããšããŒãã®éã«ã¬ã€ã€ãŒ 2 é¢é£ä»ããäœæãããŸãã æçµçãªããããžã¯ä»¥äžã®ç»åã®ããã«ãªããŸãã
ãã㧠XNUMX ã€ã®ãã¹ã/ãšãŒãžã§ã³ããæ£ããæ¥ç¶ãããæ¥ç¶ããã¹ãããããXNUMX ã€ã®ãã¹ãéã®æçãã¹ ãã£ããã£ãäœæãããã§ããŸãã
PS ãžã®ãªã³ã¯
Skydive ã®ä»ã®æ©èœã«é¢ããèšäºãæžããŠããã ããæ¹ãæ¢ããŠããŸãã
åºæïŒ habr.com