2023-03-12 16:58:30 +01:00
|
|
|
|
# ipam
|
2023-03-25 21:39:42 +01:00
|
|
|
|
A cli based [IP Address Management](https://en.wikipedia.org/wiki/IP_address_management)
|
|
|
|
|
built with [Go](https://go.dev/) using [Cobra](https://cobra.dev/) and
|
|
|
|
|
[Viper](https://github.com/spf13/viper) with optional [PowerDNS](https://www.powerdns.com/auth.html)
|
|
|
|
|
API integration.
|
2023-03-10 17:52:20 +01:00
|
|
|
|
|
2023-03-25 21:39:42 +01:00
|
|
|
|
## Features
|
|
|
|
|
`ipam` is a cli based IPAM. It supports:
|
|
|
|
|
- Adding, listing, viewing and deleting subnets
|
|
|
|
|
- Adding, viewing and deleting single IP addresses with FQDNs
|
|
|
|
|
- automatic addition and deletion of forward and reverse records
|
|
|
|
|
- import and export configuration
|
|
|
|
|
|
|
|
|
|
## But why?
|
|
|
|
|
In my career as a Network Engineer I worked at a company that developed their own internal CMDB
|
|
|
|
|
that was set up as a cli application. I really liked the ease of use and the way you could
|
|
|
|
|
quickly do stuff.
|
|
|
|
|
|
|
|
|
|
So I sat down and started my first Go project and started developing this ipam.
|
|
|
|
|
|
|
|
|
|
## How do I use the cmdb?
|
2023-04-05 09:09:05 +02:00
|
|
|
|
`ipam` is built as a cli app. Once you installed `ipam` and added it to your `$PATH`, you can
|
|
|
|
|
- add prefixes with `ipam subnet add 192.168.0.0/24 fancy-subnet-name`
|
|
|
|
|
- add IPs to those prefixes with `ipam ip add 192.168.0.1 fqdn.example.com`
|
|
|
|
|
- add the next free IP in a prefix with `ipam ip add 192.168.0.0/24 fqdn2.example.com`
|
|
|
|
|
- much more (see `ipam (command) --help` for examples)
|
2023-04-05 09:45:06 +02:00
|
|
|
|
|
|
|
|
|
|
2023-04-05 09:09:05 +02:00
|
|
|
|
If PowerDNS integration is enabled in `$HOME/.ipam/ipam.yml`, forward and reverse DNS records
|
|
|
|
|
are automatically managed when you add or delete IP addresses with hostnames.
|
2023-03-25 21:39:42 +01:00
|
|
|
|
|
2023-04-10 20:26:48 +02:00
|
|
|
|
[![Asciicast displaying the usage of the ipam app](docs/static/ipam-asciicast.svg)](https://asciinema.org/a/tT3SbtjsN9bmEE4QgKuanhNcX)
|
2023-04-10 19:46:13 +02:00
|
|
|
|
|
2023-03-25 21:39:42 +01:00
|
|
|
|
## How can I contribute to the development?
|
2023-04-05 09:09:05 +02:00
|
|
|
|
The main development is happening at https://codeberg.org/lauralani/ipam.
|
|
|
|
|
|
|
|
|
|
If you find a bug or would like a feature to get added you can
|
|
|
|
|
[create a new issue](https://codeberg.org/lauralani/ipam/issues)
|
|
|
|
|
or collaborate by forking the repository and
|
|
|
|
|
[create a new pull request](https://codeberg.org/lauralani/ipam/pulls).
|
|
|
|
|
|
|
|
|
|
If you have any questions please also feel free to create a new Issue!
|
2023-03-15 16:43:20 +01:00
|
|
|
|
|
|
|
|
|
## CLI
|
|
|
|
|
```
|
|
|
|
|
❯ ipam
|
|
|
|
|
A cli based ipam.
|
2023-03-25 21:39:42 +01:00
|
|
|
|
You can manage subnets and single IP addresses within those subnets.
|
|
|
|
|
ipam can also manage the corresponding DNS records in your PowerDNS Instance.
|
2023-03-15 16:43:20 +01:00
|
|
|
|
|
|
|
|
|
Usage:
|
2023-03-25 21:39:42 +01:00
|
|
|
|
ipam [command]
|
2023-03-15 16:43:20 +01:00
|
|
|
|
|
|
|
|
|
Available Commands:
|
2023-03-25 21:39:42 +01:00
|
|
|
|
completion Generate the autocompletion script for the specified shell
|
|
|
|
|
export Export ipam configuration
|
|
|
|
|
help Help about any command
|
|
|
|
|
import Import ipam configuration
|
|
|
|
|
ip manage IP addresses
|
|
|
|
|
subnet Manage IP subnets
|
2023-03-15 16:43:20 +01:00
|
|
|
|
|
|
|
|
|
Flags:
|
2023-03-25 21:39:42 +01:00
|
|
|
|
-d, --debug Enable debug mode. (may print sensitive Information, so please watch out!)
|
|
|
|
|
-h, --help help for ipam
|
|
|
|
|
-v, --version version for ipam
|
2023-03-15 16:43:20 +01:00
|
|
|
|
|
|
|
|
|
Use "ipam [command] --help" for more information about a command.
|
|
|
|
|
```
|
2023-03-25 21:39:42 +01:00
|
|
|
|
|
|
|
|
|
## License
|
2023-04-05 09:09:05 +02:00
|
|
|
|
Copyright 2023 Laura Kalb <dev (at) lauka.net>
|
2023-03-25 21:39:42 +01:00
|
|
|
|
|
|
|
|
|
This program is Free Software: You can use, study share and improve it at your
|
|
|
|
|
will. Specifically you can redistribute and/or modify it under the terms of the
|
|
|
|
|
[GNU General Public License](https://www.gnu.org/licenses/gpl.html) as
|
|
|
|
|
published by the Free Software Foundation, either version 3 of the License, or
|
|
|
|
|
(at your option) any later version.
|