diff options
Diffstat (limited to 'plugins/modules/vyos_generate.py')
| -rw-r--r-- | plugins/modules/vyos_generate.py | 102 |
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() |
