Targets

A target is the basic unit of operation in Astu - it represents an object on which an action will be performed.

Targets are usually parsed from URIs, but they also support convenient short forms for common types. Not all target types support short forms; those that do will state so.

Here is an example long form for an IP target:

ip://127.0.0.1

While here is the equivalent short form for the same target:

127.0.0.1

Targets can be dynamically expanded and aggregated into other targets using resolvers. The core Astu workflow revolves around dynamic target discovery using resolvers. Generally, one provides at least one seed target which is iteratively expanded using resolver chains.

Clients are drivers that perform actions on targets.

Target Graph

A target graph is special target-centric data structure representing targets as a directed graph. Resolvers generally support resolving directly into a caller-provided target graph - this is useful for building a topological action plan.

Here's a simple example of the target graph for a DNS target that resolves to multiple different IP targets:

%30dns://something.com1ip://104.21.59.2060->12ip://172.67.183.1680->2

While here's a more complex example where targets have multiple parents. In this example, both the CIDR target 10.0.0.0/31 and the DNS target myrouter.lan point to the IP target 10.0.0.1.

%30cidr://10.0.0.0/311ip://10.0.0.00->12ip://10.0.0.10->23dns://myrouter.lan3->2

Target Types

For each target type, the URI and short forms will be given along with some examples.

IP

Internet Protocol (IP) address.

  • URI form: ip://[user@]<ip>[:port]
    • ip://127.0.0.1
    • ip://root@127.0.0.1:22
    • ip://[::1]
    • ip://root@[::1]:22
  • Short form: <ip>[:port]
    • 127.0.0.1
    • 127.0.0.1:22
    • ::1
    • [::1]:22

TCP

Essentially an alias for IP.

CIDR

Classless Inter-Domain Routing (CIDR) block.

  • URI form: cidr://[user@]<ip>[:port]/<prefix>
    • cidr://127.0.0.0/32
    • cidr://root@127.0.0.0:22/32
    • cidr://[::1]/128
    • cidr://root@[::1]:22/128
  • Short form: <ip>/<prefix>
    • 127.0.0.0/24
    • ::1/128

DNS

Domain Name System (DNS) record.

  • URI form: dns://[user@]<name>[:port]
    • dns://localhost
    • dns://root@localhost:22
  • Short form: n/a

SSH

Secure Shell (SSH) address.

  • URI form: ssh://[user@]<host>[:port]
    • ssh://127.0.0.1
    • ssh://localhost
    • ssh://root@localhost:2222
  • Short form: n/a

File

Local file.

  • URI form: file:[//]<path>
    • file:///absolute/file.txt
    • file://relative/file.txt
    • file:relative/file.txt
  • Short form: <path> (if path exists locally)
    • /absolute/file.txt
    • relative/file.txt

Kubernetes

Kubernetes pod.

  • URI form: k8s:[//][user@][cluster][/namespace]/<name>[#container][?kind]
    • k8s:coredns-ff8999cc5-x56jw
    • k8s:kube-system/coredns#coredns?deployment
    • k8s://user@cluster/kube-system/coredns#coredns?deployment
  • Short form: n/a