Enasis Network Orchestrations#

Documentation Welcome#

Welcome to the project documentation. Below you will find the most common functions and classes within the library, but you may click your way further into the project from there. You can also view the source code.

Orche#

class orchestro.orche.Orche(config: OrcheConfig)[source]#

Bases: object

Interact with chat networks and integrate using plugins.

Parameters:

config – Primary class instance for configuration.

property config: OrcheConfig#

Return the Config instance containing the configuration.

Returns:

Config instance containing the configuration.

property logger: OrcheLogger#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property jinja2: OrcheJinja2#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property childs: OrcheChilds#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property params: OrcheParams#

Return the Pydantic model containing the configuration.

Returns:

Pydantic model containing the configuration.

property console: bool#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property debug: bool#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property dryrun: bool#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property kvparsed: dict[str, Any]#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property kvopaque: dict[str, Any]#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property dumped: dict[str, Any]#

Return the facts about the attributes from the instance.

Returns:

Facts about the attributes from the instance.

j2parse(value: Any, statics: dict[str, Any] | None = None, literal: bool = True) Any[source]#

Return the provided input using the Jinja2 environment.

Parameters:
  • value – Input that will be processed and returned.

  • statics – Additional values available for parsing.

  • literal – Determine if Python objects are evaled.

Returns:

Provided input using the Jinja2 environment.

class orchestro.orche.OrcheConfig(sargs: dict[str, Any] | None = None, files: str | Path | list[str | Path] | list[str] | list[Path] | tuple[str | Path, ...] | set[str] | None = None, paths: str | Path | list[str | Path] | list[str] | list[Path] | tuple[str | Path, ...] | set[str] | None = None, cargs: dict[str, Any] | None = None)[source]#

Bases: Config

Contain the configurations from the arguments and files.

Parameters:
  • sargs – Additional arguments on the command line.

  • files – Complete or relative path to config files.

  • paths – Complete or relative path to config paths.

  • cargs – Configuration arguments in dictionary form, which will override contents from the config files.

property params: OrcheParams#

Return the Pydantic model containing the configuration.

Warning

This method completely overrides the parent but is based on that code, would be unfortunate if upstream changes meant this breaks or breaks something else.

Returns:

Pydantic model containing the configuration.

merge_params() None[source]#

Update the Pydantic model containing the configuration.

Note

Inheritance routine has inspired other projects.

Orche Parameters#

class orchestro.orche.params.OrcheParams[source]#

Bases: Params

Process and validate the core configuration parameters.

Fields#

Field

Type

Required

Default

Constraints

console

bool

No

False

database

str

No

'sqlite:///:memory:'

min_length=1

debug

bool

No

False

dryrun

bool

No

False

enconfig

ConfigParams | None

No

None

encrypts

CryptsParams | None

No

None

enlogger

LoggerParams | None

No

None

groups

dict[str, OrcheGroupParams] | None

No

None

min_length=1

kvopaque

dict[str, Any]

No

factory

min_length=0

kvparsed

dict[str, Any]

No

factory

min_length=0

persons

dict[str, OrchePersonParams] | None

No

None

min_length=1

subnets

dict[str, OrcheSubnetParams] | None

No

None

min_length=1

systems

dict[str, OrcheSystemParams] | None

No

None

min_length=1

database: Annotated[str, FieldInfo(annotation=NoneType, required=False, default='sqlite:///:memory:', description='Database connection string', metadata=[MinLen(min_length=1)])]#
console: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Output console information; parameter is parsed by and used in low-level config')]#
debug: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Enable logging level debug; parameter is parsed by and used in low-level config')]#
dryrun: Annotated[bool, FieldInfo(annotation=NoneType, required=False, default=False, description='Whether to allow changes')]#
systems: Annotated[dict[str, OrcheSystemParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for Orche systems', metadata=[MinLen(min_length=1)])]#
persons: Annotated[dict[str, OrchePersonParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for Orche persons', metadata=[MinLen(min_length=1)])]#
subnets: Annotated[dict[str, OrcheSubnetParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for Orche subnets', metadata=[MinLen(min_length=1)])]#
groups: Annotated[dict[str, OrcheGroupParams] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Parameters for Orche groups', metadata=[MinLen(min_length=1)])]#
kvparsed: Annotated[dict[str, Any], FieldInfo(annotation=NoneType, required=False, default_factory=dict, description='Additional metadata for child which is parsed after childs are instantiated and before Ansible consumes inventory', metadata=[MinLen(min_length=0)])]#
kvopaque: Annotated[dict[str, Any], FieldInfo(annotation=NoneType, required=False, default_factory=dict, description='Additional metadata for child which is parsed after childs are instantiated and when Ansible consumes inventory', metadata=[MinLen(min_length=0)])]#
class orchestro.orche.params.OrcheGroupParams[source]#

Bases: OrcheChildParams

Process and validate the Orche configuration parameters.

Fields#

Field

Type

Required

Default

Constraints

about

str | None

No

None

min_length=1

ansible

OrcheGroupAnsibleParams | None

No

None

display

str | None

No

None

min_length=1

enable

bool

No

False

inherits

list[str] | None

No

None

min_length=1

kvopaque

dict[str, Any]

No

factory

min_length=0

kvparsed

dict[str, Any]

No

factory

min_length=0

memberof

list[str] | None

No

None

min_length=1

realm

Literal[‘domain’, ‘local’, ‘site’, ‘zone’, ‘ansible’, ‘psuedo’]

No

'ansible'

realm: Annotated[Literal['domain', 'local', 'site', 'zone', 'ansible', 'psuedo'], FieldInfo(annotation=NoneType, required=False, default='ansible', description='Logical realm for the object')]#
ansible: Annotated[OrcheGroupAnsibleParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Variables provided to Ansible')]#
class orchestro.orche.params.OrchePersonParams[source]#

Bases: OrcheChildParams

Process and validate the Orche configuration parameters.

Fields#

Field

Type

Required

Default

Constraints

about

str | None

No

None

min_length=1

display

str | None

No

None

min_length=1

domain

str | None

No

None

min_length=1

enable

bool

No

False

first

str | None

No

None

min_length=1

inherits

list[str] | None

No

None

min_length=1

kvopaque

dict[str, Any]

No

factory

min_length=0

kvparsed

dict[str, Any]

No

factory

min_length=0

last

str | None

No

None

min_length=1

memberof

list[str] | None

No

None

min_length=1

realm

Literal[‘domain’, ‘local’, ‘psuedo’]

No

'psuedo'

realm: Annotated[Literal['domain', 'local', 'psuedo'], FieldInfo(annotation=NoneType, required=False, default='psuedo', description='Logical realm for the object')]#
domain: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Domain to which child belongs', metadata=[MinLen(min_length=1)])]#
first: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='First name for person account', metadata=[MinLen(min_length=1)])]#
last: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Last name for person account', metadata=[MinLen(min_length=1)])]#
class orchestro.orche.params.OrcheSubnetParams[source]#

Bases: OrcheChildParams

Process and validate the Orche configuration parameters.

Fields#

Field

Type

Required

Default

Constraints

about

str | None

No

None

min_length=1

display

str | None

No

None

min_length=1

enable

bool

No

False

gateway

str | None

No

None

min_length=1

inherits

list[str] | None

No

None

min_length=1

kvopaque

dict[str, Any]

No

factory

min_length=0

kvparsed

dict[str, Any]

No

factory

min_length=0

macpref

str | None

No

None

min_length=2, max_length=2, pattern=``^[da-fA-F]+$``

memberof

list[str] | None

No

None

min_length=1

ntpsync

list[str] | None

No

None

min_length=1

resolve

list[str] | None

No

None

min_length=1

subnet

str

Yes

min_length=1

subnet: Annotated[str, FieldInfo(annotation=NoneType, required=True, description='IPv4 or IPv6 network subnet', metadata=[MinLen(min_length=1)])]#
macpref: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Optional prefix for MAC address', metadata=[MinLen(min_length=2), MaxLen(max_length=2), _PydanticGeneralMetadata(pattern='^[\\da-fA-F]+$')])]#
gateway: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Optional gateway for the subnet', metadata=[MinLen(min_length=1)])]#
resolve: Annotated[list[str] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Optional resolvers for subnet', metadata=[MinLen(min_length=1)])]#
ntpsync: Annotated[list[str] | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Optional NTP server for subnet', metadata=[MinLen(min_length=1)])]#
class orchestro.orche.params.OrcheSystemParams[source]#

Bases: OrcheChildParams

Process and validate the Orche configuration parameters.

Fields#

Field

Type

Required

Default

Constraints

about

str | None

No

None

min_length=1

ansible

OrcheSystemAnsibleParams | None

No

None

display

str | None

No

None

min_length=1

domain

str | None

No

None

min_length=1

enable

bool

No

False

inherits

list[str] | None

No

None

min_length=1

kvopaque

dict[str, Any]

No

factory

min_length=0

kvparsed

dict[str, Any]

No

factory

min_length=0

memberof

list[str] | None

No

None

min_length=1

realm

Literal[‘ansible’, ‘psuedo’]

No

'ansible'

realm: Annotated[Literal['ansible', 'psuedo'], FieldInfo(annotation=NoneType, required=False, default='ansible', description='Logical realm for the object')]#
domain: Annotated[str | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Domain to which child belongs', metadata=[MinLen(min_length=1)])]#
ansible: Annotated[OrcheSystemAnsibleParams | None, FieldInfo(annotation=NoneType, required=False, default=None, description='Variables provided to Ansible')]#

Orche Children#

class orchestro.orche.childs.OrcheChild(orche: Orche, name: str, params: OrcheChildParams)[source]#

Bases: object

Parent object for child objects within the project base.

Parameters:
  • orche – Primary class instance for Orchestrations.

  • name – Name of the object within the Orche config.

  • params – Parameters used to instantiate the class.

validate() None[source]#

Perform advanced validation on the parameters provided.

Note

Works differently than other projects because these children all have one common attribute between them.

property orche: Orche#

Return the Orche instance to which the instance belongs.

Returns:

Orche instance to which the instance belongs.

property enable: bool#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property name: str#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property kind: OrcheKinds#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property params: OrcheChildParams#

Return the Pydantic model containing the configuration.

Returns:

Pydantic model containing the configuration.

property inherits: list[str] | None#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property display: str#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property about: str | None#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property memberof: list[str] | None#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property kvparsed: dict[str, Any]#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property kvopaque: dict[str, Any]#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property groups: list[OrcheGroup]#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property dumped: dict[str, Any]#

Return the facts about the attributes from the instance.

Returns:

Facts about the attributes from the instance.

property ansibout: dict[str, Any]#

Return the facts about the attributes from the instance.

Returns:

Facts about the attributes from the instance.

class orchestro.orche.childs.OrcheChilds(orche: Orche)[source]#

Bases: object

Contain the object instances for related Orche children.

Parameters:

orche – Primary class instance for Orchestrations.

build_objects() None[source]#

Construct instances using the configuration parameters.

validate() None[source]#

Perform advanced validation on the parameters provided.

property systems: dict[str, OrcheSystem]#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property persons: dict[str, OrchePerson]#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property subnets: dict[str, OrcheSubnet]#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property groups: dict[str, OrcheGroup]#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property dumped: dict[str, Any]#

Return the facts about the attributes from the instance.

Returns:

Facts about the attributes from the instance.

class orchestro.orche.childs.OrcheSystem(orche: Orche, name: str, params: OrcheChildParams)[source]#

Bases: OrcheChild

Integrate with the Orche routine and perform operations.

validate() None[source]#

Perform advanced validation on the parameters provided.

Note

Works differently than other projects because these children all have one common attribute between them.

property kind: Literal['system']#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property params: OrcheSystemParams#

Return the Pydantic model containing the configuration.

Returns:

Pydantic model containing the configuration.

property realm: str | None#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property domain: str | None#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property fqdn: str#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property ansible: dict[str, Any] | None#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property dumped: dict[str, Any]#

Return the facts about the attributes from the instance.

Returns:

Facts about the attributes from the instance.

class orchestro.orche.childs.OrchePerson(orche: Orche, name: str, params: OrcheChildParams)[source]#

Bases: OrcheChild

Contain the properties regarding the actual user person.

validate() None[source]#

Perform advanced validation on the parameters provided.

Note

Works differently than other projects because these children all have one common attribute between them.

property kind: Literal['person']#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property params: OrchePersonParams#

Return the Pydantic model containing the configuration.

Returns:

Pydantic model containing the configuration.

property realm: str | None#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property domain: str | None#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property fqdn: str#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property display: str#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property dumped: dict[str, Any]#

Return the facts about the attributes from the instance.

Returns:

Facts about the attributes from the instance.

class orchestro.orche.childs.OrcheSubnet(orche: Orche, name: str, params: OrcheChildParams)[source]#

Bases: OrcheChild

Integrate with the Orche routine and perform operations.

validate() None[source]#

Perform advanced validation on the parameters provided.

Note

Works differently than other projects because these children all have one common attribute between them.

property kind: Literal['subnet']#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property params: OrcheSubnetParams#

Return the Pydantic model containing the configuration.

Returns:

Pydantic model containing the configuration.

property subnet: str#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property dumped: dict[str, Any]#

Return the facts about the attributes from the instance.

Returns:

Facts about the attributes from the instance.

address(address: str) OrcheSubnetAddress[source]#

Return the facts about the attributes from the instance.

Returns:

Facts about the attributes from the instance.

class orchestro.orche.childs.OrcheGroup(orche: Orche, name: str, params: OrcheChildParams)[source]#

Bases: OrcheChild

Integrate with the Orche routine and perform operations.

validate() None[source]#

Perform advanced validation on the parameters provided.

Note

Works differently than other projects because these children all have one common attribute between them.

property kind: Literal['group']#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property params: OrcheGroupParams#

Return the Pydantic model containing the configuration.

Returns:

Pydantic model containing the configuration.

property members: list[OrcheChild]#

Return the members that have declared group membership.

Returns:

Members that have declared group membership.

property realm: str | None#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property ansible: dict[str, Any] | None#

Return the value for the attribute from class instance.

Returns:

Value for the attribute from class instance.

property dumped: dict[str, Any]#

Return the facts about the attributes from the instance.

Returns:

Facts about the attributes from the instance.

Orche Add-ons#

class orchestro.orche.addons.OrcheJinja2(orche: Orche)[source]#

Bases: Jinja2

Parse the provided input and intelligently return value.

Parameters:

orche – Primary class instance for Orchestrations.

class orchestro.orche.addons.OrcheLogger(orche: Orche)[source]#

Bases: object

Methods for extending use of underlying logging library.

Parameters:

orche – Primary class instance for Orchestrations.

start() None[source]#

Initialize the Python logging library using parameters.

stop() None[source]#

Deinitialize the Python logging library using parameters.

log(**kwargs: Any) None[source]#

Pass the provided keyword arguments into logger object.

Note

Uses method encommon.config.Logger.log().

Parameters:

kwargs – Keyword arguments for populating message.

log_c(**kwargs: Any) None[source]#

Pass the provided keyword arguments into logger object.

Note

Uses method encommon.config.Logger.log_c().

Parameters:

kwargs – Keyword arguments for populating message.

log_d(**kwargs: Any) None[source]#

Pass the provided keyword arguments into logger object.

Note

Uses method encommon.config.Logger.log_d().

Parameters:

kwargs – Keyword arguments for populating message.

log_e(**kwargs: Any) None[source]#

Pass the provided keyword arguments into logger object.

Note

Uses method encommon.config.Logger.log_e().

Parameters:

kwargs – Keyword arguments for populating message.

log_i(**kwargs: Any) None[source]#

Pass the provided keyword arguments into logger object.

Note

Uses method encommon.config.Logger.log_i().

Parameters:

kwargs – Keyword arguments for populating message.

log_w(**kwargs: Any) None[source]#

Pass the provided keyword arguments into logger object.

Note

Uses method encommon.config.Logger.log_w().

Parameters:

kwargs – Keyword arguments for populating message.

Orche Examples#

groups/default.yml#
---



groups:


  #######################
  ## Default Inventory ##
  #######################
  default:
    enable: false
    display: Default Inventory

Groups#

groups/roles/enhomie.yml#
---



groups:


  #####################
  ## Homie Inventory ##
  #####################
  enasisnetwork_enhomie:
    enable: true
    memberof: default
    display: Homie Automate


    #######################
    ## Ansible Variables ##
    #######################
    ansible:


      ####################
      ## Homie Automate ##
      ####################
      enhomie_unique: default
      #enhomie_directory
      enhomie_repository: >-
        https://github.com/enasisnetwork/enhomie-conf
      enhomie_logging: true
      enhomie_console: false
groups/roles/enrobie.yml#
---



groups:


  #####################
  ## Robie Inventory ##
  #####################
  enasisnetwork_enrobie:
    enable: true
    memberof: default
    display: Chatting Robie


    #######################
    ## Ansible Variables ##
    #######################
    ansible:


      ####################
      ## Chatting Robie ##
      ####################
      enrobie_unique: default
      #enrobie_directory
      enrobie_repository: >-
        https://github.com/enasisnetwork/enrobie-conf
      enrobie_logging: true
      enrobie_console: false
groups/roles/sslca.yml#
---



groups:


  #####################
  ## SSLCA Inventory ##
  #####################
  enasisnetwork_sslca:
    enable: true
    display: Certificate Authority


    #######################
    ## Ansible Variables ##
    #######################
    ansible:


      ###########################
      ## Certificate Authority ##
      ###########################
      sslca_defaults:
        company: Enasis Network Development
        department: Certificate Authority
        country: US
        website: http://pki.enasis.net
      sslca_persist:
        rootkeys: /path/to/rootkeys
        rootfiles: /path/to/rootfiles
        certkeys: /path/to/certkeys
        certfiles: /path/to/certfiles
      sslca_authority:
        genesis:
          password: thisisanexample
          expire: '+10y'
        system:
          password: thisisanexample
          expire: '+10y'
          parent: genesis
        person:
          password: thisisanexample
          expire: '+10y'
          parent: genesis
groups/saturn.yml#
---



groups:


  ######################
  ## Saturn Inventory ##
  ######################
  saturn:
    enable: true
    memberof: default
    display: Saturn Inventory
groups/systems/almalinux.yml#
---



groups:


  #######################
  ## AlmaLinux Systems ##
  #######################
  systems_almalinux:
    enable: true
    memberof: systems
    display: AlmaLinux
groups/systems/fedora.yml#
---



groups:


  ####################
  ## Fedora Systems ##
  ####################
  systems_fedora:
    enable: true
    memberof: systems
    display: Fedora
groups/systems/openbsd.yml#
---



groups:


  #####################
  ## OpenBSD Systems ##
  #####################
  systems_openbsd:
    enable: true
    memberof: systems
    display: OpenBSD
groups/systems/windows.yml#
---



groups:


  #####################
  ## Windows Systems ##
  #####################
  systems_windows:
    enable: true
    memberof: systems
    display: Windows
groups/systems.yml#
---



groups:


  #####################
  ## Managed Systems ##
  #####################
  systems:
    enable: true
    display: Managed Systems
    memberof: enasisnetwork_sslca
groups/uranus.yml#
---



groups:


  ######################
  ## Uranus Inventory ##
  ######################
  uranus:
    enable: true
    memberof: default
    display: Uranus Inventory

Systems#

systems/aegaeon.yml#
---



systems:


  ########################
  ## Robert Workstation ##
  ########################
  aegaeon:
    enable: true
    inherits: template_fedora
    memberof: saturn
    display: Robert Workstation

    kvparsed:
      network_domesnet: >-
        {{- orche.childs.subnets
            .saturn_domesnet
            .address("172.18.51.40")
            .dumped -}}
systems/engwf1t.yml#
---



systems:


  ######################
  ## Gateway Firewall ##
  ######################
  engwf1x1t:
    enable: true
    inherits: template_openbsd
    memberof: saturn
    display: Saturn Gateway Primary

    kvparsed:
      network_internal: >-
        {{- orche.childs.subnets
            .saturn_internal
            .address("172.18.11.2")
            .dumped -}}
      network_domesnet: >-
        {{- orche.childs.subnets
            .saturn_domesnet
            .address("172.18.51.2")
            .dumped -}}


  ######################
  ## Gateway Firewall ##
  ######################
  engwf1x2t:
    enable: true
    inherits: template_openbsd
    memberof: saturn
    display: Saturn Gateway Secondary

    kvparsed:
      network_internal: >-
        {{- orche.childs.subnets
            .saturn_internal
            .address("172.18.11.3")
            .dumped -}}
      network_domesnet: >-
        {{- orche.childs.subnets
            .saturn_domesnet
            .address("172.18.51.3")
            .dumped -}}
systems/engwf2t.yml#
---



systems:


  ######################
  ## Gateway Firewall ##
  ######################
  engwf2x1t:
    enable: true
    inherits: template_openbsd
    memberof: uranus
    display: Uranus Gateway Primary

    kvparsed:
      network_internal: >-
        {{- orche.childs.subnets
            .uranus_internal
            .address("172.18.12.2")
            .dumped -}}
      network_domesnet: >-
        {{- orche.childs.subnets
            .uranus_domesnet
            .address("172.18.52.2")
            .dumped -}}


  ######################
  ## Gateway Firewall ##
  ######################
  engwf2x2t:
    enable: true
    inherits: template_openbsd
    memberof: uranus
    display: Uranus Gateway Secondary

    kvparsed:
      network_internal: >-
        {{- orche.childs.subnets
            .uranus_internal
            .address("172.18.12.3")
            .dumped -}}
      network_domesnet: >-
        {{- orche.childs.subnets
            .uranus_domesnet
            .address("172.18.52.3")
            .dumped -}}
systems/ensrv1t.yml#
---



systems:


  ###################
  ## Saturn Server ##
  ###################
  ensrv1t:
    enable: true
    inherits: template_almalinux
    memberof:
      - saturn
      - enasisnetwork_enhomie
    display: Saturn Server

    kvparsed:
      network_internal: >-
        {{- orche.childs.subnets
            .saturn_internal
            .address("172.18.11.31")
            .dumped -}}


    #######################
    ## Ansible Variables ##
    #######################
    ansible:


      ####################
      ## Homie Automate ##
      ####################
      enhomie_directory: /opt/enhomie
systems/ensrv2t.yml#
---



systems:


  ###################
  ## Uranus Server ##
  ###################
  ensrv2t:
    enable: true
    inherits: template_almalinux
    memberof:
      - uranus
      - enasisnetwork_enrobie
    display: Uranus Server

    kvparsed:
      network_internal: >-
        {{- orche.childs.subnets
            .uranus_internal
            .address("172.18.12.31")
            .dumped -}}


    #######################
    ## Ansible Variables ##
    #######################
    ansible:


      ####################
      ## Chatting Robie ##
      ####################
      enrobie_directory: /opt/enrobie
systems/meropis.yml#
---



systems:


  ########################
  ## Robert Workstation ##
  ########################
  meropis:
    enable: true
    inherits: template_windows
    memberof: saturn
    display: Robert Workstation

    kvparsed:
      network_domesnet: >-
        {{- orche.childs.subnets
            .saturn_domesnet
            .address("172.18.51.41")
            .dumped -}}
systems/species/almalinux.yml#
---



systems:


  ########################
  ## AlmaLinux Template ##
  ########################
  template_almalinux:
    enable: false
    inherits: template_default
    memberof: systems_almalinux
    display: AlmaLinux Template
systems/species/default.yml#
---



systems:


  ######################
  ## Default Template ##
  ######################
  template_default:
    enable: false
    domain: enasis.net
    display: Default Template


    #######################
    ## Ansible Variables ##
    #######################
    ansible:
      ansible_host: '{{ inventory_hostname }}'
      ansible_user: root


      ###########################
      ## Certificate Authority ##
      ###########################
      sslca_certificate:
        system:
          name: '{{ inventory_hostname }}'
          kind: server
          common: '{{ orche_system.fqdn }}'
          parent: system
systems/species/fedora.yml#
---



systems:


  #####################
  ## Fedora Template ##
  #####################
  template_fedora:
    enable: false
    inherits: template_default
    memberof: systems_fedora
    display: Fedora Template
systems/species/openbsd.yml#
---



systems:


  ######################
  ## OpenBSD Template ##
  ######################
  template_openbsd:
    enable: false
    inherits: template_default
    memberof: systems_openbsd
    display: OpenBSD Template
systems/species/windows.yml#
---



systems:


  ######################
  ## Windows Template ##
  ######################
  template_windows:
    enable: false
    inherits: template_default
    memberof: systems_windows
    display: Windows Template

Persons#

persons/robert.yml#
---



persons:


  ###################
  ## Robert Domain ##
  ###################
  robert_domain:
    enable: true
    realm: domain
    domain: enasis.net
    first: Robert
    last: Harris


  ##################
  ## Robert Local ##
  ##################
  robert_local:
    enable: true
    realm: local
    domain: local
    first: '{{ source.persons.robert_domain.first }}'
    last: '{{ source.persons.robert_domain.last }}'
subnets/saturn.yml#
---



subnets:


  #####################
  ## Saturn Internal ##
  #####################
  saturn_internal:
    enable: true
    subnet: 172.18.11.0/24
    memberof: saturn
    display: Saturn Internal
    macpref: '0e'
    gateway: 172.18.11.1
    resolve: 172.18.11.1
    ntpsync: 172.18.11.1


  #####################
  ## Saturn Domesnet ##
  #####################
  saturn_domesnet:
    enable: true
    subnet: 172.18.51.0/24
    memberof: saturn
    display: Saturn Domesnet
    macpref: '0e'
    gateway: 172.18.51.1
    resolve: 172.18.51.1
    ntpsync: 172.18.51.1


  #####################
  ## Saturn External ##
  #####################
  saturn_external:
    enable: true
    subnet: 172.18.91.0/24
    memberof: saturn
    display: Saturn External
    macpref: '0e'
    gateway: 172.18.91.1
    resolve: 172.18.91.1
    ntpsync: 172.18.91.1
subnets/uranus.yml#
---



subnets:


  #####################
  ## Uranus Internal ##
  #####################
  uranus_internal:
    enable: true
    subnet: 172.18.12.0/24
    memberof: uranus
    display: Uranus Internal
    macpref: '0e'
    gateway: 172.18.12.1
    resolve: 172.18.12.1
    ntpsync: 172.18.12.1


  #####################
  ## Uranus Domesnet ##
  #####################
  uranus_domesnet:
    enable: true
    subnet: 172.18.52.0/24
    memberof: uranus
    display: Uranus Domesnet
    macpref: '0e'
    gateway: 172.18.52.1
    resolve: 172.18.52.1
    ntpsync: 172.18.52.1


  #####################
  ## Uranus External ##
  #####################
  uranus_external:
    enable: true
    subnet: 172.18.92.0/24
    memberof: uranus
    display: Uranus External
    macpref: '0e'
    gateway: 172.18.92.1
    resolve: 172.18.92.1
    ntpsync: 172.18.92.1