Wetty : un terminal dans ton navigateur

J’avais déjà fait un article sur GateOne, il y a un moment déjà. Mais celui-ci était plutôt lourd et difficile à installer.

wetty

Et la dernièrement je suis tombé sur Wetty, une web app codée en NodeJS permettant d’avoir un terminal dans le navigateur !

Idéal pour pouvoir accéder à son serveur depuis le boulot quand tous les ports sont bloqués 😉

Du coup, j’ai créé une petite image Docker dont voici le dockerfile :

FROM alpine:edge

RUN apk --update add git nodejs python build-base openssh-client

WORKDIR /usr/share/webapps

RUN git clone https://github.com/krishnasrinivas/wetty && \
    cd wetty && \
    npm install

RUN apk del build-base

WORKDIR /usr/share/webapps/wetty

RUN addgroup seuf
RUN adduser -G seuf -h /home/seuf -s /bin/ash -D seuf

RUN echo "seuf:PassWordSecretAChanger" | chpasswd

RUN chown -R seuf:seuf /home/seuf/.ssh

CMD node app.js -p 3000

Ensuite je rajoute une petite section wetty dans mon docker compose :

  wetty:
    image: seuf/wetty
    hostname: wetty
    container_name: ssh
    expose:
      - "3000"
    restart: always

Et hop, grâce à Traefik j’ai un client web ssh dans mon terminal en https !

Je n’ai plus qu’à me connecter dessus pour atterrir dans un conteneur Alpine Linux. Je peux ensuite rebondir en ssh sur n’importe quel autre serveur ssh.

Ansible pour déployer des agents Zabbix + auto-registration

ansible_logo-360x288+ zabbix_logo_500x131

Depuis quelques temps, j’utilise Ansible au boulot, et je doit dire c’est un outil super classe !

Je vais décrire ici comment déployer des agents Zabbix sur un ensemble de serveurs grâce à Ansible.

Rôle zabbix_agent

Voici le playbook zabbix_agent :

zabbix_agent.yml

---
- hosts: all:!localhost

  roles:
    - role: zabbix_agent

roles/zabbix_agent/task/main.yml

---
- name: "[zabbix_agent - linux] Installation agent zabbix"
  yum: name={{ item }} state=present
  with_items:
    - "zabbix-2.4.2-1.el6.x86_64.rpm"
    - "zabbix-agent-2.4.2-1.el6.x86_64.rpm"
  sudo: yes

- name: "[zabbix_agent - linux] Configuration de l'agent zabbix"
  template:
    src: "etc/zabbix/zabbix_agentd.conf.j2"
    dest: "/etc/zabbix/zabbix_agentd.conf"
    mode: 0644
  register: zabbix_config_updated
  sudo: yes


- name: "[zabbix_agent - linux] Demarrage de l'agent"
  service: name="zabbix-agent" state="restarted"
  when: zabbix_config_updated|changed
  sudo: yes

Il est bien sur possible d’étendre ce rôle pour qu’il puisse déployer des agents sur d’autres types de serveur (debian, aix, etc..)

roles/zabbix_agent/templates/etc/zabbix/zabbix_agentd.conf.j2

---
LogFileSize=0
Server={{ zabbix_server }}
ServerActive={{ zabbix_server }}
Hostname={{ inventory_hostname }}
HostMetadata={{ zabbix_metadata if zabbix_metadata is defined else "" }},{{ ansible_system }}
Include=/etc/zabbix/zabbix_agentd.d/

roles/zabbix_agent/vars/main.yml

---
zabbix_server: "IP DU SERVEUR ZABBIX"

Configuration Zabbix

Host Groups

Il faut d’abord créer des hosts groups dans Zabbix pour pouvoir « ranger » les équipements.
Par exemple, créer un host group « Recette » dans lequel on va ranger tous les serveurs de recette.

Actions

Une étape indispensable avant de lancer le playbook zabbix_agent est de configurer les règles d’auto-registration dans Zabbix.
Pour cela, aller dans le menu Config->Actions et sélectionner « auto-registration » dans le menu déroulant.
Puis, cliquer sur créer une nouvelle règle.

Dans le premier onglet Action, choisir un nom sympa pour cette règle. Par exemple « Linux auto-registration Recette »
Dans le second onglet Conditions, choisir les options « host metadata » like « recette » et host metadata like « linux »
Dans le troisième onglet Operations, choisir :

  • Add Host
  • Add host to host group Recette
  • Link host to template « Template OS Linux »

Lancement du playbook

Enfin, il ne reste plus qu’à lancer le playbook zabbix_agent en lui spécifiant le fichier d’inventaire de recette et les options zabbix_metadata qui vont bien :

ansible-playbook zabbix_agent.yml -i inventory/recette --extra-vars="zabbix_metadata=Recette"

Et voila !
Si tout se passe bien ansible va déployer un agent zabbix sur le serveur, configurer celui-ci avec la bonne IP du serveur zabbix et les méta données qu’on a fourni en paramètres.
Ensuite, le serveur Zabbix va auto ajouter les équipements en les classant dans les bons groupes et y associer les bons templates.

Petite astuce :
* Ne pas hésiter à créer plein de groupes zabbix pour ranger les équipements (un host peut bien évidement appartenir à plusieurs groupes)
* Utiliser le bouton « Cloner » dans la configuration des actions pour créer plein de règles en fonction des méta données (Linux + Recette, Aix + Recette, Linux + Préprod, Aix + Préprod, Linux + préprod + backup, etc…)

Gate One

 

J’avais vu une news sur le fameux blog de Korben qui parlait d’un client ssh en web.

Du coup, j’me suis motivé pour l’installer sur mon ptit serveur et voir ce que ça donne.

C’est vachement cool, ça permet d’avoir accès à un terminal depuis n’importe ou, (pour peut que le méchant proxy du taf n’ai pas une #%$& de white list SSL).

C’est open Source, et c’est codé en python.

Toutes les infos sont sur le site officiel !