Skip to content

ehmpathy/declastruct-unix-network

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

declastruct-unix-network

test publish

Declarative control of Unix Network resources, via declastruct.

Declare the resources you want. Plan to see the changes required. Apply to make it so 🪄

install

npm install -s declastruct-unix-network

use via cli

example

wish ✨

declare the resources you wish to have - and what state you wish them to be in

import {
  getDeclastructUnixNetworkProvider,
  DeclaredUnixHostAlias,
  DeclaredUnixPortAlias,
  UnixPortEndpoint,
} from 'declastruct-unix-network';

export const getProviders = async (): Promise<DeclastructProvider[]> => [
  getDeclastructUnixNetworkProvider(
    {},
    {
      log: console,
    },
  ),
];

export const getResources = async (): Promise<DomainEntity<any>[]> => {
  // add host aliases
  const hostAliasPrep = DeclaredUnixHostAlias.as({
    via: '/etc/hosts',
    from: 'aws.ssmproxy.yourdb.prep',
    into: '127.0.0.1',
  });
  const hostAliasProd = DeclaredUnixHostAlias.as({
    via: '/etc/hosts',
    from: 'aws.ssmproxy.yourdb.prod',
    into: '127.0.0.1',
  });

  // add port aliases
  const portAliasPrep = DeclaredUnixPortAlias.as({
    via: 'systemd-socat',
    from: UnixPortEndpoint.as({ host: '127.0.0.1', port: 5432 }),
    into: UnixPortEndpoint.as({ host: '127.0.0.1', port: 15432 }),
  });
  const portAliasProd = DeclaredUnixPortAlias.as({
    via: 'systemd-socat',
    from: UnixPortEndpoint.as({ host: '127.0.0.1', port: 5433 }), // non standard port, to prevent accidental access
    into: UnixPortEndpoint.as({ host: '127.0.0.1', port: 15433 }),
  });

  // and return the full set
  return [hostAliasPrep, hostAliasProd, portAliasPrep, portAliasProd];
};

plan 🔮

plan how to achieve the wish of resources you've declared

this will emit a plan that declares the changes required in order to fulfill the wish

npx declastruct plan --wish provision/network/resources.ts --output provision/network/.temp/plan.json

apply 🪄

apply the plan to fulfill the wish

this will apply only the changes declared in the plan - and only if this plan is still applicable

npx declastruct apply --plan provision/network/.temp/plan.json

resources

  • DeclaredUnixHostAlias - manages /etc/hosts entries
  • DeclaredUnixPortAlias - manages systemd-socat port aliases

requirements

  • sudo access (for modifying /etc/hosts and systemd services)
  • linux with systemd (for port aliases)
  • socat installed (for port aliases)

About

declarative control of unix network constructs via declastruct

Resources

License

MIT, MIT licenses found

Licenses found

MIT
LICENSE
MIT
license.md

Stars

Watchers

Forks

Packages

No packages published