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