summaryrefslogtreecommitdiff
path: root/plugins/modules/vyos_generate.py
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/modules/vyos_generate.py')
-rw-r--r--plugins/modules/vyos_generate.py102
1 files changed, 102 insertions, 0 deletions
diff --git a/plugins/modules/vyos_generate.py b/plugins/modules/vyos_generate.py
new file mode 100644
index 0000000..448575a
--- /dev/null
+++ b/plugins/modules/vyos_generate.py
@@ -0,0 +1,102 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+
+
+__metaclass__ = type
+
+DOCUMENTATION = r"""
+---
+module: vyos_generate
+short_description: Execute generate commands on a VyOS device via REST API.
+description:
+ - Sends a C(generate) operational command to a VyOS device via the HTTPS
+ REST API (C(/generate) endpoint).
+ - Commonly used to generate WireGuard keypairs, TLS certificates, etc.
+version_added: "1.0.0"
+author:
+ - VyOS Community (@vyos)
+options:
+ path:
+ description:
+ - Generate command tokens.
+ - E.g. C(["wireguard", "default-keypair"]).
+ type: list
+ elements: str
+ required: true
+ hostname:
+ description: IP address or FQDN of the VyOS device.
+ type: str
+ required: true
+ port:
+ description: HTTPS port for the REST API.
+ type: int
+ default: 443
+ api_key:
+ description: API key configured on the device.
+ type: str
+ required: true
+ no_log: true
+ timeout:
+ description: Request timeout in seconds.
+ type: int
+ default: 30
+ verify_ssl:
+ description: Validate the device's TLS certificate.
+ type: bool
+ default: false
+requirements:
+ - VyOS 1.3+
+examples: |
+ - name: Generate WireGuard default keypair
+ vyos.rest.vyos_generate:
+ hostname: 192.168.1.1
+ api_key: MY-KEY
+ path: ["wireguard", "default-keypair"]
+
+ - name: Generate a new SSH host key
+ vyos.rest.vyos_generate:
+ hostname: 192.168.1.1
+ api_key: MY-KEY
+ path: ["ssh-server", "host-key", "rsa"]
+"""
+
+RETURN = r"""
+output:
+ description: Text output produced by the generate command (may be empty).
+ returned: success
+ type: str
+"""
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible_collections.vyos.rest.plugins.module_utils.vyos_rest import (
+ VYOS_REST_CONNECTION_ARGSPEC,
+ VyOSRestClient,
+ VyOSRestError,
+)
+
+
+def main():
+ argument_spec = dict(
+ path=dict(type="list", elements="str", required=True),
+ )
+ argument_spec.update(VYOS_REST_CONNECTION_ARGSPEC)
+
+ module = AnsibleModule(
+ argument_spec=argument_spec,
+ supports_check_mode=False,
+ )
+
+ client = VyOSRestClient(module)
+ try:
+ result = client.generate(module.params["path"])
+ except VyOSRestError as exc:
+ module.fail_json(msg=str(exc))
+
+ module.exit_json(changed=True, output=result.get("data", ""))
+
+
+if __name__ == "__main__":
+ main()