declastruct-unix-network
v1.0.3
Published
declarative control of unix network constructs via declastruct
Maintainers
Readme
declastruct-unix-network
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-networkuse 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.jsonapply 🪄
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.jsonresources
DeclaredUnixHostAlias- manages/etc/hostsentriesDeclaredUnixPortAlias- manages systemd-socat port aliases
requirements
- sudo access (for modifying
/etc/hostsand systemd services) - linux with systemd (for port aliases)
- socat installed (for port aliases)
