diff --git a/CHANGELOG.md b/CHANGELOG.md index 1169371c..4181be3e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +## [1.66.0](https://github.com/terraform-routeros/terraform-provider-routeros/compare/v1.65.1...v1.66.0) (2024-10-11) + +### Features + +* **ipv6:** Add new resource `routeros_ipv6_dhcp_server_option` ([c224bb1](https://github.com/terraform-routeros/terraform-provider-routeros/commit/c224bb192b090ac553cf67aade61e81aab9db93a)) +* **ipv6:** Add new resource `routeros_ipv6_dhcp_server` ([23ec941](https://github.com/terraform-routeros/terraform-provider-routeros/commit/23ec9414b9c17a6acf483a602ad741135104b012)) +* **ipv6:** Add new resource `routeros_ipv6_pool` ([96d1c48](https://github.com/terraform-routeros/terraform-provider-routeros/commit/96d1c48ed30efe0ff0d36e716bbac84282431e33)) +* **ipv6:** New resource `routeros_ipv6_dhcp_server_option_sets` ([b92458b](https://github.com/terraform-routeros/terraform-provider-routeros/commit/b92458bf79cc9e987beb137df85e40d2b76c436b)) + ## [1.65.1](https://github.com/terraform-routeros/terraform-provider-routeros/compare/v1.65.0...v1.65.1) (2024-10-09) ### Bug Fixes diff --git a/docs/index.md b/docs/index.md index b75b7795..dd5a85af 100644 --- a/docs/index.md +++ b/docs/index.md @@ -43,14 +43,26 @@ resource "routeros_interface_gre" "gre_hq" { ### Required -- `hosturl` (String) URL of the ROS router. Include including the scheme: - - `http` new REST API - - `https` new REST API with TLS/SSL - - `api` old API without TLS/SSL on port 8728 - - `apis` old API with TLS/SSL 8729 +- `hosturl` (String) URL of the MikroTik router, default is TLS connection to REST. + * API: api[s]://host[:port] + * api://router.local + * apis://router.local:8729 + * REST: http[s]://host + * http://router.local + * https://router.local + * router.local + * 127.0.0.1 + + + export ROS_HOSTURL=router.local or export MIKROTIK_HOST=router.local +- `username` (String) Username for the MikroTik WEB/Winbox. + + + export ROS_USERNAME=admin or export MIKROTIK_USER=admin ### Optional -- `insecure` (Boolean) Whether to verify the SSL certificate or not -- `password` (String, Sensitive) Password for the ROS user -- `username` (String) Username for the ROS user +- `ca_certificate` (String) Path to MikroTik's certificate authority file. +- `insecure` (Boolean) Whether to verify the SSL certificate or not. +- `password` (String, Sensitive) Password for the MikroTik user. +- `suppress_syso_del_warn` (Boolean) Suppress the system object deletion warning. \ No newline at end of file diff --git a/docs/resources/ipv6_dhcp_server.md b/docs/resources/ipv6_dhcp_server.md new file mode 100644 index 00000000..51fccefd --- /dev/null +++ b/docs/resources/ipv6_dhcp_server.md @@ -0,0 +1,65 @@ +# routeros_ipv6_dhcp_server (Resource) + + +## Example Usage +```terraform +resource "routeros_ipv6_pool" "pool-0" { + name = "test-pool-0" + prefix = "2001:db8:40::/48" + prefix_length = 64 +} + +resource "routeros_ipv6_dhcp_server" "test" { + address_pool = routeros_ipv6_pool.pool-0.name + interface = "bridge" + lease_time = "1m" + name = "test-dhcpv6" + preference = 128 +} +``` + + +## Schema + +### Required + +- `address_pool` (String) IPv6 pool, from which to take IPv6 prefix for the clients. +- `interface` (String) The interface on which server will be running. +- `name` (String) Reference name. + +### Optional + +- `allow_dual_stack_queue` (Boolean) Creates a single simple queue entry for both IPv4 and IPv6 addresses, and uses the MAC address and DUID for identification. Requires IPv6 DHCP Server to have this option enabled as well to work properly. +- `binding_script` (String) A script that will be executed after binding is assigned or de-assigned. Internal `global` variables that can be used in the script: + - bindingBound - set to `1` if bound, otherwise set to `0` + - bindingServerName - dhcp server name + - bindingDUID - DUID + - bindingAddress - active address + - bindingPrefix - active prefix. +- `comment` (String) +- `dhcp_option` (Set of String) Add additional DHCP options from option list. +- `disabled` (Boolean) +- `insert_queue_before` (String) Specify where to place dynamic simple queue entries for static DCHP leases with a rate-limit parameter set. +- `lease_time` (String) The time that a client may use the assigned address. The client will try to renew this address after half of this time and will request a new address after the time limit expires. +- `parent_queue` (String) A dynamically created queue for this lease will be configured as a child queue of the specified parent queue. +- `preference` (Number) +- `rapid_commit` (Boolean) +- `route_distance` (Number) Distance of the route. +- `use_radius` (Boolean) Whether to use RADIUS server. + +### Read-Only + +- `duid` (String) DUID value. +- `dynamic` (Boolean) Configuration item created by software, not by management interface. It is not exported, and cannot be directly modified. +- `id` (String) The ID of this resource. +- `invalid` (Boolean) + +## Import +Import is supported using the following syntax: +```shell +#The ID can be found via API or the terminal +#The command for the terminal is -> :put [/ipv6/dhcp/server get [print show-ids]] +terraform import routeros_ipv6_dhcp_server.test *3 +#Or you can import a resource using one of its attributes +terraform import routeros_ipv6_dhcp_server.test "name=test-dhcpv6" +``` diff --git a/docs/resources/ipv6_dhcp_server_option.md b/docs/resources/ipv6_dhcp_server_option.md new file mode 100644 index 00000000..332d71fb --- /dev/null +++ b/docs/resources/ipv6_dhcp_server_option.md @@ -0,0 +1,55 @@ +# routeros_ipv6_dhcp_server_option (Resource) + + +## Example Usage +```terraform +resource "routeros_ipv6_dhcp_server_option" "test" { + name = "domain-search" + code = 24 + value = "0x07'example'0x05'local'0x00" +} +``` + + +## Schema + +### Required + +- `code` (Number) Dhcp option [code](https://www.ipamworldwide.com/ipam/isc-dhcpv6-options.html). +- `name` (String) Descriptive name of the option. + +### Optional + +- `comment` (String) +- `value` (String) Parameter's value. Available data types for options are: + - `'test'` -> ASCII to Hex 0x74657374 + - `'10.10.10.10'` -> Unicode IP to Hex 0x0a0a0a0a + - `s'10.10.10.10'` -> ASCII to Hex 0x31302e31302e31302e3130 + - `s'160'` -> ASCII to Hex 0x313630 + - `'10'` -> Decimal to Hex 0x0a + - `0x0a0a` -> No conversion + - `$(VARIABLE)` -> hardcoded values + +RouterOS has predefined variables that can be used: + - `HOSTNAME` - client hostname + - `RADIUS_MT_STR1` - from radius MT attr nr. `24` + - `RADIUS_MT_STR2` - from radius MT attr nr. `25` + - `REMOTE_ID` - agent remote-id + - `NETWORK_GATEWAY - the first gateway from `/ip dhcp-server network`, note that this option won't work if used from lease. + +Now it is also possible to combine data types into one, for example: `0x01'vards'$(HOSTNAME)`For example if HOSTNAME is 'kvm', then raw value will be 0x0176617264736b766d. + +### Read-Only + +- `id` (String) The ID of this resource. +- `raw_value` (String) Read-only field which shows raw DHCP option value (the format actually sent out). + +## Import +Import is supported using the following syntax: +```shell +#The ID can be found via API or the terminal +#The command for the terminal is -> :put [/ipv6/dhcp/server/option get [print show-ids]] +terraform import routeros_ipv6_dhcp_server_option.test *3 +#Or you can import a resource using one of its attributes +terraform import routeros_ipv6_dhcp_server_option.test "name=domain-search" +``` diff --git a/docs/resources/ipv6_dhcp_server_option_sets.md b/docs/resources/ipv6_dhcp_server_option_sets.md new file mode 100644 index 00000000..93e2987d --- /dev/null +++ b/docs/resources/ipv6_dhcp_server_option_sets.md @@ -0,0 +1,42 @@ +# routeros_ipv6_dhcp_server_option_sets (Resource) + + +## Example Usage +```terraform +resource "routeros_ipv6_dhcp_server_option" "domain-search" { + name = "domain-search" + code = 24 + value = "0x07'example'0x05'local'0x00" +} + +resource "routeros_ipv6_dhcp_server_option_sets" "test" { + name = "test-set" + options = [routeros_ipv6_dhcp_server_option.domain-search.name] +} +``` + + +## Schema + +### Required + +- `name` (String) The name of the DHCPv6 option. + +### Optional + +- `comment` (String) +- `options` (Set of String) The list of options. + +### Read-Only + +- `id` (String) The ID of this resource. + +## Import +Import is supported using the following syntax: +```shell +#The ID can be found via API or the terminal +#The command for the terminal is -> :put [/ipv6/dhcp/server/option/sets get [print show-ids]] +terraform import routeros_ipv6_dhcp_server_option_sets.test *3 +#Or you can import a resource using one of its attributes +terraform import routeros_ipv6_dhcp_server_option_sets.test "name=test-set" +``` diff --git a/docs/resources/ipv6_pool.md b/docs/resources/ipv6_pool.md new file mode 100644 index 00000000..c5a20d42 --- /dev/null +++ b/docs/resources/ipv6_pool.md @@ -0,0 +1,38 @@ +# routeros_ipv6_pool (Resource) + + +## Example Usage +```terraform +resource "routeros_ipv6_pool" "test" { + name = "test-pool" + prefix = "2001:db8:12::/48" + prefix_length = 64 +} +``` + + +## Schema + +### Required + +- `name` (String) Descriptive name of the pool. +- `prefix_length` (Number) The option represents the prefix size that will be given out to the client. + +### Optional + +- `prefix` (String) Ipv6 address prefix. + +### Read-Only + +- `dynamic` (Boolean) Configuration item created by software, not by management interface. It is not exported, and cannot be directly modified. +- `id` (String) The ID of this resource. + +## Import +Import is supported using the following syntax: +```shell +#The ID can be found via API or the terminal +#The command for the terminal is -> :put [/ipv6/pool get [print show-ids]] +terraform import routeros_ipv6_pool.test *3 +#Or you can import a resource using one of its attributes +terraform import routeros_ipv6_pool.test "name=test-pool" +``` diff --git a/package.json b/package.json index 6bd549a6..5ff948bc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "terraform-provider-routeros", - "version": "1.65.1", + "version": "1.66.0", "repository": { "type": "git", "url": "https://github.com/terraform-routeros/terraform-provider-routeros"