13 Commits

Author SHA1 Message Date
andonome 98a2a30961 add graph-easy dependency 2025-03-25 22:04:21 +01:00
andonome 6fc42cc949 note recutils package required 2025-03-25 21:46:47 +01:00
andonome 991f4bed90 add record info to network.rec 2025-03-25 21:13:01 +01:00
andonome 9051d524f6 embiggen recutils examples 2025-03-25 21:03:40 +01:00
andonome 703d0d01e8 create check target 2025-03-22 14:23:44 +01:00
andonome 53b4d0e041 autogenerate map from network info 2025-03-22 14:06:24 +01:00
andonome fe14e0aacc give example of inserting record 2025-03-21 02:11:49 +01:00
andonome ed9ef924d3 note recutils example command 2025-03-21 01:51:31 +01:00
andonome e0be97277a fix container and host names 2025-03-20 23:38:11 +01:00
andonome 13253824c6 rework routers 2025-03-20 22:35:49 +01:00
andonome 26ffee17be names and places 2025-03-20 22:29:28 +01:00
andonome f60153aca6 expand network db 2025-03-20 22:20:14 +01:00
andonome 7d66d5c55e basic network db 2025-03-20 22:05:41 +01:00
4 changed files with 168 additions and 45 deletions
+30 -6
View File
@@ -5,13 +5,36 @@ help: ## Print the help message
sort | \ sort | \
column -s ':' -t column -s ':' -t
map.txt: map.ge ## Making map.txt .PHONY: check
grep -v '# unimportant' $< | graph-easy --boxart > $@ check: ## Check you have all dependencies
cat $@ @command -v graph-easy >/dev/null || { echo "Install perl-graph-easy" && exit 1 ;}
@command -v recsel >/dev/null || { echo "Install recutils" && exit 1 ;}
@command -v lowdown >/dev/null || { echo "Install lowdown" && exit 1 ;}
@echo "All dependencies installed"
full_map.txt: map.ge ## Generating full_map.txt with graph-easy ########## Network Map ##########
graph-easy --boxart < $< > $@
cat $@ graph_cmd = graph-easy --boxart
queries = queries authqueries
query_formats = $(patsubst %, .dbs/%.txt, $(queries))
.dbs/:
mkdir $@
$(query_formats): .dbs/%.txt: | .dbs/
echo "[ {{name}} ] -- $(basename $(@F)) --> [ {{$(basename $(@F))}} ]" > $@
.PHONY: map
map: .dbs/network.txt ## Show a network map
$(graph_cmd) < $<
.dbs/network.txt: network.rec $(query_formats)
$(RM) .dbs/network.txt
$(foreach relation, $(queries), \
recsel $< -t lxc -e "$(relation) != ''" -p name,$(relation) | recfmt -f .dbs/$(relation).txt >> $@ ;\
)
########## Man Pages ########## ########## Man Pages ##########
@@ -56,3 +79,4 @@ pages: $(kralmans) $(krovmans) $(setupmans) $(splintmans)
clean: clean:
$(RM) $(kralmans) $(krovmans) $(RM) $(kralmans) $(krovmans)
$(RM) -r .dbs
+50
View File
@@ -2,6 +2,11 @@ These setup files provide the text-only configurations for DMZ.
*It should not contain private data.* *It should not contain private data.*
# Dependencies
- `recutils`
- (optional) `graph-easy` (the package may be called `perl-graph-easy`)
# Aspirations # Aspirations
- Each service should reside in its own directory. - Each service should reside in its own directory.
@@ -15,3 +20,48 @@ These setup files provide the text-only configurations for DMZ.
- Any maintenance scripts. - Any maintenance scripts.
- Configurations should reside in shadow-directories, e.g. a backup `soft-serve`'s `config.yaml` should reside in this repo under `splint.rs/soft-serve/etc/soft/config.yaml`. - Configurations should reside in shadow-directories, e.g. a backup `soft-serve`'s `config.yaml` should reside in this repo under `splint.rs/soft-serve/etc/soft/config.yaml`.
# Network Database
I have a half-baked plan to finally make use of plain-text databases, and it's already half-working.
Try these commands:
Ask what types of _rec_ords it contains:
```sh
recinf network.rec
```
Select with `recsel`, then specify the type of record.
```sh
recsel network.rec --type router
recsel network.rec --include-descriptors --type lxc
recsel network.rec -d -t lxc
recsel network.rec -d -t lxc --expression
```
User `-q` for a 'quick' selection, or `-e` for more precise selections.
```sh
recsel network.rec --type lxc --quick wiki
recsel network.rec --type lxc -q nginx
recsel network.rec -t lxc --expression "name ~ 'nginx'"
recsel network.rec -t lxc --expression "name = 'nginx12'"
```
If you can select something, you can also set its fields with `recset`.
Use `-f` to set the field, and `-a` to add, or `-s` to set.
```sh
recset network.rec -t lxc --expression "name = 'nginx12'" -f proxies --add soft-serve
recsel network.rec -t lxc --expression "name = 'nginx11'" -p proxies[0]
recset network.rec -t lxc --expression "name = 'nginx11'" -f proxies[0] -s wiki9
```
Insert a new record with `recins`.
```sh
recins network.rec -t lxc -r "name: bob" -r "service: bob" -r "host: moxx"
```
-39
View File
@@ -1,39 +0,0 @@
# Network map of Decentrala. Use with:
# graph-easy --boxart < netmap.txt
(Mox
[ m_router ]{label: router ;}
[ wireguard ] --> [ m_nginx ]{label: nginx-11 ;}
[ wiki ] --> [ m_nginx ]
[ gitea ] --> [ m_nginx ]
[ tor11 ] --> [ m_nginx ] --> [ m_router ]
[ smtp ]
)
(Serverko
[ s_nginx ]{label: nginx-12 ;}
[ s_router ]{label: router ;}
[ s_nginx ] --> [ nextcloud ]
[ s_nginx ] --> [ tor12 ]
[ s_nginx ] --> [ s_router ]
)
(splint.rs # unimportant
[ soft-serve ] # unimportant
[ mail-cache ]# unimportant
) # unimportant
[ tor12 ] <..> [ onions ] <..> [ tor11 ]
[ m_router ] <..> [ BGP ] <..> [ madness ] <..> [ s_router ]
[ smtp ] <..> [ madness ]
[ madness ] <..> [ mail-cache ]# unimportant
[ A ]{label: "" ;}
[ B ]{label: "" ;}
[ C ]{label: "" ;}
[ D ]{label: "" ;}
[ onions ] <..> [ A ]
[ onions ] <..> [ B ]
[ A ] <..> [ C ]
[ B ] <..> [ D ]
(Sharks! [ D ])
+88
View File
@@ -0,0 +1,88 @@
%rec: router
%doc: Routers, or possibly modems?
name: ISP Router
location: kralizec
ISP: Orion
name: ISP Router
location: krov
ISP: Yettel
%rec: host
%doc: These are the real machines, most of which run VMs or containters.
%key: name
name: moxx
location: kralizec
name: Serverko
location: krov
%rec: lxc
%doc: A container, usually on a Proxmox host.
%type: host rec host
name: nginx11
gateway: ISP-router
host: moxx
proxies: wiki11
proxies: gitea11
proxies: forum11
proxies: ejabberd11
proxies: dmzrs
name: LDAP
host: moxx
name: website
host: moxx
authqueries: LDAP
queries: postgresql11
service: dmzrs
service: flask accounts
name: gitea11
service: gitea
host: moxx
authqueries: LDAP
queries: postgresql11
name: ejabberd11
service: ejabberd
host: moxx
authqueries: LDAP
queries: postgresql11
name: forum11
service: forum
host: moxx
authqueries: LDAP
queries: postgresql11
name: postfix11
service: postfix
authqueries: LDAP
name: tor11
service: tor
host: moxx
name: postgresql11
service: postgresql
host: moxx
name: wiki11
service: wiki
host: moxx
authqueries: LDAP
name: nginx12
host: Serverko
name: nextcloud
host: Serverko
name: tor12
host: nginx