เชธเซเช•เชพเชฏเชกเชพเช‡เชต เช•เซเชฒเชพเชฏเชจเซเชŸ เชฆเซเชตเชพเชฐเชพ เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ เชธเซเช•เชพเชฏเชกเชพเช‡เชต เชŸเซ‹เชชเซ‹เชฒเซ‹เชœเซ€เชฎเชพเช‚ เชจเซ‹เชก เช‰เชฎเซ‡เชฐเชตเซเช‚

เชธเซเช•เชพเชฏเชกเชพเช‡เชต เชเช• เช“เชชเชจ เชธเซ‹เชฐเซเชธ, เชฐเซ€เช…เชฒ-เชŸเชพเช‡เชฎ เชจเซ‡เชŸเชตเชฐเซเช• เชŸเซ‹เชชเซ‹เชฒเซ‹เชœเซ€ เช…เชจเซ‡ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชตเชฟเชถเซเชฒเซ‡เชทเช• เช›เซ‡. เชคเซ‡เชจเซ‹ เชนเซ‡เชคเซ เชจเซ‡เชŸเชตเชฐเซเช• เชˆเชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐเชฎเชพเช‚ เชถเซเช‚ เชฅเชˆ เชฐเชนเซเชฏเซเช‚ เช›เซ‡ เชคเซ‡ เชธเชฎเชœเชตเชพเชจเซ€ เชตเซเชฏเชพเชชเช• เชฐเซ€เชค เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพเชจเซ‹ เช›เซ‡.

เชคเชฎเชพเชฐเซ€ เชฐเซเชšเชฟ เชฎเชพเชŸเซ‡, เชนเซเช‚ เชคเชฎเชจเซ‡ เชธเซเช•เชพเชฏเชกเชพเช‡เชต เชตเชฟเชถเซ‡เชจเชพ เช•เซ‡เชŸเชฒเชพเช• เชธเซเช•เซเชฐเซ€เชจเชถเซ‰เชŸเซเชธ เช†เชชเซ€เชถ. เชจเซ€เชšเซ‡ เชธเซเช•เชพเชฏเชกเชพเช‡เชตเชจเชพ เชชเชฐเชฟเชšเชฏ เชชเชฐ เชเช• เชชเซ‹เชธเซเชŸ เชนเชถเซ‡.

เชธเซเช•เชพเชฏเชกเชพเช‡เชต เช•เซเชฒเชพเชฏเชจเซเชŸ เชฆเซเชตเชพเชฐเชพ เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ เชธเซเช•เชพเชฏเชกเชพเช‡เชต เชŸเซ‹เชชเซ‹เชฒเซ‹เชœเซ€เชฎเชพเช‚ เชจเซ‹เชก เช‰เชฎเซ‡เชฐเชตเซเช‚

เชธเซเช•เชพเชฏเชกเชพเช‡เชต เช•เซเชฒเชพเชฏเชจเซเชŸ เชฆเซเชตเชพเชฐเชพ เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ เชธเซเช•เชพเชฏเชกเชพเช‡เชต เชŸเซ‹เชชเซ‹เชฒเซ‹เชœเซ€เชฎเชพเช‚ เชจเซ‹เชก เช‰เชฎเซ‡เชฐเชตเซเช‚

เชชเซ‹เชธเซเชŸ "skydive.network เชจเซ‹ เชชเชฐเชฟเชšเชฏยป Habrรฉ เชชเชฐ.

Skydive เช Skydive เชเชœเชจเซเชŸเซ‹ เชคเชฐเชซเชฅเซ€ เชจเซ‡เชŸเชตเชฐเซเช• เช‡เชตเซ‡เชจเซเชŸเซเชธ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ€เชจเซ‡ เชจเซ‡เชŸเชตเชฐเซเช• เชŸเซ‹เชชเซ‹เชฒเซ‹เชœเซ€ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡. เชถเซเช‚ เชคเชฎเซ‡ เช•เซเชฏเชพเชฐเซ‡เชฏ เชตเชฟเชšเชพเชฐเซเชฏเซเช‚ เช›เซ‡ เช•เซ‡ เชŸเซ‹เชชเซ‹เชฒเซ‹เชœเซ€ เชกเชพเชฏเชพเช—เซเชฐเชพเชฎ เชจเซ‡เชŸเชตเชฐเซเช• เช˜เชŸเช•เซ‹เชฎเชพเช‚ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‰เชฎเซ‡เชฐเชตเซเช‚ เช…เชฅเชตเชพ เชฆเชฐเซเชถเชพเชตเชตเซเช‚ เช•เซ‡ เชœเซ‡ เชธเซเช•เชพเชฏเชกเชพเชˆเชต เชเชœเชจเซเชŸ เชจเซ‡เชŸเชตเชฐเซเช•เชจเซ€ เชฌเชนเชพเชฐ เชนเซ‹เชฏ เช…เชฅเชตเชพ TOR, เชกเซ‡เชŸเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชตเช—เซ‡เชฐเซ‡ เชœเซ‡เชตเชพ เชจเซ‹เชจ-เชจเซ‡เชŸเชตเชฐเซเช• เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธ. เชนเชตเซ‡ เชคเซ‡ เชตเชฟเชถเซ‡ เชšเชฟเช‚เชคเชพ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€.

เชธเช‚เชธเซเช•เชฐเชฃ 0.20 เชฅเซ€, Skydive เชจเซ‹เชก เชจเชฟเชฏเชฎ API เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชจเชตเชพ เชจเซ‹เชกเซเชธ เช…เชจเซ‡ เช•เชฟเชจเชพเชฐเซ€เช“ เชฌเชจเชพเชตเชตเชพ เช…เชจเซ‡ เชนเชพเชฒเชจเชพ เชจเซ‹เชกเซเชธเชจเชพ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพเชจเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡. เชจเซ‹เชก เชจเชฟเชฏเชฎ API เชฌเซ‡ API เชฎเชพเช‚ เชตเชฟเชญเชพเชœเชฟเชค เชฅเชฏเซ‡เชฒ เช›เซ‡: เชจเซ‹เชก เชจเชฟเชฏเชฎ API เช…เชจเซ‡ เชงเชพเชฐ เชจเชฟเชฏเชฎ API. เชจเซ‹เชก เชฐเซ‚เชฒ API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชจเชตเซ‹ เชจเซ‹เชก เชฌเชจเชพเชตเชตเชพ เช…เชจเซ‡ เชนเชพเชฒเชจเชพ เชจเซ‹เชกเชจเชพ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพเชจเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡. เชงเชพเชฐ เชจเชฟเชฏเชฎ API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฌเซ‡ เช—เชพเช‚เช เซ‹ เชตเชšเซเชšเซ‡ เชธเซ€เชฎเชพ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡. เชฌเซ‡ เช—เชพเช‚เช เซ‹เชจเซ‡ เชœเซ‹เชกเซ‡ เช›เซ‡.

เช† เชฌเซเชฒเซ‹เช—เชฎเชพเช‚ เช†เชชเชฃเซ‡ เชฌเซ‡ เช‰เชชเชฏเซ‹เช—เชจเชพ เช•เชฟเชธเซเชธเชพเช“ เชœเซ‹เชˆเชถเซเช‚, เชœเซ‡เชฎเชพเช‚เชฅเซ€ เชเช• เชจเซ‡เชŸเชตเชฐเซเช• เช˜เชŸเช• เช›เซ‡ เชœเซ‡ เชธเซเช•เชพเชฏเชกเชพเชˆเชต เชจเซ‡เชŸเชตเชฐเซเช•เชจเซ‹ เชญเชพเช— เชจเชฅเซ€. เชฌเซ€เชœเซ‹ เชตเชฟเช•เชฒเซเชช เชจเซ‹เชจ-เชจเซ‡เชŸเชตเชฐเซเช• เช˜เชŸเช• เช›เซ‡. เชคเซ‡ เชชเชนเซ‡เชฒเชพเช‚, เช…เชฎเซ‡ เชŸเซ‹เชชเซ‹เชฒเซ‹เชœเซ€ เชจเชฟเชฏเชฎเซ‹ API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เช•เซ‡เชŸเชฒเซ€เช• เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‹ เชœเซ‹เชˆเชถเซเช‚.

เชธเซเช•เชพเชฏเชกเชพเช‡เชต เชจเซ‹เชก เชฌเชจเชพเชตเชตเซเช‚

เชจเซ‹เชก เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชเช• เช…เชจเชจเซเชฏ เชจเซ‹เชก เชจเชพเชฎ เช…เชจเซ‡ เชฎเชพเชจเซเชฏ เชจเซ‹เชก เชชเซเชฐเช•เชพเชฐ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡. เชคเชฎเซ‡ เช•เซ‡เชŸเชฒเชพเช• เชตเชงเชพเชฐเชพเชจเชพ เชตเชฟเช•เชฒเซเชชเซ‹ เชชเชฃ เช†เชชเซ€ เชถเช•เซ‹ เช›เซ‹.

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 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')"
}

เชธเซเช•เชพเชฏเชกเชพเช‡เชต เชเชœ เชฌเชจเชพเชตเชตเซ€

เชงเชพเชฐ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชธเซเชฐเซ‹เชค เช…เชจเซ‡ เช—เช‚เชคเชตเซเชฏ เชจเซ‹เชกเซเชธ เช…เชจเซ‡ เช•เชฟเชจเชพเชฐเซ€เชจเซ‹ เชฒเชฟเช‚เช• เชชเซเชฐเช•เชพเชฐ เชธเซเชชเชทเซเชŸ เช•เชฐเชตเซ‹ เช†เชตเชถเซเชฏเช• เช›เซ‡; เชšเชพเช‡เชฒเซเชก เชจเซ‹เชก เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เชฒเชฟเช‚เช• เชชเซเชฐเช•เชพเชฐเชจเซเช‚ เชฎเซ‚เชฒเซเชฏ เชฎเชพเชฒเชฟเช•เซ€เชจเซเช‚ เชนเซ‹เชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡; เชคเซ‡เชตเซ€ เชœ เชฐเซ€เชคเซ‡, เชฒเชฟเช‚เช• เชชเซเชฐเช•เชพเชฐ เชธเซเชคเชฐ2 เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เชฒเชฟเช‚เช• เชชเซเชฐเช•เชพเชฐ เชฎเซ‚เชฒเซเชฏ เชนเซ‹เชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡ เชธเซเชคเชฐ2. เชคเชฎเซ‡ เชฌเซ‡ เชจเซ‹เชกเซเชธ เชตเชšเซเชšเซ‡ เชเช• เช•เชฐเชคเชพเช‚ เชตเชงเซ เชฒเชฟเช‚เช• เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹, เชชเชฐเช‚เชคเซ เชฒเชฟเช‚เช•เชจเซ‹ เชชเซเชฐเช•เชพเชฐ เช…เชฒเช— เชนเซ‹เชตเซ‹ เชœเซ‹เชˆเช.

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 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"

เช‰เชชเชฐเซ‹เช•เซเชค เช†เชฆเซ‡เชถเซ‹ เชชเช›เซ€, เชคเชฎเซ‡ เชนเชตเซ‡ เชจเซ€เชšเซ‡เชจเซ€ เช›เชฌเซ€เชฎเชพเช‚ เชฌเชคเชพเชตเซเชฏเชพ เชชเซเชฐเชฎเชพเชฃเซ‡ เช†เชชเซ‡เชฒ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ เชธเชพเชฅเซ‡ เชธเซเช•เชพเชฏเชกเชพเช‡เชต เชŸเซ‹เชชเซ‹เชฒเซ‹เชœเซ€ เชกเชพเชฏเชพเช—เซเชฐเชพเชฎเชฎเชพเช‚ เชฆเซ‡เช–เชพเชคเชพ เช‰เชชเช•เชฐเชฃเชจเซ‡ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹.

เชธเซเช•เชพเชฏเชกเชพเช‡เชต เช•เซเชฒเชพเชฏเชจเซเชŸ เชฆเซเชตเชพเชฐเชพ เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ เชธเซเช•เชพเชฏเชกเชพเช‡เชต เชŸเซ‹เชชเซ‹เชฒเซ‹เชœเซ€เชฎเชพเช‚ เชจเซ‹เชก เช‰เชฎเซ‡เชฐเชตเซเช‚

เชฌเซ€เชœเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‡เชธ

เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เช†เชชเชฃเซ‡ เชจเซ‡เชŸเชตเชฐเซเช• เช‰เชชเช•เชฐเชฃเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‰เชฎเซ‡เชฐเชตเซเช‚ เชคเซ‡ เชœเซ‹เชˆเชถเซเช‚ เชœเซ‡ เชธเซเช•เชพเชฏเชกเชพเช‡เชต เชจเซ‡เชŸเชตเชฐเซเช•เชจเซ‹ เชญเชพเช— เชจเชฅเซ€. เชšเชพเชฒเซ‹ เช† เช‰เชฆเชพเชนเชฐเชฃ เชœเซ‹เชˆเช. เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชฌเซ‡ เช…เชฒเช—-เช…เชฒเช— เชฏเชœเชฎเชพเชจเซ‹ เชชเชฐ เชฌเซ‡ เชธเซเช•เชพเชฏเชกเชพเช‡เชต เชเชœเชจเซเชŸเซ‹ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเชพ เช›เซ‡, เช† เชฌเซ‡ เชฏเชœเชฎเชพเชจเซ‹เชจเซ‡ เชœเซ‹เชกเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฎเชจเซ‡ TOR เชธเซเชตเซ€เชšเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชญเชฒเซ‡ เช†เชชเชฃเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเชพเชˆเชฒเชฎเชพเช‚ เชธเซเชŸเซเชฐเช•เซเชšเชฐ เชจเซ‹เชกเซเชธ เช…เชจเซ‡ เชฒเชฟเช‚เช•เซเชธเชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ€เชจเซ‡ เช† เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช, เชšเชพเชฒเซ‹ เชœเซ‹เชˆเช เช•เซ‡ เช†เชชเชฃเซ‡ เชŸเซ‹เชชเซ‹เชฒเซ‹เชœเซ€ เชจเชฟเชฏเชฎเซ‹ API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเซ€ เชถเช•เซ€เช.

TOR เชธเซเชตเซ€เชš เชตเชฟเชจเชพ, เชจเซ€เชšเซ‡เชจเซ€ เช›เชฌเซ€เชฎเชพเช‚ เชฌเชคเชพเชตเซเชฏเชพ เชชเซเชฐเชฎเชพเชฃเซ‡, เชฌเซ‡ เชเชœเชจเซเชŸเซ‹ เช•เซ‹เชˆเชชเชฃ เชฒเชฟเช‚เช• เชตเชฟเชจเชพ เชฌเซ‡ เช…เชฒเช—-เช…เชฒเช— เชจเซ‹เชก เชคเชฐเซ€เช•เซ‡ เชฆเซ‡เช–เชพเชถเซ‡.

เชธเซเช•เชพเชฏเชกเชพเช‡เชต เช•เซเชฒเชพเชฏเชจเซเชŸ เชฆเซเชตเชพเชฐเชพ เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ เชธเซเช•เชพเชฏเชกเชพเช‡เชต เชŸเซ‹เชชเซ‹เชฒเซ‹เชœเซ€เชฎเชพเช‚ เชจเซ‹เชก เช‰เชฎเซ‡เชฐเชตเซเช‚

เชนเชตเซ‡ 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 เชธเซเชตเซ€เชš เช…เชจเซ‡ เชชเซ‹เชฐเซเชŸ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡ เช…เชจเซ‡ เชธเซเช•เชพเชฏเชกเชพเช‡เชต เชŸเซ‹เชชเซ‹เชฒเซ‹เชœเซ€เชฎเชพเช‚ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡, เช…เชจเซ‡ เชŸเซ‹เชชเซ‹เชฒเซ‹เชœเซ€ เชนเชตเซ‡ เชจเซ€เชšเซ‡เชจเซ€ เช›เชฌเซ€เชจเซ€ เชœเซ‡เชฎ เชฆเซ‡เช–เชพเชถเซ‡.

เชธเซเช•เชพเชฏเชกเชพเช‡เชต เช•เซเชฒเชพเชฏเชจเซเชŸ เชฆเซเชตเชพเชฐเชพ เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ เชธเซเช•เชพเชฏเชกเชพเช‡เชต เชŸเซ‹เชชเซ‹เชฒเซ‹เชœเซ€เชฎเชพเช‚ เชจเซ‹เชก เช‰เชฎเซ‡เชฐเชตเซเช‚

เชนเชตเซ‡ 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 เชเชธเซ‹เชธเชฟเชเชถเชจเซ‹ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡. เชนเชตเซ‡ เช…เช‚เชคเชฟเชฎ เชŸเซ‹เชชเซ‹เชฒเซ‹เชœเซ€ เชจเซ€เชšเซ‡เชจเซ€ เช›เชฌเซ€เชจเซ€ เชœเซ‡เชฎ เชฆเซ‡เช–เชพเชถเซ‡.

เชธเซเช•เชพเชฏเชกเชพเช‡เชต เช•เซเชฒเชพเชฏเชจเซเชŸ เชฆเซเชตเชพเชฐเชพ เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ เชธเซเช•เชพเชฏเชกเชพเช‡เชต เชŸเซ‹เชชเซ‹เชฒเซ‹เชœเซ€เชฎเชพเช‚ เชจเซ‹เชก เช‰เชฎเซ‡เชฐเชตเซเช‚

เชนเชตเซ‡ เชฌเซ‡ เชฏเชœเชฎเชพเชจเซ‹/เชเชœเชจเซเชŸ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒเชพ เช›เซ‡ เช…เชจเซ‡ เชคเชฎเซ‡ เช•เชจเซ‡เช•เซเชถเชจเชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชฅเชตเชพ เชฌเซ‡ เชฏเชœเชฎเชพเชจเซ‹ เชตเชšเซเชšเซ‡ เชŸเซ‚เช‚เช•เซ‹ เชฐเชธเซเชคเซ‹ เช•เซ‡เชชเซเชšเชฐ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เชชเซ€เชเชธ เชฒเชฟเช‚เช• เชฎเซ‚เชณ เชชเซ‹เชธเซเชŸ

เช…เชฎเซ‡ เชเชตเชพ เชฒเซ‹เช•เซ‹เชจเซ‡ เชถเซ‹เชงเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช เชœเซ‡เช“ Skydiveเชจเซ€ เช…เชจเซเชฏ เชธเซเชตเชฟเชงเชพเช“ เชตเชฟเชถเซ‡ เชชเซ‹เชธเซเชŸ เชฒเช–เซ€ เชถเช•เซ‡.
เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ เชšเซ‡เชŸ skydive.network เชฆเซเชตเชพเชฐเชพ.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹