Add article about cdist/openwrt
This commit is contained in:
parent
44589e79f4
commit
481b05abcf
1 changed files with 96 additions and 0 deletions
96
content/u/blog/2024-08-02-openwrt-no-cdist-yet/contents.lr
Normal file
96
content/u/blog/2024-08-02-openwrt-no-cdist-yet/contents.lr
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
title: cdist does not (yet) fully support OpenWrt
|
||||||
|
---
|
||||||
|
pub_date: 2024-08-02
|
||||||
|
---
|
||||||
|
author: ungleich networking team
|
||||||
|
---
|
||||||
|
twitter_handle: ungleich
|
||||||
|
---
|
||||||
|
_hidden: no
|
||||||
|
---
|
||||||
|
_discoverable: yes
|
||||||
|
---
|
||||||
|
abstract:
|
||||||
|
How we try to use cdist on openwrt and fail
|
||||||
|
---
|
||||||
|
body:
|
||||||
|
|
||||||
|
## cdist config management
|
||||||
|
|
||||||
|
As many of you know, we use
|
||||||
|
[cdist](https://cdi.st) for configuration management at ungleich. And
|
||||||
|
we try to manage everything that is not (yet) in kubernetes with it.
|
||||||
|
|
||||||
|
Today's short blog entry is about using cdist with openwrt.
|
||||||
|
|
||||||
|
## OpenWrt at ungleich
|
||||||
|
|
||||||
|
[OpenWrt](https://openwrt.org] is a popular, open source operating
|
||||||
|
system used on routers, switches, etc. We use it for providing IPv6
|
||||||
|
and IPv4 connectivity to customers world wide.
|
||||||
|
|
||||||
|
So far most of our devices are configured using shell scripts from our
|
||||||
|
[ungleich-tool git
|
||||||
|
repository](https://code.ungleich.ch/ungleich-public/ungleich-tools).
|
||||||
|
|
||||||
|
However as configurations get more complex, we thought about moving
|
||||||
|
our configuration also into cdist.
|
||||||
|
|
||||||
|
## OpenWrt is similar, but not the same
|
||||||
|
|
||||||
|
OpenWrt is, generally speaking, "just another Linux distribution",
|
||||||
|
albeit with a very, very small footprint. It has to be, because the
|
||||||
|
storage on a typical router can be in the size of a couple Megabytes.
|
||||||
|
Right, not Gigabyte, not Terabyte.
|
||||||
|
|
||||||
|
For instance this "large" router has about 9 Megabytes of storage:
|
||||||
|
|
||||||
|
```
|
||||||
|
# df -h
|
||||||
|
Filesystem Size Used Available Use% Mounted on
|
||||||
|
/dev/root 4.0M 4.0M 0 100% /rom
|
||||||
|
tmpfs 217.0M 240.0K 216.8M 0% /tmp
|
||||||
|
/dev/mtdblock6 9.1M 420.0K 8.7M 4% /overlay
|
||||||
|
overlayfs:/overlay 9.1M 420.0K 8.7M 4% /
|
||||||
|
tmpfs 512.0K 0 512.0K 0% /dev
|
||||||
|
```
|
||||||
|
|
||||||
|
It does however have 512 MiB of RAM...:
|
||||||
|
|
||||||
|
```
|
||||||
|
# free -m
|
||||||
|
total used free shared buff/cache available
|
||||||
|
Mem: 444428 57120 370184 240 17124 354048
|
||||||
|
Swap: 0 0 0
|
||||||
|
```
|
||||||
|
|
||||||
|
So, openwrt is a Linux distribution, but its environment is a bit more
|
||||||
|
challenging than a general purpose Linux distribution.
|
||||||
|
|
||||||
|
## cdist & openwrt
|
||||||
|
|
||||||
|
Cdist uses so called "types" to configure systems idempotently. They
|
||||||
|
usually require some shell support on the target system, but nothing
|
||||||
|
fancy.
|
||||||
|
|
||||||
|
However in the case of openwrt, cdist is missing some support, as of
|
||||||
|
version 7.0.0:
|
||||||
|
|
||||||
|
* cdist uses the system default ssh and if that uses SFTP instead of
|
||||||
|
SCP by default, it will fail, as openwrt, as of 23.05.3, only
|
||||||
|
supports legacy scp (-O). Manually patching cdist source code to
|
||||||
|
include "-O" fixes this issue for the moment.
|
||||||
|
|
||||||
|
* the most basic cdist type __file uses "cksum" to create a checksum
|
||||||
|
over files to decide whether or not to copy a file. cksum was chosen
|
||||||
|
in the first place, as it is very basic and can be found
|
||||||
|
everywhere. Well, everywhere but on openwrt...
|
||||||
|
|
||||||
|
|
||||||
|
## Future of cdist & openwrt
|
||||||
|
|
||||||
|
Both above issues can in theory be addressed, but the __file type is
|
||||||
|
very basic and needs some checksumming support. Without it, cdist
|
||||||
|
lacks a major feature and can be considered not (yet) usable.
|
||||||
|
|
||||||
|
Let's see what the future brings.
|
Loading…
Reference in a new issue