เจธเจ•เจพเจˆเจกเจพเจˆเจต เจ•เจฒเจพเจ‡เฉฐเจŸ เจฆเฉเจ†เจฐเจพ เจนเฉฑเจฅเฉ€เจ‚ เจธเจ•เจพเจˆเจกเจพเจˆเจต เจŸเฉ‹เจชเฉ‹เจฒเฉ‹เจœเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจจเฉ‹เจก เจธเจผเจพเจฎเจฒ เจ•เจฐเจจเจพ

เจธเจ•เจพเจˆเจกเจพเจˆเจต เจ‡เฉฑเจ• เจ“เจชเจจ เจธเฉ‹เจฐเจธ, เจฐเฉ€เจ…เจฒ-เจŸเจพเจˆเจฎ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจŸเฉ‹เจชเฉ‹เจฒเฉ‹เจœเฉ€ เจ…เจคเฉ‡ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจเจจเจพเจฒเจพเจˆเจœเจผเจฐ เจนเฉˆเฅค เจ‡เจธเจฆเจพ เจ‰เจฆเฉ‡เจธเจผ เจ‡เจน เจธเจฎเจเจฃ เจฆเจพ เจ‡เฉฑเจ• เจตเจฟเจ†เจชเจ• เจคเจฐเฉ€เจ•เจพ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจเจพ เจนเฉˆ เจ•เจฟ เจ‡เฉฑเจ• เจจเฉˆเจŸเจตเจฐเจ• เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ เจตเจฟเฉฑเจš เจ•เฉ€ เจนเฉ‹ เจฐเจฟเจนเจพ เจนเฉˆเฅค

เจคเฉเจนเจพเจกเฉ€ เจฆเจฟเจฒเจšเจธเจชเฉ€ เจฒเจˆ, เจฎเฉˆเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจ•เจพเจˆเจกเจพเจˆเจต เจฌเจพเจฐเฉ‡ เจ•เฉเจ เจธเจ•เฉเจฐเฉ€เจจเจธเจผเจพเจŸ เจฆเฉ‡เจตเจพเจ‚เจ—เจพเฅค เจนเฉ‡เจ เจพเจ‚ เจธเจ•เจพเจˆเจกเจพเจˆเจต เจฆเฉ€ เจœเจพเจฃ-เจชเจ›เจพเจฃ 'เจคเฉ‡ เจ‡เฉฑเจ• เจชเฉ‹เจธเจŸ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค

เจธเจ•เจพเจˆเจกเจพเจˆเจต เจ•เจฒเจพเจ‡เฉฐเจŸ เจฆเฉเจ†เจฐเจพ เจนเฉฑเจฅเฉ€เจ‚ เจธเจ•เจพเจˆเจกเจพเจˆเจต เจŸเฉ‹เจชเฉ‹เจฒเฉ‹เจœเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจจเฉ‹เจก เจธเจผเจพเจฎเจฒ เจ•เจฐเจจเจพ

เจธเจ•เจพเจˆเจกเจพเจˆเจต เจ•เจฒเจพเจ‡เฉฐเจŸ เจฆเฉเจ†เจฐเจพ เจนเฉฑเจฅเฉ€เจ‚ เจธเจ•เจพเจˆเจกเจพเจˆเจต เจŸเฉ‹เจชเฉ‹เจฒเฉ‹เจœเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจจเฉ‹เจก เจธเจผเจพเจฎเจฒ เจ•เจฐเจจเจพ

เจชเฉ‹เจธเจŸ"skydive.network เจจเจพเจฒ เจœเจพเจฃ-เจชเจ›เจพเจฃยป Habrรฉ 'เจคเฉ‡เฅค

เจธเจ•เจพเจˆเจกเจพเจˆเจต เจธเจ•เจพเจˆเจกเจพเจˆเจต เจเจœเฉฐเจŸเจพเจ‚ เจคเฉ‹เจ‚ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจ‡เจตเฉˆเจ‚เจŸเจธ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจ•เฉ‡ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจŸเฉ‹เจชเฉ‹เจฒเฉ‹เจœเฉ€ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ•เฉ€ เจคเฉเจธเฉ€เจ‚ เจ•เจฆเฉ‡ เจธเฉ‹เจšเจฟเจ† เจนเฉˆ เจ•เจฟ เจŸเฉ‹เจชเฉ‹เจฒเฉ‹เจœเฉ€ เจกเจพเจ‡เจ—เฉเจฐเจพเจฎ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸเจธ เจตเจฟเฉฑเจš เจ•เจฟเจตเฉ‡เจ‚ เจœเฉ‹เฉœเจจเจพ เจœเจพเจ‚ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจจเจพ เจนเฉˆ เจœเฉ‹ เจธเจ•เจพเจˆเจกเจพเจˆเจต เจเจœเฉฐเจŸ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจœเจพเจ‚ เจ—เฉˆเจฐ-เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจ†เจฌเจœเฉˆเจ•เจŸ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ TOR, เจกเจพเจŸเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœ, เจ†เจฆเจฟ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจนเจจเฅค เจ‡เจธ เจฌเจพเจฐเฉ‡ เจšเจฟเฉฐเจคเจพ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจˆ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ เจจเฉ‹เจก เจจเจฟเจฏเจฎ API เจฆเจพ เจงเฉฐเจจเจตเจพเจฆเฅค

เจธเฉฐเจธเจ•เจฐเจฃ 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 เจเจธเฉ‹เจธเฉ€เจเจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจฌเจฃเจพเจˆเจ†เจ‚ เจ—เจˆเจ†เจ‚ เจนเจจเฅค เจนเฉเจฃ เจซเจพเจˆเจจเจฒ เจŸเฉŒเจชเฉŒเจฒเฉ‹เจœเฉ€ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€ เจคเจธเจตเฉ€เจฐ เจตเจพเจ‚เจ— เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡เจตเฉ‡เจ—เฉ€เฅค

เจธเจ•เจพเจˆเจกเจพเจˆเจต เจ•เจฒเจพเจ‡เฉฐเจŸ เจฆเฉเจ†เจฐเจพ เจนเฉฑเจฅเฉ€เจ‚ เจธเจ•เจพเจˆเจกเจพเจˆเจต เจŸเฉ‹เจชเฉ‹เจฒเฉ‹เจœเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจจเฉ‹เจก เจธเจผเจพเจฎเจฒ เจ•เจฐเจจเจพ

เจนเฉเจฃ เจฆเฉ‹ เจฎเฉ‡เจœเจผเจฌเจพเจจ/เจเจœเฉฐเจŸ เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจœเฉเฉœเฉ‡ เจนเฉ‹เจ เจนเจจ เจ…เจคเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ•เฉเจจเฉˆเจ•เจธเจผเจจ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเจพเจ‚ เจฆเฉ‹ เจฎเฉ‡เจœเจผเจฌเจพเจจเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจธเจญ เจคเฉ‹เจ‚ เจ›เฉ‹เจŸเจพ เจฎเจพเจฐเจ— เจ•เฉˆเจชเจšเจฐ เจฌเจฃเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

PS เจฒเจฟเฉฐเจ• เจ…เจธเจฒเฉ€ เจชเฉ‹เจธเจŸ

เจ…เจธเฉ€เจ‚ เจ‰เจนเจจเจพเจ‚ เจฒเฉ‹เจ•เจพเจ‚ เจฆเฉ€ เจญเจพเจฒ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚ เจœเฉ‹ เจธเจ•เจพเจˆเจกเจพเจˆเจต เจฆเฉ€เจ†เจ‚ เจนเฉ‹เจฐ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจฌเจพเจฐเฉ‡ เจชเฉ‹เจธเจŸเจพเจ‚ เจฒเจฟเจ– เจธเจ•เจฆเฉ‡ เจนเจจเฅค
เจŸเฉˆเจฒเฉ€เจ—เฉเจฐเจพเจฎ เจšเฉˆเจŸ skydive.network เจฐเจพเจนเฉ€เจ‚เฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹