jeudi, avril 06, 2017

OpenMediaVault sur Odroid-C2

Tout ça paraissait une bonne idée, mais ...

On dispose de 2 choix : 
  1. On utilise l'image fournie,
  2. On installe de zéro.

 Avec l'image fournie

Cette image est obsolète, et dès que l'on fait la mise ajour, patatra ...
Et c'est vraiment dur de remettre tout en place (moi, j'ai laissé tombé)

A partir de zéro

Alors je pars de mon Armbian préféré, distrib ubuntu, et ...
Le problème, c'est que les packages php5 ne sont plus dispos.
On installe des dépots alternatifs, pas complet, galère ...


Bon, Ben, on va repartir de l'image Pi3, hein ?!! ... et tout roule, même les mise a jour

Jeedom en DIY sur Odroid-C2

Bon, ben c'est pas compliqué


  1. On télécharge l'archive sur le site de jeedom.
  2. On se connecte sur l'interface web pour voir la progression, on se connecte en ssh, on fait un watch ps.
  3. On attends, on attends, on attends ...
  4. On reboot, et ... patatra, pb SQL, on fixe le mot de passe root pour mysql, on le met dans le script d'install à la place du 'cat /dev/random ...'.
  5. On relance le script, on regarde sur la page web, on attends, on attends, ...
  6. Ok !!
  7. On installe les plugins, et ...

Whaouuu !!! C'est d'la bebon !!

mercredi, juin 29, 2016

Synthèse sur les éléments du parc

Différentes configurations

Dans un premier temps, il faut distinguer les possibilités.
Le parc le plus complet se trouve chez moi.
Les services sont :
- une box domotique
- une box relai
- une passerelle d’anonymisation
- un nas + un cloud privé
- un serveur de média (+ des clients)
- un cluster docker swarm derrière la passerelle d'anomymisation

Une version allégée du parc se trouve sur un autre site, il contient :
- une passerelle d'anonymisation
- un nas + un cloud privé
- un serveur de média (+ des clients)
- un tunnel vers le swarm

Une version ultra lite, pour service seulement, correspond à un troisième parc. Il contient :
- un serveur d'anonymisation

Config matérielle

Sans rentrer dans les détails:
- passerelle d'anonymisation/serveur d'anonymisation : Raspi3
- nas+cloud : OdroidC2 ou CubieTruck
- serveur de média : Raspi2 ou Raspi3, clients : Raspi2
- cluster docker swarm : OdroidC2, Raspi1/2/3
- box domotique : Raspi2
- box relai : TCW-181CM

Plan d'adressage

- 192.168.1.1 / 192.168.1.254 : box internet
- 192.168.1.2 : passerelle d'anonymisation
- 192.168.1.3 : lxc dans passerrelle
- 192.168.1.4 : lxc dans passerrelle
- 192.168.1.30 : pms

mardi, avril 26, 2016

Installation de docker pour jeedom

Installation de docker pour jeedom

Utilisation des images de https://github.com/Cquad/jeedom

Utilisation de Ansible pour lancer puppet

Suite à l'article sur config de experience, rajout de jeedom dans /etc/ansible/hosts

Particularités de la machine jeedom

Cette machine dispo de 2 clés USB : une pour faire du ZWave et une huawei pour envoyer des SMS.

root@jeedom:/home/pi# lsusb
Bus 001 Device 005: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light
Bus 001 Device 006: ID 12d1:1446 Huawei Technologies Co., Ltd. E1552/E1800/E173 (HSPA modem)



Elle dispose aussi d'une horloge sur pile

Utiliser raspi-config pour 'enabler' le i2c, puis

root@jeedom:~# apt-get install -y i2c-tools
root@jeedom:~#  i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --               

root@jeedom:~# modprobe rtc-ds1307
root@jeedom:~# echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
root@jeedom:~# hwclock -r
Sat 01 Jan 2000 01:00:16 CET  -0.099972 seconds


éditer /etc/modules.conf et y mettre

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

snd-bcm2835
i2c-dev
rtc-ds1307



editer /etc/rc.local et y mettre

root@jeedom:~# cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
sudo hwclock -s

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

exit 0



Dans un shell,

root@jeedom:~# update-rc.d -f fake-hwclock remove
root@jeedom:~# apt-get purge fake-hwclock



 root@jeedom:~# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+195-154-10-106. 175.91.96.111    3 u  116  128  377   31.244   -1.890   0.542
*soliphium.rilyn 193.190.230.66   2 u   18  128  377   31.792   -1.956   1.080
-ntp1.warwicknet 195.66.241.3     2 u  102  128  377   39.599   -0.377   0.806
+spacys.de       131.188.3.222    2 u   22  128  377   45.889   -1.351   0.336


On voit que le plus haut stratum est 3, on va mettre la locale en 5.

Éditer /etc/ntp.conf, et ajouter, après les lignes 'server ...'


server 127.127.1.0
fudge  127.127.1.0 stratum 5
 
rebooter et vérifier


root@jeedom:~# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
-ns2.akl.telesma 202.46.178.18    2 u   25   64    1  307.642  -483.80   0.531
+usins.0x00.lv   194.29.130.252   2 u   24   64    1   81.394  -489.74   1.196
*2001:bc8:3e85:1 145.238.203.14   2 u   27   64    1   32.373  -489.97   0.943
+ntp-3.arkena.ne 138.96.64.10     2 u   26   64    1   37.703  -487.85   1.124
 LOCAL(0)        .LOCL.           5 l   36   64    1    0.000    0.000   0.001
root@jeedom:~# hwclock -r
Tue 26 Apr 2016 14:32:34 CEST  -0.631582 seconds


To be continued with 'Installation de Docker', 'Initialisation des images' et 'Puppetisation de tout ça' ...

PS(17/05/2016) : La mise en place du cluster swarm dans http://redondants-ppprod-parc.blogspot.com. Je me familiarise avec le tout, puis je retourne sous jeedom pour faire une install 'clean'. Pourquoi je veux d'abord comprendre la distribution (swarm), parce que le container docker pour mysql doit (ou plutôt peut) etre partagé par les différentes applis du parc. Aujourd'hui, la question se pose : sur experience (DWG), qui est déjà au taquet, sur OMV (OdroidC2 64b sur Armbian) qui est fraichement (donc non 'stabilisé') sur Docker, ... encore des questions d'organisation/répartition

mercredi, septembre 04, 2013

Avancées ...

L'install d'un machine en remote a fait un petit bout de chemin, je passe en ssh avec un ssh-copy-id.
J'ai vite vu que grace à puppet, le boot se fait en 5 commandes ...
donc pas très utile, mais bon, j'ai les commandes dans un script ...

Concernant les machine,
j'ai configuré glusterfs pour faire du NFS, mais c'est pas évident : il faut penser à mettre le "v3", installer rpcbind, et (tout frais) ne pas installer nfs-commn.
Je dois mettre ça dans puppet

mon monit qui check apt-cacher-ng se basait sur le contenu de /var/cache/...
C'est pas bon car si le rep n'est pas mounté, il recréer l'arbo, du coup monit trouve le fichier, meme si le mount est KO.

il faut
- mounter un /tidy/ en bind sur / pour faire un clean cd /var/cache/apt-cacher-ng/
- arreter apt-cacher sur /var/cache/apt-cacher n'est pas mounté
- verif rpcbind (a faire dans puppet et monit)
- installer mitmproxy, car polipo ne fait pas intercepting proxy
- penser a virer netbios de dnsmasq.conf

lundi, août 19, 2013

bind et puppet

      exec { "/usr/sbin/service bind9 stop":
           onlyif => ["/usr/sbin/service bind9 status", "/usr/bin/test -z \"$( /bin/grep \'^${bind_user}:x:${bind_id}:\' /etc/passwd )\""],
           before  => User["${bind_user}"],
           require => Package[bind9],
     }

     user { "${bind_user}":
           ensure => present,
           uid => "${bind_id}",
           gid => "${bind_user}",
           require => [ Exec["/usr/local/bin/uidmod.sh ${bind_id} ${bind_user}"], Group["${bind_user}"] ],
           before  => Service["bind9"],
     }

    file { "/var/lib/bind":
          mode    => "g+rwx",
          group   => "${bind_user}",
          require => Group["${bind_user}"],
          recurse => true,
     }

     file { "set superbit in /etc/bind":
          path    => "/etc/bind",
          mode    => "g+rws",
          group   => "${bind_user}",
          require => Group["${bind_user}"],
     }

     file { "/etc/bind":
          group   => "${bind_user}",
          require => File["set superbit in /etc/bind"],
          recurse => true,
     }

     file { "/etc/default/bind9":
          source  => "file:///etc/puppet/modules/common/files/bind9.default",
          require => File["/etc/bind", "/var/lib/bind"],
          notify  => Service["bind9"],
     }

mercredi, août 07, 2013

plantage de palette

La carte SD de palette est partie en erreur.

Ca arrive en fait super souvent.
L'utilisation de NOOBS est un vrai plus, puiqu'il est possible de réinstaller le système à partir du raspberry lui-meme.

Par-contre, même si la mise en place de puppet est volontaire et a pour objectif de réisntaller le système en quelques commandes. La mise en place puppet reste trop fastidieuse.

En effet, il faut, pour puppet, mettre en place le vpn, glusterfs, ...
Je dois donc faire un complément.
Ce complément ne peux etre qu'un script shell, je ne vois pas trop d'autres choses.

Je suis donc obligé de me lancer dans l'écriture de ce script.
Première question, comment va t'il etre distribué ? (en fonction, je peux déterminer son emplacement)

Je pense que je vais le mettre sur www.ppprod.net.
Le plus simple serait de faire un premier script qui monterait un nfs.
Dans un deuxième temps,  ce script lancerait un autre se trouvant sur le nfs.

bon, premier pb : pas de nfs sur nuxit.
2 possibilités : trouver un autre dépot ou recompiler
Autre solution, ne pas faire de nfs.

lundi, août 05, 2013

ajout dans crontab

ajout du nettoyage de var/log
et du ifplugd qui plante lié au vpn