|
# configure guacamole server with ansible |
|
# it uses scicore.guacamole collection https://galaxy.ansible.com/scicore/guacamole |
|
# Install it with: # ansible-galaxy collection install scicore.guacamole |
|
|
|
- name: Add a guacamole connection and user |
|
hosts: localhost |
|
gather_facts: no |
|
vars: |
|
base_url: https://guacamoleserver.domain.tld |
|
adminusername: guacadmin |
|
adminpassword: <insert guacadmin pass here> |
|
group_name: GROUP1 |
|
validate_certs: true |
|
state: present |
|
users: |
|
- username: guac-user1 |
|
password: <insert guac-user1 pass here> |
|
hostname: 10.78.5.161 |
|
allowed_connections: |
|
- connection_name: guac-user1-rdp |
|
protocol: rdp |
|
port: 3389 |
|
rdp_height: 927 |
|
rdp_width: 1920 |
|
username: rpduser |
|
password: <insert rpduser pass here> |
|
- connection_name: guac-user1-ssh |
|
protocol: ssh |
|
port: 22 |
|
username: sshuser |
|
password: <insert sshuser pass here> |
|
- connection_name: guac-user1-vnc |
|
protocol: vnc |
|
port: 5900 |
|
username: vncuser |
|
password: <insert vncuser pass here> |
|
|
|
- username: guac-user2 |
|
password: <insert guac-user2 pass here> |
|
hostname: 10.78.5.161 |
|
allowed_connections: |
|
- connection_name: guac-user2-rdp |
|
protocol: rdp |
|
port: 3389 |
|
rdp_height: 927 |
|
rdp_width: 1920 |
|
username: rpduser |
|
password: <insert rpduser pass here> |
|
- connection_name: guac-user2-ssh |
|
protocol: ssh |
|
port: 22 |
|
username: sshuser |
|
password: <insert sshuser pass here> |
|
- connection_name: guac-user2-vnc |
|
protocol: vnc |
|
port: 5900 |
|
username: vncuser |
|
password: <insert vncuser pass here> |
|
tasks: |
|
- name: Create a new connections group |
|
scicore.guacamole.guacamole_connections_group: |
|
validate_certs: "{{ validate_certs }}" |
|
base_url: "{{ base_url }}" |
|
auth_username: "{{ adminusername }}" |
|
auth_password: "{{ adminpassword }}" |
|
group_name: "{{ group_name }}" |
|
|
|
- name: Manage connections (rdp, ssh, vnc) for all users |
|
scicore.guacamole.guacamole_connection: |
|
validate_certs: "{{ validate_certs }}" |
|
base_url: "{{ base_url }}" |
|
auth_username: "{{ adminusername }}" |
|
auth_password: "{{ adminpassword }}" |
|
connection_name: "{{ connection.connection_name }}" |
|
protocol: "{{ connection.protocol }}" |
|
hostname: "{{ user.hostname }}" |
|
port: "{{ connection.port }}" |
|
username: "{{ connection.username }}" |
|
password: "{{ connection.password }}" |
|
group_name: "{{ group_name }}" |
|
state: "{{ state }}" |
|
rdp_ignore_server_certs: true |
|
rdp_height: "{{ connection.rdp_height | default(omit) }}" |
|
rdp_width: "{{ connection.rdp_width | default(omit) }}" |
|
loop: "{{ users | subelements('allowed_connections') }}" |
|
loop_control: |
|
label: "{{ item.0.username }} - {{ item.1.connection_name }}" |
|
vars: |
|
user: "{{ item.0 }}" |
|
connection: "{{ item.1 }}" |
|
|
|
- name: Create guacamole users |
|
scicore.guacamole.guacamole_user: |
|
validate_certs: "{{ validate_certs }}" |
|
base_url: "{{ base_url }}" |
|
auth_username: "{{ adminusername }}" |
|
auth_password: "{{ adminpassword }}" |
|
username: "{{ item.username }}" |
|
password: "{{ item.password }}" |
|
allowed_connections: "{{ item.allowed_connections | map(attribute='connection_name') | list }}" |
|
state: "{{ state }}" |
|
loop: "{{ users }}" |
|
loop_control: |
|
label: "{{ item.username }}" |