14/02/2017

Installation de StackStorm (Brocade Workflow Composer)

Je ne sais pas si vous connaissez StackStorm, mais c’est un outil qui permet de réagir à des events provenant de sonde (nagios, sensu, twitter, chatbot) et selon un workflow, lancer une série d’actions pour résoudre un incident ou lancer l'exécution de tâches suite aux instructions d’un chatbot.
C’est en gros,le IFTTT pour Ops.
Voici un slide qui vous présentera les fonctionnalitées du produit.




Pour vous faire une idée complète du produit, je vous conseil d’aller sur le site https://stackstorm.com/ et de cliquer sur 90-DAY FREE TRIAL.
Vous recevrez une clée d’évaluation par mail.


Pour mon exemple, j’utilise une VM avec 4 vcores et 8 Go de RAM
La distrib Linux utilisé ici est Ubuntu 16.04


Conf de l'environnement:



sudo locale-gen "en_US.UTF-8"
sudo dpkg-reconfigure locales


vi /etc/environment:
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8


sudo apt-get install -y gnupg-curl
sudo apt-get install -y curl
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

sudo sh -c "cat <<EOT > /etc/apt/sources.list.d/mongodb-org-3.2.list
deb http://repo.mongodb.org/apt/ubuntu $(lsb_release -c | awk '{print $2}')/mongodb-org/3.2 multiverse
EOT"

sudo apt-get update
sudo apt-get install -y mongodb-org
sudo apt-get install -y rabbitmq-server
sudo apt-get install -y postgresql
sudo systemctl enable mongod
sudo systemctl start mongod

Installation de st2 et st2mistral (OpenStack Mistral):

curl -s https://packagecloud.io/install/repositories/StackStorm/stable/script.deb.sh | sudo bash
sudo apt-get install -y st2 st2mistral



Creation de la BD Mistral dans PostgreSQL


cat << EHD | sudo -u postgres psql
CREATE ROLE mistral WITH CREATEDB LOGIN ENCRYPTED PASSWORD 'StackStorm';
CREATE DATABASE mistral OWNER mistral;
EHD

/opt/stackstorm/mistral/bin/mistral-db-manage --config-file /etc/mistral/mistral.conf upgrade head
/opt/stackstorm/mistral/bin/mistral-db-manage --config-file /etc/mistral/mistral.conf populate



Création d'un utilisateur pour les connections SSH

sudo useradd stanley
sudo mkdir -p /home/stanley/.ssh
sudo chmod 0700 /home/stanley/.ssh



Création de la clé ssh

sudo ssh-keygen -f /home/stanley/.ssh/stanley_rsa -P ""
sudo sh -c 'cat /home/stanley/.ssh/stanley_rsa.pub >> /home/stanley/.ssh/authorized_keys'
sudo chown -R stanley:stanley /home/stanley/.ssh


Configuration de sudo

sudo sh -c 'echo "stanley    ALL=(ALL)       NOPASSWD: SETENV: ALL" >> /etc/sudoers.d/st2'
sudo chmod 0440 /etc/sudoers.d/st2

sudo sed -i -r "s/^Defaults\s+\+?requiretty/# Defaults +requiretty/g" /etc/sudoers

Initialisationsudo st2ctl start
sudo st2ctl reload
sudo st2ctl start



Création du compte d'administration de st2

Installer htpasswd

sudo apt-get install -y apache2-utils
echo "YourPassWord" | sudo htpasswd -i /etc/st2/htpasswd st2admin



Configuration de l'auth dans /etc/st2/st2.conf:


[auth]
# ...
enable = True
backend = flat_file
backend_kwargs = {"file_path": "/etc/st2/htpasswd"}
# ...


sudo st2ctl restart-component st2api


Génération d'un token pour utiliser les commandes d'admin ou l'API

st2 auth st2admin


Vous pouvez rajouter cette ligne dans votre bashrc

export ST2_AUTH_TOKEN=$(st2 auth st2admin -p YourPassWord -t)


Vérification que tout est ok

st2 action list



Installation de l'interface web

sudo apt-key adv --fetch-keys http://nginx.org/keys/nginx_signing.key
sudo sh -c "cat <<EOT > /etc/apt/sources.list.d/nginx.list
deb http://nginx.org/packages/ubuntu/ $(lsb_release -c | awk '{print $2}') nginx
EOT"
sudo apt-get update

sudo apt-get install -y st2web nginx
sudo mkdir -p /etc/ssl/st2
sudo openssl req -x509 -newkey rsa:2048 -keyout /etc/ssl/st2/st2.key -out /etc/ssl/st2/st2.crt \
-days XXX -nodes -subj "/C=FR/ST=BRETAGNE/L=RENNES/O=MyOrganisation/OU=RunTeam \
Technology/CN=$(hostname)"

sudo rm /etc/nginx/conf.d/default.conf
sudo cp /usr/share/doc/st2/conf/nginx/st2.conf /etc/nginx/conf.d/
sudo service nginx restart

Installation et configuration du package chatops
st2 rule get chatops.notify || st2 rule create /opt/stackstorm/packs/chatops/rules/notify_hubot.yaml
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y st2chatops


Allez dans votre interface d'admin de slack et créer un token. Copiez les infos dans le fichier:
/opt/stackstorm/chatops/st2chatops.env:

export HUBOT_ADAPTER=slack
export HUBOT_SLACK_TOKEN=<YourSlackToken>


Lancement du service de chatops

sudo service st2chatops start
sudo st2ctl reload --register-all



Si vous avez demandé un token pour une version trial de Brocade Workflow Composer:
curl -s https://<YourTokenYouReceivedByEmail>:@packagecloud.io/install/repositories/StackStorm/enterprise/script.deb.sh | sudo bash


Installation de Brocade Workflow Composer
sudo apt-get install -y bwc-enterprise
sudo st2ctl reload --register-all



Certains packs que vous souhaiterez installer auront besoin d'un compilateur

sudo apt-get install -y build-essential


Maintenant vous pouvez vous connecter vi https://ip_de_votre_serveur.
Le user de login est st2admin et le mdp est YourPassWord

25/08/2016

Mon chromebook et moi

Introduction

J'écris ce billet afin de partager mon retour d'expérience sur l’utilisation des Chromebooks dans mon travail ainsi que dans ma vie privé.
Rapide retour en arrière.
Depuis 2006, je fus un inconditionnel de la marque Apple pour mes workstations et laptops. De Février 2006 à Novembre 2013, j’ai eu l’opportunité d’avoir 2 imacs et 2 macbook pro. Je les utilisais pour écouter ma musique, visionner des films via l’Apple TV, programmer en Python, administrer mes serveurs via ssh, éditer mes factures et enfin, rédiger de la doc avec des softs comme OpenOffice, iWork et plein d’autres choses. Je l’avoue, j’ai même joué un peu avec Wow :)
Mais l’une de mes principale utilisation fut la création de VM VirtualBox et ensuite VMware Fusion.
Je ne compte même plus le nombre d’infra et de test que j’ai déployé et validé dessus !
Un coup de GNU/Linux Debian, Ubuntu ou Redhat, du Solaris 10 et 11, SmartOS et OmniOS.
Bref, je me disais “Tout va pour le mieux dans le meilleur des mondes”
Un soir de Novembre de 2013, je lance 4 VM sur mon Macbook Pro 2011. Ca chauffe un peu, mais rien de méchant et là… écran rouge !
WTF ??!!
Rien à faire… la pauvre bête était morte !
Je fonce le lendemain direction l’Apple support le plus proche, où l’on m’informe que la garantie de mon AppleCare est terminé depuis moins de trois semaines...
Devis des réparations ? 990 euros.
Pour une machine de quasi 3000 euros, les boules !
A cette époque, mes affaires étaient loins d’êtres bonnes.
Je n’avais pas le budget pour investir dans une nouvelle machine Apple.
Pourtant j’avais vraiment besoin d’avoir un navigateur web et un émulateur de terminal.
Un an plus tôt, mon plus jeune frère m’avait fait tester un Chromebook HP 11”
J’avais trouvé la chose pas trop mal pour ce tarif.
Me voici donc dans un magasin Boulanger sur Rennes où je dépense moins de 400 euros dans l’achat d’un HP ChromeBook 14”
Je n’ai jamais regretté cet investissement car cette machine ne chauffe pas, ne fais pas de bruit, et 9h d’autonomie sur batterie.
Depuis 3 semaines, je possède un Chromebook Pixel (acheté d'occaz) pour la qualité de son moniteur et le rétroéclairage du clavier, mais au final, mise à part la matrice du moniteur, je préfère mon ancien HP Chromebook 14 :p
Je pense que d’ici fin Octobre, je vais me laisser tenter par le dernier Chromebook de chez Asus.

Le cloud et la mobilité: La raison qui a fait que je suis resté avec un Chromebook

Au fil des semaines, j’ai été incroyablement surpris par cette petite machine.
Moi qui utilisait une machine doté d’un processeur core i7, ayant 16 Go de RAM, un SSD de 256 Go et un disque dur de 750 Go, je me retrouvais avec un laptop tournant sur un Intel Celeron, 4 Go de RAM et 16 go de stockage….
Dans mon esprit, ce n’était qu’une solution temporaire.
Pourtant, depuis aucun regret et je ne pense pas retourner sur un mac.
Alors pourquoi ?
Tout simplement car j’ai trouvé des alternatives aux outils que j’utilisais sur Mac OS X et que je n’avais besoin que d’un client SSH et un navigateur web.
Autre point, dans le cadre de mon activité professionnelle, j’utilise différents providers cloud comme Google Cloud , Vultr et Scaleway. J’ai eu quelques serveurs dédiés chez Online ainsi que chez OVH SoYouStart (oui désormais, je n’utilise que des instances chez des providers cloud, j’y reviendrais au fil de ce billet)
Concernant des logiciels comme Evernote, Gimp ou Omnigraffle, j’ai trouvé des alternatives que je détails en fin de cet article.
Au final, je n’ai besoin que de Wifi ou de la connection 4G de mon téléphone et je suis directement opérationnel. J’ai eu l’occasion de voyager en Irlande, en Suisse, au Japon, en Ukraine, en Moldavie, en Lettonie et je n’ai jamais eu un problème pour travailler. Mes chromebooks ont toujours répondu à mes besoins.
Un autre point, et qui pour moi à son importance. Si je casse ou me fait voler un Chromebook, il me suffit d’en acheter un nouveau, rentrer mon ID Google et, en quelques secondes, je retrouve tout mon environnement de travail.
Pour finir, je tiens à faire taire les mauvaises langues qui racontes qu’il faut toujours être en ligne pour utiliser un Chromebook.
C’est totalement faux !
J’utilise les outils office de Google et ils fonctionnent parfaitement offline. Jamais eu de problème quand la synchronisation se lance lorsque je me reconnecte sur le Net.

Crouton ou pas crouton ???

Qu’est ce que Crouton me dirait vous ?
Hé bien c’est un chroot qui vous permet d’installer un env desktop Ubuntu sur votre Chromebook.
Je l’ai utilisé quasi depuis le début de mon utilisation d’un Chromebook.
Cela vous permet d’utiliser LibreOffice, Atom, un jdk, etc…
Ca fonctionne vraiment très bien. Vous avez le choix de switcher de display entre l’environnement desktop Unity et le bureau de Chrome OS, ou bien afficher un desktop Unity dans un onglet Chrome via le plugin xiwi.
L’unique contrainte est de passer votre Chromebook en “developer mode” et de devoir presser CTRL + D lorsque vous démarrer votre machine.
Me concernant, j’ai abandonné Crouton depuis début Août 2016.
Je souhaitais disposer d’un desktop sur une instance cloud. Pour l’avoir utilisé depuis trois ans, le client Chrome Remote Desktop est vraiment performant et stable.
Je détails tout cela dans la prochaine section.

Un environnement desktop sur le cloud

Pourquoi ?

Toujours dans le cadre de mon travail, j’ai besoin d’outils comme AnsibleTerraform, git, vim ou encore Atom.
De plus, je programme en Go et j’ai donc aussi besoin d’un environnement de développement.
J’avais tout cela sur mon Chromebook via Crouton, mais en changeant récemment de machine, j’ai pensé qu’un desktop qui soit accessible de partout serait parfait pour moi.
La solution => Utiliser une instance chez un cloud provider, installer un env X dessus et déployer mes outils. Ensuite, pour y accéder, Chrome Remote Desktop.
Donc même en déplacement chez un client, depuis une machine Mac, GNU/Linux ou Windows, je n’aurais besoin que du plugin Chrome Remote Desktop pour l’utiliser !

Choix du cloud provider

Pour héberger des webapps et des bases de données, j’utilise la plateforme Google Cloud Compute Engine.
Je ne rentrerais pas dans ce sujet sur le pourquoi j'apprécie ce cloud provider, mais dans le cadre d’un cloud desktop, je ne souhaite pas dépenser plus de 9 euros par mois et tout en ayant de bonnes performances.
Après un comparatifs des offres, j’ai fini par choisir l’offre VC1L de Scaleway.
Pour une utilisation 24/24 et 7j/7j, nous avons une instance avec 6 vcpu x86_64, 8 go de RAM et 200 Go de stockage. Imbattable. Utilisateur Scaleway depuis la première heure, je n’ai jamais eu d’incident et pas de ralentissement réseau. Normal me direz-vous, Online et Illiad powered :D
Bref, pour mon utilisation, je vise du 7j/7j et 16h/24h ce qui rentre parfaitement dans mon budget.

Installation

Créer et configurer mon cloud desktop, j’ai suivi l’excellent article ci-dessous:
L’auteur utilise Google Cloud Platform pour héberger son desktop.
Dans le cas, de scaleway, il vous suffit juste de créer une instance sur VC1L en vous rendant sur le site https://cloud.scaleway.com.
Screenshot 2016-08-25 at 10.55.48.png
En suivant la doc de l’article indiqué plus haut, vous aurez un desktop en remote.
Screenshot 2016-08-25 at 11.04.40.png
Important: Je vous invite à configurer Iptables sur votre instance pour filtrer l’ensemble du trafic entrant sur tous les ports TCP/UDP et n'autoriser que le trafic entrant les ports TCP 22,5901 (le temps de la conf par VNC),443 et 5222 (pour Chrome Remote Desktop)

Applications sur mon Chromebook


Catégorie d’application
Mac OS X
Chrome OS
Suite bureautique
LibreOffice
Google Docs, Sheets, Slides
Prise de notes
Evernote
Google Keep
Fichiers
Stockage local
Google Drive & Cozy Cloud
Traitement images
Pixelmator
Emulateur de terminal
Term2
Éditeur de texte
Atom
Visio like
Omnigraffle
Edition de fichier PDF
Preview
Musique et Vidéo
iTunes / VLC
Google Play / Plex

Google Drive: Vos fichiers sur le cloud de Google. Troll or not Troll ?

Durant les derniers mois, j’ai eu quelques discussions avec mon entourage concernant l’utilisation de Google Drive.
Confier nos données à Google est quelque chose qui peut inquiéter, voir même faire peur.
Me concernant, je ne souhaite pas rentrer dans cette discussion car d’autres détaillent cette question mieux que moi.
Je vous invite donc à visionner cette vidéo de Tristan Nitot:



Au final, j’utilise Google Drive pour stocker de la doc, des images.
Etant un utilisateur de Google Docs, mes fichiers “office” sont aussi sur Google Drive.
Par contre, concernant mes factures, mes déclarations d'impôts et documents bancaire, j’utilise depuis plus d’un an Cozy Cloud.
J’ai une instance hébergé sur Vultr sur laquelle j’ai déployé mon cozy.

Conclusion

Après être passé d’un superbe Apple MacBook Pro à un HP Chromebook 14” avec Crouton,
me voici désormais en mode super minitel.
L’idée de ne plus être dépendant de mon hardware me rassure lorsque je voyage ou quand j’ai un rendez-vous chez un client.
Chrome Remote Desktop est un soft vraiment génial. Simple d’installation et d’utilisation, l’affichage est vraiment fluide, même lorsque je me retrouve dans la pampa avec une liaison Adsl pourri, du genre le DSLAM à plus de 5 km …
Lorsque je me trouve en France, mon forfait Free me permet une liaison 4g avec 50 Go de data et je n’ai aucun problème pour travailler en remote.
Et puis dans notre beau pays, nous avons la chance d’avoir de nombreux espaces de coworking avec du wifi tout bon tout beau :D
Bref, me voici convaincue à 100 %. Un navigateur web, un client ssh et Chrome Remote Display me permettent d'etre libre et efficace dans mes activitées professionnelles et personnelles.

07/08/2016

[OVH SOYOUSTART] CoreOS: Passer sur le channel beta ou alpha



En ce moment je fais pas mal de tests sur CoreOS et rkt.
Sur l'un de mes excellents serveurs SoYouStart, j'ai installé CoreOS via l'interface de gestion.
En quelques minutes, me voici avec une install de CoreOS stable.
Hors, la version de CoreOS que je souhaite tester est uniquement sur le channel Alpha de cette distrib.
N'ayant pas l'option KVM IP sur ce serveur, je ne vais pas me prendre la tête bien longtemps.
Dans le fichier /etc/coreos/update.conf se trouve le param GROUP=stable
Modifiez le par beta ou alpha selon le channel sur lequel vous souhaiteriez switcher.
Ensuite lancer la commande:
update_engine_client -update

Voici une exemple de output:

[0807/110535:INFO:update_engine_client.cc(243)] Initiating update check and install. [0807/110535:INFO:update_engine_client.cc(248)] Waiting for update to complete. LAST_CHECKED_TIME=1470582340 PROGRESS=0.000000 CURRENT_OP=UPDATE_STATUS_UPDATE_AVAILABLE NEW_VERSION=0.0.0.0 NEW_SIZE=220521637 LAST_CHECKED_TIME=1470582340 PROGRESS=0.000000 CURRENT_OP=UPDATE_STATUS_UPDATE_AVAILABLE NEW_VERSION=0.0.0.0 NEW_SIZE=220521637 LAST_CHECKED_TIME=1470582340 PROGRESS=0.000000 CURRENT_OP=UPDATE_STATUS_UPDATE_AVAILABLE NEW_VERSION=0.0.0.0 NEW_SIZE=220521637 LAST_CHECKED_TIME=1470582340 PROGRESS=0.090263 CURRENT_OP=UPDATE_STATUS_DOWNLOADING NEW_VERSION=0.0.0.0 NEW_SIZE=220521637 LAST_CHECKED_TIME=1470582340 PROGRESS=0.250744 CURRENT_OP=UPDATE_STATUS_DOWNLOADING NEW_VERSION=0.0.0.0 NEW_SIZE=220521637 LAST_CHECKED_TIME=1470582340 PROGRESS=0.481435 CURRENT_OP=UPDATE_STATUS_DOWNLOADING NEW_VERSION=0.0.0.0 NEW_SIZE=220521637 LAST_CHECKED_TIME=1470582340 PROGRESS=0.672005 CURRENT_OP=UPDATE_STATUS_DOWNLOADING NEW_VERSION=0.0.0.0 NEW_SIZE=220521637 LAST_CHECKED_TIME=1470582340 PROGRESS=0.892666 CURRENT_OP=UPDATE_STATUS_DOWNLOADING NEW_VERSION=0.0.0.0 NEW_SIZE=220521637 LAST_CHECKED_TIME=1470582340 PROGRESS=0.000000 CURRENT_OP=UPDATE_STATUS_FINALIZING NEW_VERSION=0.0.0.0 NEW_SIZE=220521637 LAST_CHECKED_TIME=1470582340 PROGRESS=0.000000 CURRENT_OP=UPDATE_STATUS_FINALIZING NEW_VERSION=0.0.0.0 NEW_SIZE=220521637 LAST_CHECKED_TIME=1470582340 PROGRESS=0.000000 CURRENT_OP=UPDATE_STATUS_FINALIZING NEW_VERSION=0.0.0.0 NEW_SIZE=220521637 Broadcast message from locksmithd at 2016-08-07 11:06:33.125079574 -0400 EDT: System reboot in 5 minutes! LAST_CHECKED_TIME=1470582340 PROGRESS=0.000000 CURRENT_OP=UPDATE_STATUS_UPDATED_NEED_REBOOT NEW_VERSION=0.0.0.0 NEW_SIZE=220521637 [0807/110636:INFO:update_engine_client.cc(193)] Update succeeded -- reboot needed.

Et enfin, un reboot et vous voici avec un CoreOS sur le channel de votre choix.