Présentation

BlueMind 3.5.10 apporte la possibilité d'installer un client CLI (« Command Line Interface » = Interface de lignes de commandes) permettant d'effectuer des tâches d'administration de la plateforme BlueMind directement en ligne de commande, sans avoir à créer de scripts pour cela.

Couplé au système de monitoring bm-tick, il permet notamment des tâches d'administration de celui-ci.

Sur cette page :

En rapport :

Installation

Si votre BlueMind n'est pas à jour de la toute dernière version publiée, il risque d'y avoir un conflit entre les paquets installés car bm-cli s'installera dans la dernière version disponible.

Pour éviter cela, vous pouvez :

  • soit mettre à jour votre installation au préalable (solution recommandée)
  • soit forcer le numéro de version dans la souscription afin d'installer bm-cli dans la même version que votre BlueMind.
    Pour cela, éditer le fichier /etc/apt/sources.list.d/bm.list et remplacer dans l'url "3.5" par le numéro de version souhaité :

#deb https://SUBSCRIPTION_USER:PASSWORD@pkg.bluemind.net/3.5/xenial/pkgs /
deb https://SUBSCRIPTION_USER:PASSWORD@pkg.bluemind.net/3.5.12-4/xenial/pkgs

NB : nous vous recommandons comme ci-dessus de copier la ligne et commenter la 1ère version en rajoutant un # en début de ligne, cela facilitera le retour arrière.
avec cela, la version de toute votre installation BlueMind est figée. Une fois les paquets installés, pensez à remettre le numéro de version générique afin de pouvoir mettre à jour lorsque vous le souhaiterez.

Pour installer le client bm-cli, installer le paquet dédié sur le serveur, disponible à partir de BlueMind 3.5.10 :

aptitude install bm-cli
yum install bm-cli

Aucun redémarrage n'est nécessaire, l'outil est immédiatement effectif.

Fonctionnement

Les commandes

Les commandes sont passées via un terminal directement sur le serveur, connecté en ssh par exemple.

Par exemple, une commande permettant de connaître les carnets d'adresses d'un utilisateur :

root@mail:~# bm-cli contact list jdoe@bluemind.loc
{"owner":"05E25C2C-3643-4ED2-997C-4A4F39933D18","uid":"book:Contacts_05E25C2C-3643-4ED2-997C-4A4F39933D18","name":"My contacts"}
{"owner":"05E25C2C-3643-4ED2-997C-4A4F39933D18","uid":"book:CollectedContacts_05E25C2C-3643-4ED2-997C-4A4F39933D18","name":"Collected contacts"}
{"owner":"05E25C2C-3643-4ED2-997C-4A4F39933D18","uid":"408C741B-3FDC-44B6-B1FD-19E79404BFCF","name":"Perso"}

Obtenir de l'aide

Les commandes sont enrichies au fur et à mesure des versions de BlueMind. Il se peut donc que vous ayez plus (ou moins) de commandes selon la version de votre installation.

Il est donc important de se référer à la commande "bm-cli help" afin de savoir quelles sont celles que vous pouvez utiliser.

Par exemple :

# bm-cli help
usage: bm-cli <command> [<args>]

The most commonly used bm-cli commands are:
    calendar      calendar task(s)
    contact       contact task(s)
    help          Display help information
    maintenance   maintenance task(s)
    tick          tick task(s)
    user          user task(s)

See 'bm-cli help <command>' for more information on a specific command.

L'installation, ici en 3.5.11, bénéficie ici des commandes calendar, contact et user qui n'étaient pas présentes sur les versions antérieures.

À tout moment vous pouvez obtenir de l'aide sur une commande, une sous-commande, son usage et ses options au moyen de "help".

Par exemple "help maintenance" vous présente la commande maintenance et ses diverses actions possibles :

# bm-cli help maintenance
NAME
        bm-cli maintenance - maintenance task(s)

SYNOPSIS
        bm-cli maintenance
        bm-cli maintenance consolidateIndex [--workers <workers>]
        bm-cli maintenance list [--workers <workers>]
        bm-cli maintenance repair [--dry] [--workers <workers>]

COMMANDS
        With no arguments, List directory entries

        list
            List directory entries
...

Pour obtenir plus de détail sur une sous-commande, il vous suffit de taper la sous-commande à son tour, ici pour obtenir l'aide concernant l'opération de consolidation d'index :

# bm-cli help maintenance consolidateIndex
NAME
        bm-cli maintenance consolidateIndex - Consolidate a mailbox index

SYNOPSIS
        bm-cli maintenance consolidateIndex [--workers <workers>] [--] <target>

OPTIONS
        --workers <workers>
            run with X workers
...

Exemples pratiques

Administration & Maintenance

Effectuer un check&repair global

La commande suivante permet d'effectuer l'opération "valider et réparer" sur l'ensemble des utilisateurs du domaine en utilisant 4 threads :

bm-cli maintenance repair domain.net --numworkers 4

Modifier le mot de passe admin0

Pour diverses raisons, techniques ou pratiques (en cas de perte, par exemple), il peut être utile de modifier le mot de passe de l'utilisateur admin0 sans avoir à se loguer dans BlueMind.

La commande suivante permet de le faire sans connaître l'ancien mot de passe :

bm-cli user update admin0@global.virt --password "NewPassword"

Mettre à jour la configuration tick

Lorsque l'outil de monitoring Bm-Tick est installé, il est possible d'effectuer des tâches d'administration sur celui-ci. Par exemple, vous pouvez redéployer la configuration sur l'ensemble des serveurs du domaine avec la commande suivante :

# bm-cli tick reconfigure

L'option --dry permet de tester la commande : l'opération est juste simulée

# bm-cli tick reconfigure --dry

Gestion des utilisateurs

Supprimer les utilisateurs archivés (suspendus) du domaine

La commande "bm-cli user" sera disponible avec BlueMind 3.5.11.

Les commandes peuvent être couplées afin d'effectuer plusieurs opérations en une seule fois.

Par exemple, avec la commande ci-dessous on recherche les adresses emails des utilisateurs suspendus :

bm-cli user get domain.loc --archived --display "email"

Il est alors possible de coupler le retour de cette commande avec une commande "delete" afin de supprimer les utilisateurs retournés :

bm-cli user get domain.loc --display "email" | jq -r '.email' > /tmp/archived.txt
while read account; do bm-cli user delete --dry $account ;done < /tmp/archived.txt

Appliquer un quota à tous les utilisateurs qui n'en ont pas

Pour cela, nous avons besoin de plusieurs commande qui seront ensuite regroupées en une seule :

#récupérer la liste des utilisateurs avec leur quota :
bm-cli user get domain.loc --display 'email quota'
#filtrer sur les utilisateurs ayant un quota null :
bm-cli user get domain.loc --display 'email quota' |grep null
#l'outil "jq" nous aidera ensuite à extraire l'email de chaque ligne retournée :
jq -r '.email'
#enfin, pour chaque ligne nous appliquerons la commande de mise à jour du quota (ici un quota de 80Mo) :
bm-cli user update --quota "81920" $1

Ainsi, la commande finale pour réaliser cela en une seule ligne de commande :

bm-cli user get domain.loc --display 'email quota' |grep null|jq -r '.email'| xargs -n1 bm-cli user update --quota "81920" $1

L'exécution n'émet pas de retour sur la console, or cela peut s'avérer long à s'exécuter ; il convient donc de patienter jusqu'à ce que le prompt rende la main.

Pour vérifier que tout se passe bien, on peut en premier lieu récupérer la liste des utilisateurs :

bm-cli user get domain.loc --display 'email quota' |grep null

Si celle-ci est importante, on peut rajouter l'option "-p4" afin d'exécuter la commande avec 4 threads en parallèle :

bm-cli user get domain.loc --display 'email quota' |grep null|jq -r '.email'| xargs -n1 bm-cli user update --quota "81920" $1 -p4

Pendant l'attente, on peut ainsi vérifier dans la console d'administration l'onglet messagerie d'un utilisateur de temps en temps, en les prenant dans l'ordre de la liste : le nouveau quota est visible et effectif dès que la commande le concernant est passée.

Opérations sur les calendriers

Exporter l'ensemble des calendriers d'un utilisateur

Dans le cadre d'un départ en vue de pouvoir les réimporter chez d'autres utilisateurs on veut exporter l'ensemble des calendriers d'un utilisateurs :

bm-cli calendar export --output-directory /home/user/export/cals user@domain.net 	#exporte tous les calendriers de l'utilisateur dans le dossier /home/user/export/cals

NB : cette commande est disponible à partir de BlueMind 3.5.13

On pourra ensuite les réimporter soit individuellement, soit en créant une boucle plus complexe sur les calendriers d'un autre utilisateur et le dossier d'export grâce à la commande d'import suivante :

bm-cli calendar import user@domain.net --calendarUid calendar:Default:A1B2C3D4E5F6Z --ics-file-path /tmp/user_default.ics --dry			#importe les événements du fichier user_default.ics dans le calendrier par défaut de user@domain.net

Exporter les calendriers de tous les utilisateurs

Dans une optique de migration ou de sauvegarde, on souhaite exporter et sauvegarder tous les calendriers de tous les utilisateurs au format ICS.

Cette opération n'est pas réalisable en une seule commande, néanmoins il est possible de réaliser une boucle récupérant l'ensemble des utilisateurs du domaine puis en lançant l'export de leurs calendriers (voir ci-dessus) :

bm-cli user get domain.net --display 'email' |grep -v null|jq -r '.email' > /tmp/allUser.domain.net
while read account; do bm-cli calendar export  --output-directory /tmp/export/cals $account;done < /tmp/allUser.domain.net

Opérations sur les contacts

Exemple de procédure pour nettoyer le carnet des collectés d'un utilisateur puis transférer les contacts vers son carnet personnel (en testant au préalable l'import) :

root@mail:~# bm-cli contact list jdoe@bluemind.loc
{"owner":"05E25C2C-3643-4ED2-997C-4A4F39933D18","uid":"book:Contacts_05E25C2C-3643-4ED2-997C-4A4F39933D18","name":"My contacts"}
{"owner":"05E25C2C-3643-4ED2-997C-4A4F39933D18","uid":"book:CollectedContacts_05E25C2C-3643-4ED2-997C-4A4F39933D18","name":"Collected contacts"}
{"owner":"05E25C2C-3643-4ED2-997C-4A4F39933D18","uid":"408C741B-3FDC-44B6-B1FD-19E79404BFCF","name":"Perso"}
root@mail:~# bm-cli contact deduplicate jdoe@bluemind.loc --addressbook-uid book:CollectedContacts_05E25C2C-3643-4ED2-997C-4A4F39933D18
2 were removed out of 35
root@mail:~# bm-cli contact export jdoe@bluemind.loc --vcf-file-path /tmp/jdoe-collected.vcf --addressbook-uid book:CollectedContacts_05E25C2C-3643-4ED2-997C-4A4F39933D18
addressbook book:CollectedContacts_05E25C2C-3643-4ED2-997C-4A4F39933D18 of jdoe@bluemind.loc was exported
root@mail:~# bm-cli contact import jdoe@bluemind.loc --vcf-file-path /tmp/jdoe-collected.vcf --addressbook-uid 408C741B-3FDC-44B6-B1FD-19E79404BFCF --dry
DRY : AddressBook 408C741B-3FDC-44B6-B1FD-19E79404BFCF of jdoe@bluemind.loc was imported
root@mail:~# bm-cli contact import jdoe@bluemind.loc --vcf-file-path /tmp/jdoe-collected.vcf --addressbook-uid 408C741B-3FDC-44B6-B1FD-19E79404BFCF
AddressBook 408C741B-3FDC-44B6-B1FD-19E79404BFCF of jdoe@bluemind.loc was imported
root@mail:~# bm-cli contact reset jdoe@bluemind.loc --addressbook-uid book:CollectedContacts_05E25C2C-3643-4ED2-997C-4A4F39933D18
Addressbook book:CollectedContacts_05E25C2C-3643-4ED2-997C-4A4F39933D18 of jdoe@bluemind.loc was reset

Maintenance

L'outil bm-cli permet d'effectuer des opérations de maintenance sur les utilisateurs, comme par exemple :

bm-cli maintenance repair user@domain.net			#réparer l'utilisateur user@domain.net
bm-cli maintenance repair domain.net --numworkers 4	#réparer l'ensemble des utilisateurs du domaine en utilisant 4 threads
bm-cli maintenance consolidateIndex user@domain.net	#consolider l'index de l'utilisateur user@domain.net
bm-cli maintenance consolidateIndex domain.net --from 0 --size 100 #traite les 100 premiers utilisateurs retournés
bm-cli maintenance consolidateIndex domain.net --from 101 --size 50 #traite les 50 utilisateurs suivants
bm-cli maintenance consolidateIndex domain.net --match '[a-c].*' # traite les entités commencant par a, b ou c

Installation et mise à jour

La souscription donnant accès aux mises à jour automatisées de BlueMind, elle donne aussi accès à des opérations supplémentaires du client bm-cli pour celles-ci.

Ces opérations étant sensibles et risquées, ce sont des commandes à réserver à une utilisation par des administrateurs avancés.

Pour disposer de ces commandes, il est nécessaire d'installer le plugin dédié :

apt install bm-plugin-cli-setup

Commandes

La commande supplémentaire "setup" est disponible dès l'installation du plugin :

bm-cli help setup	#obtenir de l'aide sur les arguments disponibles et leur utilisation
bm-cli setup install --external-url bluemind.domain.net --domain domain.net --sw-pass Passw0rd
bm-cli setup install --external-url bluemind.domain.net --domain domain.net --sw-pass Passw0rd --set-contact admin@domain.net --reinstall
bm-cli setup upgrade #lance la procédure de mise à jour post-installation en lieu et place du déroulement de l'url https://<domain.net>/setup via un navigateur
  • --external-url : url externe du BlueMind
  • --domain : domaine
  • --set-contact : permet de positionner l'adresse de messagerie par défaut pour les notifications de l'expiration de la souscription
  • --sw-pass : permet de positionner le mot de passe de l'admin pour le setupwizard

Procédure de mise à jour

Pour réaliser une mise à jour de l'installation en ligne de commande au moyen de l'outil bm-cli, la procédure suit le même déroulement que pour une mise à jour classique :

  1. Préparation de la mise à jour :
    NB : cette commande est disponible à partir de la version 3.5.14
    La commande "bm-cli setup" permet de paramétrer la version vers laquelle on souhaite mettre à jour.
    • saisir la commande suivante pour mettre à jour dans la dernière version disponible :

      bm-cli setup version latest
    • pour mettre à jour dans une version particulière, passer le numéro de la version en paramètre :

      bm-cli setup version 3.5.14-2

      NB : l'utilisation du numéro de version majeure ("3.5" ou "4" par exemple) aura les mêmes effets que l'option "latest" : la dernière version mineure disponible de celle-ci sera installée

    • pour bloquer la version et empêcher les mises à jour dans une version supérieure :

      bm-cli setup version current
  2. Mettre à jour les paquets :

    Si vous souhaitez limiter le temps d'interruption des services, vous pouvez passer la commande de mise à jour avec l'option "download-only" afin dans un premier temps de ne faire que télécharger l'ensemble des paquets.

    N'entrainant pas d'interruption ni de ralentissement des services, cette action peut être réalisée à n'importe quel moment de la journée ou de la nuit.

    On pourra ensuite lancer au moment le plus opportun la commande "upgrade" de mise à jour effective des paquets, qui entrainera donc une coupure de service plus réduite.

    ## Opérations réalisables serveur en production
    aptitude update
    aptitude --download-only upgrade
    
    ## Opération passant le service en maintenance
    aptitude upgrade
    
    ## Opérations réalisables serveur en production
    yum makecache
    yum --downloadonly upgrade
    
    ## Opération passant le service en maintenance
    yum upgrade
  3. Lancer la procédure de mise à jour :

    bm-cli setup upgrade