10 Kio
title: Infomaniak Public Cloud - Mise en situation : Bureau virtuel description: Mettre en place un bureau virtuel avec Ubuntu published: true date: 2021-11-09T09:22:50.215Z tags: openstack, infomaniak, public-cloud, cloud, ipc, vdi, ubuntu editor: markdown dateCreated: 2021-11-08T16:33:28.599Z
![plan_de_travail_1@4x.png](/images/cloud/infomaniak-public-cloud/plan_de_travail_1@4x.png =600x)
Introduction
Vous pouvez très bien utiliser un "ordinateur dans le cloud" avec une interface graphique pour certaines tâches basiques ou avancées. Nous verrons ici l'installation d'un serveur Ubuntu averc une interface graphique (Gnome) et la connexion à ce dernier en RDP directement. Vous pouvez utilisez le template Heat directement ou faire son installation à la main. ![infomaniak-publiccloud_8_5.png](/images/cloud/infomaniak-public-cloud/8/infomaniak-publiccloud_8_5.png =1300x)
Template Heat
Créez le fichier desktop.yml
:
heat_template_version: rocky
description: Desktop Ubuntu
parameters:
image:
type: string
description: image use for desktop
default: Ubuntu 20.04 LTS Focal Fossa
key:
type: string
description: SSH key to connect to the servers
flavor:
type: string
description: flavor used by desktop
default: a4-ram8-disk50-perf1
network:
type: string
description: network used by desktop
default: desktop-network
subnet_id:
type: string
description: dedicated subnet for desktop
default: desktop-subnet
floating_network_id:
type: string
description: UUID of a Neutron external network
default: ext-floating1
USER_NAME:
type: string
description: Name of user
default: infomaniak
USER_PASSWORD:
type: string
description: Password of user
default: PublicCloud
KEYBOARD:
type: string
description: Kayboard layout (en / fr)
default: fr
resources:
wait_condition:
type: OS::Heat::WaitCondition
properties:
handle: { get_resource: wait_handle }
timeout: 600
wait_handle:
type: OS::Heat::WaitConditionHandle
# security group
desktop_security_group:
type: OS::Neutron::SecurityGroup
properties:
name: "desktop_security_group"
description: >
Allows ICMP, SSH & RDP default port
rules:
- { direction: ingress, protocol: icmp }
- { direction: ingress, protocol: tcp, port_range_min: 22, port_range_max: 22 }
- { direction: ingress, protocol: tcp, port_range_min: 3389, port_range_max: 3389 }
# network resources
desktop_network:
type: OS::Neutron::Net
properties:
name: { get_param: network }
value_specs:
mtu: 1500
desktop_subnet:
type: OS::Neutron::Subnet
properties:
name: 'desktop-subnet'
network_id: { get_resource: desktop_network }
cidr: "10.11.3.0/24"
dns_nameservers:
- "84.16.67.69"
- "84.16.67.70"
ip_version: 4
desktop_router:
type: OS::Neutron::Router
properties:
name: 'desktop-router'
external_gateway_info: { network: ext-floating1 }
desktop_router_subnet_interface:
type: OS::Neutron::RouterInterface
properties:
router_id: { get_resource: desktop_router }
subnet: { get_resource: desktop_subnet }
desktop_port:
type: OS::Neutron::Port
properties:
network: { get_resource: desktop_network }
security_groups: [ { get_resource: desktop_security_group } ]
fixed_ips:
- subnet_id: { get_resource: desktop_subnet }
desktop_floating:
type: OS::Neutron::FloatingIP
properties:
floating_network_id: { get_param: floating_network_id }
port_id: { get_resource: desktop_port }
# instance
server:
type: OS::Nova::Server
depends_on: [ desktop_router]
properties:
flavor: { get_param: flavor }
image: { get_param: image }
key_name: {get_param: key}
networks:
- port: { get_resource: desktop_port }
user_data:
str_replace:
template: |
#!/bin/bash -v
apt update
apt install -y tasksel
tasksel install ubuntu-desktop
apt upgrade -y
apt install -y xrdp
PASS=$(perl -e 'print crypt("$USER_PASSWORD", "salt"),"\n"')
useradd -m -p $PASS $USER_NAME
usermod -aG sudo $USER_NAME
KEYBOARD='$KEYBOARD' && sudo sed -i 's/XKBLAYOUT=\"\w*"/XKBLAYOUT=\"'$KEYBOARD'\"/g' /etc/default/keyboard
echo "deb [ arch=amd64 ] https://repo.linit.io linit-stable main 2" > /etc/apt/sources.list.d/linit.list
wget -qO - https://repo.linit.io/public.key | sudo apt-key add -
apt update
apt install -y kdrive kmeet
rm /etc/default/locale
cat <<EOF >>/etc/default/locale
LANG="fr_FR.UTF-8"
LANGUAGE="fr"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
EOF
wc_notify --data-binary '{"status": "SUCCESS"}'
reboot
params:
wc_notify: { get_attr: ['wait_handle', 'curl_cli'] }
$KEYBOARD: { get_param: KEYBOARD }
$USER_PASSWORD: { get_param: USER_PASSWORD }
$USER_NAME: { get_param: USER_NAME }
outputs:
desktop_url:
value:
str_replace:
template: host:3389
params:
host: { get_attr: [desktop_floating, floating_ip_address] }
description: "RDP IP"
desktop_password:
value: { get_param: USER_PASSWORD }
description: "User password"
desktop_login:
value: { get_param: USER_NAME }
description: "User"
Lancez la création de la stack avec la commande suivante :
openstack stack create --template vdi.yml vdi --parameter KEY=<KEY> --parameter KEYBOARD=<KEYBOARD> --parameter USER_NAME=<USER> --parameter USER_PASSWORD='<PASSWORD>'
KEY
- Nom ou ID de votre clé SSH
KEYBOARD
- Configuration de votre clavier (
fr
/en
/es
) (Défaut :fr
)USER
- Nom en miniscule de votre utilisateur final pour se connecter (Défaut :
infomaniak
)PASSWORD
Mot de passe de votre utilisateur final (Défaut :
PublicCloud
). {.is-info}
Pour la gestion de la stack, voir ce tutoriel :
- 🔥 L'orchestration Créer et gérer les stacks Heat {.links-list}
Création de la VM
Horizon
Création du groupe de sécurité pour le port RDP
Pour nous connecter à la machine virtuelle une fois installée, nous allons avoir besoin d'ouvrir le port RDP (3389
). Si vous avez bien suivis les autres tutoriel, cela devrais etre simple. Créez donc un nouveau groupe de sécurité RDP
en suivant ce tutoriel :
- 🛡️ Les groupes de sécurité Comprendre et utiliser le firewall et ses règles avec Horizon {.links-list}
Et ajoutez la règle suivante : ![infomaniak-publiccloud_8_1.png](/images/cloud/infomaniak-public-cloud/8/infomaniak-publiccloud_8_1.png =600x)
Création de l'instance
Comme pour la création du groupe de sécurité, utilisez le tutoriel suivant pour la création de l'instance :
Sélectionnez l'image Ubuntu 20,04 LTS Focal Fossa
:
![infomaniak-publiccloud_8_2.png](/images/cloud/infomaniak-public-cloud/8/infomaniak-publiccloud_8_2.png =600x)
Bien choisir la configuration adaptée à votre besoin : ![infomaniak-publiccloud_8_3.png](/images/cloud/infomaniak-public-cloud/8/infomaniak-publiccloud_8_3.png =600x)
Et pensez à bien ajouter vos groupes de sécurités en conséquence : (ici pour le port RDP (3389), SSH (22) et Ping (ICMP)) ![infomaniak-publiccloud_8_4.png](/images/cloud/infomaniak-public-cloud/8/infomaniak-publiccloud_8_4.png =600x)
CLI
Création du groupe de sécurité pour le port RDP
Voir ce tutoriel pour l'explication des commandes :
openstack security group create --description "RDP (3389)" RDP
openstack security group rule create --dst-port 3389 --protocol TCP RDP
Création de l'instance
Voir ce tutoriel pour l'explication des commandes :
openstack server create --image "Ubuntu 20.04 LTS Focal Fossa" --flavor a2-ram4-disk50-perf1 --security-group "PING - SSH" --security-group "RDP" --key-name <KEYPAIR> --network ext-net1 Ubuntu-Desktop
openstack server show Ubuntu-Desktop
Installation
Connexion à l'instance
Dans un terminal, connectez vous avec :
ssh ubuntu@<IP_INSTANCE>
IP_INSTANCE
Adresse IP de votre instance
Ubuntu-Desktop
. {.is-info}
Création de l'utilisateur
Commençons par créer l'utilisateur avec lequel vous allez vous connecter en RDP :
PASS=$(perl -e 'print crypt("<USER_PASSWORD>", "salt"),"\n"')
sudo useradd -m -p $PASS <USER>
USER_PASSWORD
- Mot de passe de votre utilisateur
USER
Nom de votre utilisateur en miniscule
. {.is-info}
Et ajoutez cet utilisateur au groupe sudo
:
sudo usermod -aG sudo <USER>
USER
Nom de votre utilisateur en miniscule
. {.is-info}
Installation de l'interface graphique
Mettez à jour le serveur :
sudo apt update && sudo apt upgrade
Installez tasksel
et lancez l'installation de gnome :
sudo apt install -y tasksel
sudo tasksel install ubuntu-desktop
Installation de xrdp
Il ne vous reste plus qu'à installer xrdp
et redémarrer le server :
sudo apt install xrdp
sudo reboot
Connexion en RDP
Linux
Connectez vous avec le l'application Remmina
MacOS
Connectez vous avec l'application Microsoft Remote Desktop
Windows
Connectez vous avec l'outils de connexion RDP MSTSC