diff --git a/README.md b/README.md index d1f85ad..6473d42 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,63 @@ # ipam +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. -This project is in development. There is no working version yet! +## 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? +Coming soon + +## How can I contribute to the development? +Patches, bug reports or feature suggestions can be sent by email to +[~lauralani/ipam@lists.sr.ht](mailto:~lauralani/ipam@lists.sr.ht). If you're +not familiar with sending patches over email see +[here](https://git-send-email.io/). ## CLI ``` ❯ ipam A cli based ipam. -You can manage subnets, single ip addresses within those, and the corresponding A records. -PowerDNS and IPV6-Support will follow +You can manage subnets and single IP addresses within those subnets. +ipam can also manage the corresponding DNS records in your PowerDNS Instance. Usage: - ipam [command] +ipam [command] Available Commands: - completion Generate the autocompletion script for the specified shell - export Export current ipam configuration (not implemented) - help Help about any command - import Import ipam configuration (not implemented) - ip manage ip addresses - subnet Manage ip subnets +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 Flags: - -d, --debug Enable debug mode. (may print sensitive Information, so please watch out!) - -h, --help help for ipam +-d, --debug Enable debug mode. (may print sensitive Information, so please watch out!) +-h, --help help for ipam +-v, --version version for ipam Use "ipam [command] --help" for more information about a command. ``` + +## License +Copyright 2022 Laura Kalb + +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. diff --git a/cmd/export.go b/cmd/export.go index 41cbe64..bc25e55 100644 --- a/cmd/export.go +++ b/cmd/export.go @@ -18,7 +18,7 @@ import ( // exportCmd represents the export command var exportCmd = &cobra.Command{ Use: "export", - Short: "Export current ipam configuration (not implemented)", + Short: "Export ipam configuration", Long: `Export current ipam contents to importable data format. You can either export a single subnet or all subnets.`, Example: "ipam export\nipam export 192.168.0.0/24", diff --git a/cmd/import.go b/cmd/import.go index 39eb3c7..3af5e27 100644 --- a/cmd/import.go +++ b/cmd/import.go @@ -16,7 +16,7 @@ import ( var importCmd = &cobra.Command{ Use: "import", - Short: "Import ipam configuration (not implemented)", + Short: "Import ipam configuration", Long: `Import subnets to ipam.`, Example: "ipam import --file import.json", Args: cobra.NoArgs, diff --git a/cmd/ip.go b/cmd/ip.go index 88112cc..86365bd 100644 --- a/cmd/ip.go +++ b/cmd/ip.go @@ -11,8 +11,8 @@ import ( // ipCmd represents the ip command var ipCmd = &cobra.Command{ Use: "ip", - Short: "manage ip addresses", - Long: `Add, delete, edit and show IP addresses`, + Short: "manage IP addresses", + Long: `Add, delete and show IP addresses`, Aliases: []string{"i"}, } diff --git a/cmd/root.go b/cmd/root.go index 9b1592c..b3fecd6 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -16,8 +16,8 @@ var rootCmd = &cobra.Command{ Use: "ipam", Short: "A cli based ipam", Long: `A cli based ipam. -You can manage subnets, single ip addresses within those, and the corresponding A records. -PowerDNS and IPV6-Support will follow`, +You can manage subnets and single IP addresses within those subnets. +ipam can also manage the corresponding DNS records in your PowerDNS Instance.`, Version: ipamVersion, } diff --git a/cmd/subnet.go b/cmd/subnet.go index 7d16d38..2990ad3 100644 --- a/cmd/subnet.go +++ b/cmd/subnet.go @@ -11,8 +11,8 @@ import ( // subnetCmd represents the subnet command var subnetCmd = &cobra.Command{ Use: "subnet", - Short: "Manage ip subnets", - Long: `Manage ip subnets`, + Short: "Manage IP subnets", + Long: `Add, delete and show IP subnets`, Aliases: []string{"s"}, }