gavika.openvpn
gavika.openvpn
=========
Install and set up OpenVPN. Create and manage your own OpenVPN server.
For more information, visit: Tech Chorus Guide to OpenVPN
Also, check the examples
folder.
Requirements
This role needs to be used together with gavika.easy_rsa
.
Role Variables
Variable | Default Value | Description | Required? |
---|---|---|---|
easy_rsa_local_pool_directory | /tmp/ca_openvpn_pool | Temporary directory to store certificate requests and certificates. | Yes |
openvpn_client_users | [] | List of OpenVPN client usernames (use only letters and numbers). | No |
openvpn_port | 1194 | The port where the OpenVPN server operates. | Yes |
openvpn_protocol | Default: udp (Options: tcp or udp) | The network protocol to be used. | Yes |
openvpn_server_ip_address | (Your OpenVPN server IP) | The IP address assigned in the generated client certificates. | Yes |
openvpn_generated_configurations_local_pool | false (Boolean) | Whether to copy the generated client configurations to the local pool directory. | Yes |
openvpn_route_all_traffic | True (Boolean) | Whether to route all internet traffic through the OpenVPN server. | Yes |
openvpn_use_opendns_public_dns | True (Boolean) | Whether to use OpenDNS servers for clients. | Yes |
openvpn_additional_configs | [] | Additional configurations for OpenVPN. Each entry is a key-value pair. | Yes |
openvpn_default_firewalld_zone | public | The zone name for the Firewalld configuration (only for EL). | Yes |
Instructions for Building Servers
To create a CA and an OpenVPN server using gavika.easy_rsa
and gavika.openvpn
, you will run the roles multiple times as per your needs. You need to run them in the correct order, as specified in the documentation. Typically, you'll run openvpn-playbook.yml
twice and easy-rsa-playbook.yml
once.
Playbook Execution Flow:
Click here for the full-size flowchart
Example Commands to Run Playbooks:
# Set up OpenVPN and create server/client requests
ansible-playbook -i my-inventory.yml openvpn-playbook.yml
# Build the CA server and process requests
ansible-playbook -i my-inventory.yml easy-rsa-playbook.yml
# Set up OpenVPN and generate client configurations
ansible-playbook -i my-inventory.yml openvpn-playbook.yml
Dependencies
- The
gavika.openvpn
role works withgavika.easy_rsa
. - Requires the following collections:
community.aws
- The
boto3
Python library is necessary.
Example Playbook for CA Server: easy-rsa-playbook.yml
---
- hosts: ca_server
become: true
vars:
easy_rsa_req_country: "IN"
easy_rsa_req_province: "KA"
easy_rsa_req_city: "Bangalore"
easy_rsa_req_org: "Gavika"
easy_rsa_req_email: "[email protected]"
easy_rsa_req_ou: "Gavika"
easy_rsa_local_pool_directory: /tmp/ca_openvpn_pool
easy_rsa_server_request_to_import: "server.req"
easy_rsa_ca_server_mode: true
roles:
- role: gavika.easy_rsa
Example Playbook for OpenVPN Server: openvpn-playbook.yml
---
- hosts: openvpn_server
become: true
vars:
openvpn_client_users:
- janedoe
- johndoe
easy_rsa_req_country: "IN"
easy_rsa_req_province: "KA"
easy_rsa_req_city: "Bangalore"
easy_rsa_req_org: "My Organization"
easy_rsa_req_email: "[email protected]"
easy_rsa_req_ou: "My Organization Unit"
roles:
- role: gavika.easy_rsa
- role: gavika.openvpn
Example Inventory: my-inventory
all:
hosts:
placeholder
children:
ca_server:
hosts:
dev-ca-01.example.com:
ansible_become: true
ansible_user: ubuntu
ansible_host: 192.168.3.5
easy_rsa_ca_server_mode: true
ansible_python_interpreter: /usr/bin/python3
openvpn_server:
hosts:
dev-vpn-01.example.com:
ansible_python_interpreter: /usr/bin/python3
ansible_become: true
ansible_user: ubuntu
ansible_host: 192.168.3.6
openvpn_server_ip_address: 192.168.3.6
License
Apache License, Version 2.0
Author Information
Sudheera Satyanarayana
- Gavika: www.gavika.com
- Blog: Tech Chorus Blog
- Twitter: @bngsudheer
- GitHub: bngsudheer
Informazioni sul progetto
Role to install and configure OpenVPN server and generate client configurations
Installa
ansible-galaxy install gavika.openvpn
Licenza
other
Download
278
Proprietario