[Hack] Mettre à jour nodeJS sur AWS Elastic Beanstalk

ElasticBeanstalk_Benefit_Productivity

Pour les besoins d’un projet, j’ai eu besoin d’utiliser nodeJS 6.x sur AWS. La dernière version LTS étant la 4.x, il me fallait trouver un moyen pour permettre cela.
Le détournement que j’ai trouvé, consiste en le fait d’installer nodeJS de manière classique avant de créer un lien symbolique vers le binaire utilisé par AWS.
Pour cela, il faut créer un fichier .ebextensions/01-node.config

Fixer la version

Tout d’abord, il faut une configuration permettant de fixer la version utilisée, afin d’éviter qu’elle se mettre à jour et que nos liens symboliques ne soient plus correctes.

  1. option_settings:
  2.     - namespace: aws:elasticbeanstalk:container:nodejs
  3.       option_name: NodeVersion
  4.       value: "4.4.3"
option_settings:
    - namespace: aws:elasticbeanstalk:container:nodejs
      option_name: NodeVersion
      value: "4.4.3"

Installer nodeJS

On va installer nodejs, mais également les outils de compilation de base permettant d’installer les modules npm développés en C++
Dans le cas où le binaire /usr/bin/node existe, on ne lance pas les commandes.

  1. commands:
  2.     100-node-script-installer:
  3.         command: "curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -"
  4.         test: "[ ! -x /usr/bin/node ]"
  5.     200-install_nodeJS:
  6.         command: "yum -y install nodejs gcc-c++ make"
  7.         test: "[ ! -x /usr/bin/node ]"
commands:
    100-node-script-installer:
        command: "curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -"
        test: "[ ! -x /usr/bin/node ]"
    200-install_nodeJS:
        command: "yum -y install nodejs gcc-c++ make"
        test: "[ ! -x /usr/bin/node ]"

Remplacer les binaires AWS EBS

On va faire une copie au cas où, elle va également nous servir pour vérifier que le binaire n’a pas déjà été remplacé.

  1. commands:
  2.     300-replace-node:
  3.         command: "mv node node.old && ln -s /usr/bin/node node"
  4.         cwd: "/opt/elasticbeanstalk/node-install/node-v4.4.3-linux-x64/bin"
  5.         test: "[ ! -x /opt/elasticbeanstalk/node-install/node-v4.4.3-linux-x64/bin/node.old ]"
  6.     350-replace-npm:
  7.         command: "mv npm npm.old && ln -s /usr/bin/npm npm"
  8.         cwd: "/opt/elasticbeanstalk/node-install/node-v4.4.3-linux-x64/bin"
  9.         test: "[ ! -x /opt/elasticbeanstalk/node-install/node-v4.4.3-linux-x64/bin/npm.old ]"
commands:
    300-replace-node:
        command: "mv node node.old && ln -s /usr/bin/node node"
        cwd: "/opt/elasticbeanstalk/node-install/node-v4.4.3-linux-x64/bin"
        test: "[ ! -x /opt/elasticbeanstalk/node-install/node-v4.4.3-linux-x64/bin/node.old ]"
    350-replace-npm:
        command: "mv npm npm.old && ln -s /usr/bin/npm npm"
        cwd: "/opt/elasticbeanstalk/node-install/node-v4.4.3-linux-x64/bin"
        test: "[ ! -x /opt/elasticbeanstalk/node-install/node-v4.4.3-linux-x64/bin/npm.old ]"

Le script complet

Ce script devrait fonctionner directement si place dans le bon répertoire. Référez vous à la documentation en conséquence !

  1. option_settings:
  2.     - namespace: aws:elasticbeanstalk:container:nodejs
  3.       option_name: NodeVersion
  4.       value: "4.4.3"
  5. commands:
  6.     100-node-script-installer:
  7.         command: "curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -"
  8.         test: "[ ! -x /usr/bin/node ]"
  9.     200-install_nodeJS:
  10.         command: "yum -y install nodejs gcc-c++ make"
  11.         test: "[ ! -x /usr/bin/node ]"
  12.     300-replace-node:
  13.         command: "mv node node.old && ln -s /usr/bin/node node"
  14.         cwd: "/opt/elasticbeanstalk/node-install/node-v4.4.3-linux-x64/bin"
  15.         test: "[ ! -x /opt/elasticbeanstalk/node-install/node-v4.4.3-linux-x64/bin/node.old ]"
  16.     350-replace-npm:
  17.         command: "mv npm npm.old && ln -s /usr/bin/npm npm"
  18.         cwd: "/opt/elasticbeanstalk/node-install/node-v4.4.3-linux-x64/bin"
  19.         test: "[ ! -x /opt/elasticbeanstalk/node-install/node-v4.4.3-linux-x64/bin/npm.old ]"
option_settings:
    - namespace: aws:elasticbeanstalk:container:nodejs
      option_name: NodeVersion
      value: "4.4.3"
commands:
    100-node-script-installer:
        command: "curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -"
        test: "[ ! -x /usr/bin/node ]"
    200-install_nodeJS:
        command: "yum -y install nodejs gcc-c++ make"
        test: "[ ! -x /usr/bin/node ]"
    300-replace-node:
        command: "mv node node.old && ln -s /usr/bin/node node"
        cwd: "/opt/elasticbeanstalk/node-install/node-v4.4.3-linux-x64/bin"
        test: "[ ! -x /opt/elasticbeanstalk/node-install/node-v4.4.3-linux-x64/bin/node.old ]"
    350-replace-npm:
        command: "mv npm npm.old && ln -s /usr/bin/npm npm"
        cwd: "/opt/elasticbeanstalk/node-install/node-v4.4.3-linux-x64/bin"
        test: "[ ! -x /opt/elasticbeanstalk/node-install/node-v4.4.3-linux-x64/bin/npm.old ]"

Yaourt sur Archlinux ARM

Salut,

Après avoir cherché à installer Yaourt sur mon Raspberry Pi, j’ai un peu galéré à le faire, et je n’ai rien documenté à ce sujet… Ce outil étant bien pratique, voir addictif pour l’utilisateur que je suis, je me retrouve à nouveau confronté à son installation pour l’image Archlinux du cloud ARM de Online, je fais donc un petit article rapidement pour ne pas répéter à nouveau cette erreur. La méthode est donc transposable à tous les autres matériels ARM.

Lire la suite »

Générer un calendrier

vcalendar-icone-9440-128

Cette semaine, je me suis un peu désespéré de ne pas trouver une « nouvelle » façon pour générer un calendrier. Surtout, en PHP, la plupart des snipplets n’utilisent même pas l’objet DateTime.
Du coup, je me suis dit « Comment vais je générer un calendrier ? » Oui, c’est un peu basique mais ça voulait aussi dire « Sans pomper du code ».
Lire la suite »

Alertes rkhunter sur mes CT openvz

Suite à une installation vierge de debian pour mes containers virtuels Debian 7, j’ai depuis un petit moment des alertes sur RKhunter, rien d’alarmant mais sur les dizaines de CT que j’ai, ça avait tendance à spammer ma boite mail en me cachant la visibilité.

J’avais en réalité deux choses : Un problème d’io sur certains fichiers systèmes (que j’attribuerais au concept même des openvz) pour lesquels il fallait désactiver le test « os_specific ». Ainsi que le unhide.rb de RKhunter, que j’ai whitelisté. (Faudra que je me penche sur le paramètre DISABLE_UNHIDE qui doit servir à quelque chose…)

J’ai du coup fait une commande rapide permettant de fixer ça et vérifier le rapport, plus rapide que modifier les fichiers à la main !
cp /etc/rkhunter.conf /etc/rkhunter.conf.old && sed -i 's/DISABLE_TESTS="/DISABLE_TESTS="os_specific /g' /etc/rkhunter.conf && echo 'SCRIPTWHITELIST=/usr/bin/unhide.rb' >> /etc/rkhunter.conf && rkhunter --propupd && rkhunter --checkall --report-warnings-only

La pratique du no-reply

point-interrogation-utilisateur-icone-6379-128

Petit billet rapide, pour alimenter un peu mon blog, suite à une décision prise sur un projet.
Il est une « mode » qui ne tarît pas, c’est celle d’utiliser des adresses type no-reply@mondomaine.tld pour envoyer des newsletters ou autres mails transactionnels d’un site… Est ce vraiment une bonne pratique ?
Lire la suite »

Mettre à jour Mint 14 Nadia vers Mint 15 Olivia

Une nouvelle version de Linux Mint est sortie le 29 mai. Au programme nouvelles version d’un peu tout… Rien d’extraordinaire.
Petit mémo rapide pour mettre à jour les dépots et upgrade linux Mint.
Lire la suite »

Bien sécuriser les mots de passe de sa base de donnée

especes-monnaie-coffre-fort-voute-icone-8301-128

Un ami m’a demandé il y a quelques mois, quelles pratiques je conseillais en matière de sécurisation d’un compte utilisateur. Il est vrai qu’en ce moment on parle souvent des mots de passe que choisissent les utilisateurs, qui sont sensibles au bruteforce et aux attaques par dictionnaire… C’est bien vrai, mais ça éloigne la responsabilité du développeur de bien sécuriser un mot de passe. Pourtant, cette responsabilité existe. Je ne parlerais pas ici de double authentification, bien que fortement recommandée.
Lire la suite »

Installer MariaDB

Mariadb-seal-shaded-browntext-alt

Hier, je me suis dit : et si je commençais par installer mariaDB sur mon environnement local, afin de soulever les lièvres avant une mise en production ?

Le but était de voir si l’utilisation était aussi trivial qu’il en est question sur la toile.
En effet, c’est très simple, cependant j’ai noté un problème majeur…
Lire la suite »

[Symfony2][FOSUserBundle] Se connecter via l’adresse mail

symfony

Dans le cadre du développement d’un site pour un client, j’ai du adapter FOSUser pour une utilisation sans username. En gros, il fallait que je me connecte en utilisant l’adresse mail 🙂 Lire la suite »

[Windows XP Unattempt] Windows XP Coccinelle (v4)

Qu’est ce qu’une version «Unattempt» ?

Une version «Unattempt» est, littéralement, une version inattendue. Généralement c’est une version non-officielle, faire par un tiers en se basant sur le moteur et en le modifiant.
Ici, Concernant Windows XP Coccinelle v4, Ils nous proposent un petit software permettant de patcher notre version de Windows XP afin de créer un .iso pour le prochain reformatage de notre windows 😛

Lire la suite »