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