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

mercredi, juillet 31, 2013

L'ordre est donc le suivant :
- montage des HD sur les rpy.
- création des points de montage
!!!!!!!!!!!!!!!!!! OUPS !!!!!!!!!!!!!! j'ai oublié, il faut faire le vpn avant !!!!!
- définition des glfs
- premier checkout svn de puppet
( - mise en place du cron de mise a jour auto [il faut d'abord que je récupère le script])
- suppression de etckeeper (*)

La définition des glfs est ok, mon problème, c'est la mise en place automatique du tuinnel.
J'étais parti sur un lancement par script.
Je vais quand meme jeter un coup d'oeil pour le configurer dans le service, ça serrait plus pratique si ça marchait dès le run

fait.

mon /var/log est plein.
je vais rajouter des trucs dans monit

cd /var/log && find . -name '*.gz' -delete
cd /var/log && ( FILE=$( ( for f in $( find . -type f ) ; do du $f ; done ) | sort -n | tail -1 | tr -s '\t ' '  ' | cut -f2 -d' ' ) ; test -f "$FILE" && echo >$FILE )

pas encore fait

mardi, juillet 30, 2013

site.pp d'origine

node default {

     $boxap_ssid = "AndroidAP4481"
     $boxap_psk = "1234567890"
     $wlan0_ip = $ipaddress_wlan0

     case $macaddress_eth0 {
     "b8:27:eb:ae:12:1d": {
        $hostn = "palette"
        $domainn = "ppprod.biz"
        $other_domainn = "ppprod2.biz"
        $arpa_domainn = "192.168.2"
        $other_arpa_domainn = "192.168.3"
        $invers_arpa_domainn = "2.168.192"
        $other_invers_arpa_domainn = "3.168.192"
        $eth0_ip = "192.168.2.1"
        $tor_nickname = "6cfdb97abb21"
        $site = "stm"
        $vpn_ip = "10.4.0.2"
        $vpn_other = "10.4.0.1"
        $vpn_other_host_fqdn = "experience.vpn"
        $vpn_other_host = "experience"
        }
     "b8:27:eb:ac:9f:fc": {
        $hostn = "experience"
        $domainn = "ppprod2.biz"
        $other_domainn = "ppprod.biz"
        $arpa_domainn = "192.168.3"
        $other_arpa_domainn = "192.168.2"
        $invers_arpa_domainn = "3.168.192"
        $other_invers_arpa_domainn = "2.168.192"
        $eth0_ip = "192.168.3.1"
        $tor_nickname = "6cfdb97abb9a"
        $site = "tln"
        $vpn_ip = "10.4.0.1"
        $vpn_other = "10.4.0.2"
        $vpn_other_host_fqdn = "palette.vpn"
        $vpn_other_host = "palette"
        }
     }

     service { "reboot":
          ensure     => running,
          hasrestart => false,
          start      => "/bin/true",
          hasstatus  => false,
          status     => "/bin/true",
          require    => Service["monit"],
     }
     exec { "hostname ${hostn}":
          command => "/bin/hostname ${hostn}",
     }

     file { "/etc/hostname":
          content => $hostn,
          require => Exec["hostname ${hostn}"],
     }

     host { localhost:
          ensure => present,
          ip => "127.0.0.1",
          host_aliases => $hostn,
          require => File["/etc/hostname"],
     }

     host { "${vpn_other_host_fqdn}":
          ensure => present,
          ip => "${vpn_other}",
          host_aliases => "${vpn_other_host}",
          require => File["/etc/hostname"],
     }

     cron { "puppet apply":
          command => "mount | grep ':puppet_rpi on /etc/puppet type fuse.glusterfs (rw,' 1>/dev/null || mount /etc/puppet ; cd /etc/puppet && find . -name '*~' -delete ; /usr/bin/puppet apply /etc/puppet/manifests/site.pp",
          user    => root,
          hour    => '1-23/2',
          minute  => 0,
          require => Mount["/etc/puppet"],
     }

     cron { "apt-get update":
          command => "/usr/bin/apt-get update",
          user    => root,
          hour    => '12',
          minute  => 0,
          weekday => 1,
     }

     cron { "apt-get full update":
          command => "apt-get update && apt-get -y upgrade && apt-get -y autoremove && apt-get -y dist-upgrade && rpi-update && reboot",
          user    => root,
          hour    => 0,
          minute  => 0,
          monthday => 1,
     }
     exec { "openvpn between rpi":
          command => "/bin/bash -c 'test -f /var/run/vpn.rpi.pid -a -n \"$( ps -e | grep openvpn | grep $( cat /var/run/vpn.rpi.pid ) )\" || /data/glusterfs/.local/scripts/vpn.rpi start'",
     }


     package { [glusterfs-server,glusterfs-client,monit]:
          ensure => latest,
     }

     service { "glusterfs-server":
          ensure  => running,
          enable  => true,
          require => [ Package[glusterfs-server,glusterfs-client], Exec["openvpn between rpi"] ],
          before  => Service["monit"],
     }

     mount { "/etc/puppet":
          atboot  => false,
          device  => "${vpn_ip}:puppet_rpi",
          ensure  => mounted,
          fstype  => glusterfs,
          require => Service["glusterfs-server"],
          before  => Service["monit"],
     }

     mount { "/usr/local/bin":
          atboot  => false,
          ensure  => mounted,
          device  => "/etc/puppet/scripts",
          fstype  => "none",
          options => "bind",
          require => Mount["/etc/puppet"],
          before  => Service["monit"],
     }

     file { "/etc/puppet/scripts/vpn.rpi.${site}.monit":
          content => template("scripts/vpn.rpi.monit.erb"),
          require => Mount["/etc/puppet"]
     }

     file { "/etc/monit/conf.d/vpn.rpi.monit":
          ensure  => "/data/glusterfs/.local/scripts/vpn.rpi.${site}.monit",
          require => [ Package[monit], File["/etc/puppet/scripts/vpn.rpi.${site}.monit"] ],
          notify  => Service["monit"],
     }
     file { "/etc/monit/monitrc":
          source  => "file:///etc/puppet/modules/common/files/monitrc",
          mode => 0600,
          require => [ Package[monit], File["/etc/monit/conf.d/vpn.rpi.monit"] ],
          notify  => Service["monit"],
     }

     service { "monit":
          ensure  => running,
          enable  => true,
          require => [ Package[monit], File["/etc/puppet/scripts/vpn.rpi.${site}.monit" ] ],
     }

     file { "/etc/rc.local":
          source  => "file:///etc/puppet/modules/common/files/rc.local",
          mode => 0755,
     }

     file { "/etc/network/interfaces":
          content => template("network/interfaces.erb"),
     }
     # notify => Service[reboot],

}

node common inherits default {

     exec { "ping rpi vpn":
          command => "/bin/ping -qc 1 ${vpn_ip}",
          require => Exec["openvpn between rpi"],
     }


     package { [bind9,squid3,privoxy,tor,tor-arm,dnsproxy,iptables]:
             ensure => latest,
     }

     file { "/root/iptables":
          content => template("common/iptables.erb"),
     }


     $anonymous_id = 1000
     $anonymous_user = "anonymous"

     exec { ["/usr/local/bin/gidmod.sh ${anonymous_id} ${anonymous_user}","/usr/local/bin/uidmod.sh ${anonymous_id} ${anonymous_user}"]:
          require => Mount["/usr/local/bin"],
     }
     group { "${anonymous_user}":
           ensure => present,
           gid => "${anonymous_id}",
           require => Exec["/usr/local/bin/gidmod.sh ${anonymous_id} ${anonymous_user}"],
     }

     user { "${anonymous_user}":
           ensure => present,
           uid => "${anonymous_id}",
           gid => "${anonymous_user}",
           home => "/tmp",
           require => [ Exec["/usr/local/bin/uidmod.sh ${anonymous_id} ${anonymous_user}"], Group["${anonymous_user}"] ],
           before  => Exec["do iptables"],
     }

     exec { "do iptables":
          command => "/sbin/iptables-restore
          require => File["/root/iptables"],
     }



     $bind_id = 116
     $bind_user = bind

     exec { ["/usr/local/bin/gidmod.sh ${bind_id} ${bind_user}","/usr/local/bin/uidmod.sh ${bind_id} ${bind_user}"]:
          require => [ Mount["/usr/local/bin"], Package[bind9] ],
     }

     group { "${bind_user}":
           ensure => present,
           gid => "${bind_id}",
           require => Exec["/usr/local/bin/gidmod.sh ${bind_id} ${bind_user}"],
     }

     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 { "/etc/bind/zones.rfc1918":
          content => template("common/zones.rfc1918.erb"),
          notify  => Service["bind9"],
          require => [ Package[bind9], Exec["ping rpi vpn"] ],
     }
     file { "/etc/bind/named.conf.options":
          content => template("common/named.conf.options.erb"),
          notify  => Service["bind9"],
          require => [ Package[bind9], File["/etc/bind/zones.rfc1918"] ],
     }

     file { "/etc/bind/db.${domainn}":
          content => template("common/db.domainn.erb"),
     }
     file { "/etc/bind/db.${arpa_domainn}":
          content => template("common/db.arpa_domainn.erb"),
     }
     File["/etc/bind/db.${domainn}","/etc/bind/db.${arpa_domainn}"] {
          ensure => present,
          notify  => Service["bind9"],
          require => File["/etc/bind/named.conf.options"],
     }

     file { "/etc/bind/named.conf.local":
          content => template("common/named.conf.local.erb"),
          notify  => Service["bind9"],
          require => [ Package[bind9], Exec["ping rpi vpn"],
                  File["/etc/bind/named.conf.options",
                        "/etc/bind/db.${domainn}",
                        "/etc/bind/db.${arpa_domainn}"] ],
     }

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

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

     service { "bind9":
          ensure  => running,
          enable  => true,
          require => File["/etc/default/bind9"],
     }

     file { "/etc/dnsproxy.conf":
          source  => "file:///etc/puppet/modules/common/files/dnsproxy.conf",
          notify  => Service["dnsproxy"],
     }
     service { "dnsproxy":
          ensure  => running,
          enable  => true,
          require => File["/etc/dnsproxy.conf"],
     }

     file { "/etc/resolv.conf":
          source  => "file:///etc/puppet/modules/common/files/resolv.conf",
          require => Service["bind9"],
     }

     $privoxy_id = 109
     $privoxy_user = privoxy

     exec { "/usr/local/bin/uidmod.sh ${privoxy_id} ${privoxy_user}":
          require => [ Mount["/usr/local/bin"], Package[privoxy] ],
     }

     user { "${privoxy_user}":
           ensure => present,
           uid => "${privoxy_id}",
           require => Exec["/usr/local/bin/uidmod.sh ${privoxy_id} ${privoxy_user}"],
           before  => [ Service["privoxy"], Exec["do iptables"] ],
     }

     file { "/var/log/privoxy":
          owner   => "${privoxy_user}",
          recurse => true,
          require => [ Package[privoxy], User["${privoxy_user}"] ],
          before  => Service["privoxy"],
          notify  => Service["privoxy"],
     }

     file { "/etc/privoxy/config":
          content => template("common/privoxy.config.erb"),
          require => [ Package[privoxy], File["/etc/resolv.conf"] ],
          notify  => Service["privoxy"],
     }

     file { "/etc/privoxy/trust":
          content => template("common/privoxy.trust.erb"),
          require => [ Package[privoxy], File["/etc/resolv.conf"] ],
          notify  => Service["privoxy"],
     }

     service { "privoxy":
          ensure  => running,
          enable  => true,
          require => [ File["/etc/privoxy/config","/etc/privoxy/trust"], Exec["do iptables"] ],
     }
     file { "/etc/monit/conf.d/privoxy":
          content => template("common/monit.privoxy.erb"),
          require => Service["privoxy"],
          notify => Service["monit"],
     }


     $squid_id = 13
     $squid_user = "proxy"

     exec { ["/usr/local/bin/gidmod.sh ${squid_id} ${squid_user}","/usr/local/bin/uidmod.sh ${squid_id} ${squid_user}"]:
          require => [ Mount["/usr/local/bin"], Package[squid3] ],
     }

     group { "${squid_user}":
           ensure => present,
           gid => "${squid_id}",
           require => Exec["/usr/local/bin/gidmod.sh ${squid_id} ${squid_user}"],
     }

     user { "${squid_user}":
           ensure => present,
           uid => "${squid_id}",
           gid => "${squid_user}",
           require => [ Exec["/usr/local/bin/uidmod.sh ${squid_id} ${squid_user}"], Group["${squid_user}"] ],
           before  => [ Service["squid3"], Exec["do iptables"] ],
     }

     mount { "/var/squid":
           device  => "LABEL=DATA-squid",
           fstype  => ext4,
           options => "defaults",
           pass    => 2,
           atboot  => true,
           ensure  => mounted,
     }
     mount { "/etc/squid3":
           device => "/var/squid/etc",
     }
     mount { "/var/log/squid3":
           device => "/var/squid/log",
     }
     mount { "/var/spool/squid3":
           device => "/var/squid/cache",
     }
     Mount["/etc/squid3","/var/log/squid3","/var/spool/squid3"] {
           fstype  => none,
           options => bind,
           require => Mount["/var/squid"],
           before  => Package[squid3],
           atboot  => true,
           ensure  => mounted,
     }

     file { "/etc/squid3/squid.conf":
          content => template("common/squid.conf.erb"),
          require => [ Package[squid3], Service["privoxy"], Mount["/etc/squid3"] ],
          notify  => Service["squid3"],
     }

     service { "squid3":
          ensure  => running,
          enable  => true,
          require => [ File["/etc/squid3/squid.conf"], Mount["/etc/squid3","/var/log/squid3","/var/spool/squid3"], User["${squid_user}"], Exec["do iptables"] ],
     }

     $tor_id = 117
     $tor_user = "debian-tor"

     exec { ["/usr/local/bin/gidmod.sh ${tor_id} ${tor_user}","/usr/local/bin/uidmod.sh ${tor_id} ${tor_user}"]:
          require => [ Mount["/usr/local/bin"], Package[tor] ],
     }

     group { "${tor_user}":
           ensure => present,
           gid => "${tor_id}",
           require => Exec["/usr/local/bin/gidmod.sh ${tor_id} ${tor_user}"],
     }

     user { "${tor_user}":
           ensure => present,
           uid => "${tor_id}",
           gid => "${tor_user}",
           require => [ Exec["/usr/local/bin/uidmod.sh ${tor_id} ${tor_user}"], Group["${tor_user}"] ],
           before  => [ Service["tor"], Exec["do iptables"] ],
     }

     file { "/etc/default/tor":
          source  => "file:///etc/puppet/modules/common/files/tor.default",
     }

     file { "/etc/tor/torrc" :
          content => template("common/torrc.erb"),
     }
     File["/etc/default/tor","/etc/tor/torrc"] {
          require => [ Package[tor], Service["squid3"] ],
          before  => Service["tor"],
          notify  => Service["tor"],
     }

     service { "tor":
          ensure  => running,
          enable  => true,
          require => [ File["/etc/default/tor", "/etc/tor/torrc"],
                       Exec["do iptables"],
                       User["${tor_user}"] ],
     }

     package { [rpcbind, nfs-common]:
          ensure => latest,
     }
     Package[nfs-common] {
          require => Package[rpcbind],
     }

     file { "/etc/exports":
          content => template("common/nfs.exports.erb"),
          before  => Service["nfs-common"],
          notify  => Service["nfs-common"],
     }

     service { "rpcbind":
          ensure  => running,
          enable  => true,
          require => Exec["do iptables"],
     }
     service { "nfs-common":
          ensure  => running,
          enable  => true,
          require => [ File["/etc/exports"],
                       Service["rpcbind"] ],
     }

     package { [apt-cacher-ng]:
             ensure => latest,
     }

     $acng_id = 112
     $acng_user = "apt-cacher-ng"

     exec { ["/usr/local/bin/gidmod.sh ${acng_id} ${acng_user}","/usr/local/bin/uidmod.sh ${acng_id} ${acng_user}"]:
          require => [ Mount["/usr/local/bin"], Package[apt-cacher-ng] ],
          before  => Service["apt-cacher-ng"],
     }
     group { "${acng_user}":
           ensure => present,
           gid => "${acng_id}",
           require => Exec["/usr/local/bin/gidmod.sh ${acng_id} ${acng_user}"],
     }

     user { "${acng_user}":
           ensure => present,
           uid => "${acng_id}",
           gid => "${acng_user}",
           require => [ Exec["/usr/local/bin/uidmod.sh ${acng_id} ${acng_user}"], Group["${acng_user}"] ],
           before  => Service["apt-cacher-ng"],
     }

     file { ["/etc/apt-cacher-ng/security.conf","/var/log/apt-cacher-ng"]:
           group => "${acng_user}",
           owner => "${acng_user}",
           recurse => true,
          require => [ Package[apt-cacher-ng], User["${acng_user}"], Group["${acng_user}"] ],
          before  => Service["apt-cacher-ng"],
          notify  => Service["apt-cacher-ng"],
     }

     file { "/etc/apt-cacher-ng/acng.conf":
          content => template("common/acng.conf.erb"),
     }

     file { "/etc/apt/apt.conf" :
          content => template("common/apt.conf.erb"),
     }

     File["/etc/apt-cacher-ng/acng.conf","/etc/apt/apt.conf"] {
          require => [ Package[apt-cacher-ng], User["${acng_user}"], Group["${acng_user}"] ],
          before  => Service["apt-cacher-ng"],
          notify  => Service["apt-cacher-ng"],
     }

     service { "apt-cacher-ng":
          ensure  => running,
          enable  => true,
          require => [ Package[apt-cacher-ng],
                  File["/etc/apt-cacher-ng/acng.conf","/etc/apt/apt.conf"],
                  Mount["/var/cache/apt-cacher-ng"] ],
     }

}
node palette inherits common {
     mount { "/var/cache/apt-cacher-ng":
           ensure => mounted,
           device => "${vpn_other_host_fqdn}:/var/apt-cacher-ng/cache",
           fstype => "nfs",
           options => "defaults",
           pass => 0,
           dump => 0,
           require => [ Exec["ping rpi vpn"], Host["${vpn_other_host_fqdn}"] ],
     }

}

node experience inherits common {
     mount { "/var/cache/apt-cacher-ng":
           ensure => mounted,
           device => "/var/apt-cacher-ng/cache",
           fstype => "none",
           options => "bind",
           pass => 0,
           dump => 0,
     }

     package { [samba4,dnsmasq]:
             ensure => latest,
     }

     file { "/etc/default/dnsmasq":
          source  => "file:///etc/puppet/modules/common/files/dnsmasq.default",
     }

     file { "/etc/dnsmasq.conf" :
          content => template("common/dnsmasq.conf.erb"),
     }

     File["/etc/default/dnsmasq","/etc/dnsmasq.conf"] {
          require => Package[dnsmasq],
          before  => Service["dnsmasq"],
          notify  => Service["dnsmasq"],
     }

     service { "dnsmasq":
          ensure  => running,
          enable  => true,
          require => [ Package[dnsmasq], File["/etc/default/dnsmasq","/etc/dnsmasq.conf"] ],
     }


}

GLFS sur rpy

DynDns a changé, il faut maintenant forcement un account. J'en ai pris un.
J'ai donc maintenant
- experience.dyndns-at-home.com
- palette.dyndns-at-home.com

1 ) experience : ip statique
2 ) palette : J'ai configuré la NEufBox pour faire du dyndns.
J'ai du configurer GANDI pour pointer sur le dns dynamique DynDns pour www.ppprod2.biz et www.ppprod.biz


Je sais que j'ai en plan le etckeeper sur
- ppprod
- experience
- palette

Je quand même sur pars sur le glfs.
En effet, je veux absolument avoir du puppet. Je ne veux pas appliquer chaque ligne sur chaque machine.

L'ordre est donc le suivant :
- montage des HD sur les rpy.
- création des points de montage
!!!!!!!!!!!!!!!!!! OUPS !!!!!!!!!!!!!! j'ai oublié, il faut faire le vpn avant !!!!!
- définition des glfs
- premier checkout svn de puppet
( - mise en place du cron de mise a jour auto [il faut d'abord que je récupère le script])
- suppression de etckeeper (*)


(*) En réfléchissant a la mise en place, je butte sur la mise en conf obligatoire du .etckeeper
Je galère tellement que je pense virer etckeeper et faire le mien
Mon idée est la meme que pour puppet :
- en cron :
1 ) ajout de ce qui ne l'est pas encore
2 ) suppression de ce qui ne l'est plus
3 ) commit auto



----------------------------------------------------------------------------------------------
vpn

apt-get install openvpn
On may:
openvpn --remote june.kg --dev tun1 --ifconfig 10.4.0.1 10.4.0.2 --verb 9
On june:
openvpn --remote may.kg --dev tun1 --ifconfig 10.4.0.2 10.4.0.1 --verb 9
----------------------------------------------------------------------------------------------

apt-get install lvm2 

   87  mkdir /data
   88  mkdir /data/local /data/remote
   90  mkdir -p /data/gluster/.local
   91  mount /dev/system/puppet.glfs.rpi /data/gluster/.local

je récupère un site.pp qui traine, je l'historise dans ce blog

http://www.gluster.org/category/ubuntu/

10.4.0.1 et .2
puppet_rpi



dimanche, juillet 07, 2013

puppet en gconf

concernant le rpy experience et palette, j'ai fait du glfs en raid1, mais sans historisation.

Il a donc la possibilité de récupérer les données, mais pas de consulter l'historique.

J'ai vu reçament sur le net des utilisateur qui ne se servait pas du master, mais qui reprennnait un checkout et qui le lançait localement.
Pour l'instant, sur exerience et palette, je fais comme ça : pas de démon.

Quand je regarde la gconf ancienne sur .net, le repo était sur .biz (palette).
Si je veux être commun a .net, experience et palette, ce n'est pas un de ces éléments qui doit être l'archiveur, ce que je pensais va donc être mis en place : backup en serveur svn.

Comme pour etc, je mettrais un svnsync sur experience et palette.

je vais mettre juste un export sur .net, avec un cron '30 */1' d'autocommit.
j'ai la chance que la patte wan sur exeprience et palette n'est pas la même : la box sur stm est en .254, celle de tln en .1, résultat, experience est en .1, et palette en .2
 je peux donc garder le glfs raid1, avec un autocommit basé sur le cron suivant : '0 /2'
je n'aurais aucun conflit.

en consultant mes archives, le chemin du svn était  http://www.ppprod.biz/svn/roottools/trunk/puppet
Je garde le nom du repo roottools

www:/etc# svn co  http://backup.ppprod.net/svn/roottools/trunk/puppet
Checked out revision 1.

rajouter run et ssl en ignore

www:/etc# cd puppet/
www:/etc/puppet# svn propedit svn:ignore .
Set new value for property 'svn:ignore' on '.'
www:/etc/puppet# svn propget svn:ignore
run
ssl

samedi, juillet 06, 2013

puppet et etckeeper

cat /etc/debian_version => 6.0.7

C'est reparti avec une squeeze !

J'installe puppet, et je reprends ma conf petit à petit.
Premier problème ... installer etckeeper, mais le plugger sur un svn distant (lequel ?)

anciennement, le svn de etc était sur experience. Est-ce judicieux ? je pense que je vais le mettre sur backup

On est donc parti pour faire un svn sur backup ;)

suivi du tuto http://www.howtoforge.com/debian_subversion_websvn

svn est déjà installlé, et etc déjà en place, oubli du ot de passe,
suivi du tuto http://notes.chpwssn.com/

commande  htpasswd -c -m /var/lib/svn/dav_svn.passwd $user_name


sur ppprod.net, install de git, subversion, git-svn

récupération du script "/usr/local/bin/etckeeper_svn_mkdir.sh", inutile : branche existante


config (on execute le contenu du puppet a la main)backup etcfetchinstall etckeeperrestore etcetckeeper commit

verif du debian_version

Bon, rien n'a marché, le fait de reprendre un svn avec contenu est une erreur. Je recrée un svn sur backup, et je recommence tout.

bon, comme d'hab, ça m'a pris 5 heures.

vous pouvez penser "quelle truffe", j'ai une petite question : pensez vous que mettre sur un svn accessible de l’extérieur votre -passwd est judicieux, pensez vous que vos .objects en gconf est judicieux ?Si vous répondez non a ces questions, vous aurez vite compris que (comme d'hab) le tutorial 'for dummies' ne correspond pas a votre besoin.

si vous voulez avoir un etckeeper sur svn distant, mailez moi ;)

Je m'attaque à puppet.
5 heures de plus : avoir un agent et un master sur la meme machine est impossible. problème de conf et conflit entre les ssl master et agent.
Le problème est que le 'puppet cert' se base sur la conf agent, sauf que la validation est faite par le master.
Encore un truc mal branlé !!!!!

Je passe par genconfig sur master avec modif du default pour la conf.
penser a commenter le genconfig


puppetmaster puppet-master[14719]: 
(/File[/var/puppet/facts]/ensure) change from directory to file failed: Could 
not set 'file on ensure: Is a directory - /var/puppet/facts

Comment out the 'factdest' setting in the [master] section of the config files
produced by the --genconfig option and it will work.

Résultat, je passe a l'agent lancé en cron. 

www:~# puppet agent --onetime --verbose --no-daemonize --ssldir /etc/puppet/ssl --server www.ppprod.net --fqdn localhost

info: Creating a new SSL key for localhost
info: Creating a new SSL certificate request for localhost
info: Certificate Request fingerprint (md5): 7E:7B:1C:93:E6:80:9C:7D:05:8E:BB:73:5C:56:8E:42

Exiting; no certificate found and waitforcert is disabled

www:/etc/puppet# puppetca --config=/etc/puppet/puppetmaster.conf -l
  "localhost" (7E:7B:1C:93:E6:80:9C:7D:05:8E:BB:73:5C:56:8E:42)
www:/etc/puppet# puppetca --config=/etc/puppet/puppetmaster.conf -s localhost
notice: Signed certificate request for localhost
notice: Removing file Puppet::SSL::CertificateRequest localhost at '/var/lib/puppet/ssl/ca/requests/localhost.pem'


www:~# puppet agent --onetime --verbose --no-daemonize --ssldir /etc/puppet/ssl --server www.ppprod.net --fqdn localhost
info: Caching certificate for localhost
info: Caching certificate_revocation_list for ca
info: Caching catalog for localhost
info: Applying configuration version '1373192799'
info: Creating state file /var/lib/puppet/state/state.yaml
notice: Finished catalog run in 0.01 seconds

pour lancer le service, penser a mettre --rundir=/etc/puppet/run dans le default.

Ca marche !

prochaine étape, puppet/manifest en gconf

reinstall de www.ppprod.net.

Je viens de lancer la reinstall de www.ppprod.net.

Je fais une install fraîche.

J'ai longtemps fait grossir un puppet qui configurait automatiquement mes serveurs.
Le problème, c'est que mon puppet est devenu tellement gros, que je me retrouve avec des dépendances cycliques dans tous les sens.

C'était devenu ingérable.

De plus, mes serveurs experience et palette était des machines "lourdes" (i.e. des serveurs avec pleins de disques et de RAM). J'ai eu des pbs de disques ET des pbs de RAM.
Je me suis donc orienté vers qqchose de plus smart : des raspberry.

J'ai en fait fait le yoyo : j'étais parti il y a 10ans sur plusieurs machines avec des services sur cette grappe. quelques années après, je e suis dit que des 'petits' services ne nécessitaient pas de machines dédiées. Je me suis tourné vers Xen. J'ai pété mes gentoo en mettant Xen, je suis allé sur Centos, jamais assez a jour pour pouvoir faire du direct-to-disc (avoir une carte contrôleur uniquement vue dans un domU), il n'y avait que la version 'pour dummy' qui fonctionnait pleinement, pour tout le reste, les noyaux n'étaient jamais assez a jour.

Je suis reparti il y a un an sur du "cluster", mais sans machine lourde : avec du rpy.

J'hésite vraiment quand à puppet. Bien entendu, je vais l'utiliser, ce soft est pour moi l'incontournable de l'administration.Je ne sais pas par-contre comment je vais le structurer de façon à être complet dans l'ordonnancement mais pas trop entremêler.
Quand au LDAP/Kerberos, je vais voir.

Dans un premier temps, il faut d'abord que je remette en place tous mes hacks sur le VDS Nerim (install de ntop sans polluer/spyer les autres [vous voulez écrouler votre VDS mais voir ce que tous les autres font : ntop est votre ami ;) ]). Il faut que je retrouve l'astuce pour insérer les modules dans un noyau Xen de façon à avoir les loop device, seul moyen d'avoir des partitions dédiées sur un VDS (par exemple si vous ne voulez pas que votre /var/log ruine votre système)

samedi, février 19, 2011

J'ai laissé tomber LDAP un moment. J'ai eu l'occasion de bosser dessus dans un autre cadre, ça ne me fait plus assez peur pour que j'en fasse une priorité.

Je bosse plutôt sur les jail, et ce que je peux faire sur mon VDS.

Ça roule à fond. aujourd’hui premier squid dans un jail (ok, trivial me direz vous). Ben pas tant que ça.
Je fais tout par puppet et monit. j'ai fait un debootstrap ubuntu 10.04 dans une debian sur le VDS. N'ayant que 4Go, je mutualise le jail, et je fais des "fake" ou les services varient.

Ça tourne bien. Je peux me re-concentrer sur les services rendu, et pas sur l'infra.

cool !

vendredi, juin 04, 2010

pas de mount d'archives

Pas de support de modules sur le VDS ...

mercredi, juin 02, 2010

pam,ladp et krb5 dans un env chrooté

Ça fait une semaine que je galère pour faire du (pam+ldap+krb5) dans un jail. Je pense avoir lu tous les articles du net sur le sujet. On peut pas vraiment dire que j'ai fais comme je le voulais, mais j'ai réussi. Maintenant, je dois essayer de continuer le planning prévu. Je pense que je vais avoir un problème de place. Il va falloir que je joue avec archivemount et autre ftpmount, voir gmailfs.

jeudi, mai 27, 2010

Avancement sur le dédié

Je vais faire un point sur ce qui reste a faire (et ce qui est fait).
De plus, je planifie la mise en place de Tor de façon différente :
plutôt que de faire [chroot 1 : squid + privoxy + tor client ] + [chroot 2 - tor relais (prio-) ]
je vais faire [chroot 1 : squid + privoxy +/] [chroot 2 - /+ tor (client,relais,sortie) +/] [chroot 3 - /+ squid + DansGuardian]
L'idée est d'autoriser la sortie, ma d'éviter les "saloperies" en mettant un contrôle parental à la sortie.

Voila donc ce qui reste à faire :
- upload du /etc et du /root de experience
- upload du www de experience, mise en conf dans cvs
- déplacement du script cvsweb dans une partie avec htaccess
- images avec proxy ntop par apache
- upload et mise en conf de /www/moinmoin de experience
- vpn, bind avec 192.168.0.1, changer le nameservice sur gandi
- mise en conf des sources qui trainent,
- créa d'une archive dédiée svn
, remplacer /svn par archivemount (sur l'archive) par autofs, exclure du tar global /var/svn
- installation d'un jail, branchement sur le ldap
http://julp.developpez.com/freebsd/authentification-ldap/
http://arthurdejong.org/cvsd/faq.html#authresponse
- mise en conf du jail dans cvs, branche pour cvsroot, export pour cvsroot
- mise en place d'un jail pour ftp , branchement sur le ldap, ajout du plug munin, ajout du scan clamav du /jail/ftp/home
- mise en place de fs zippé pour repo cvs, repo svn et pages webs et moinmoin avec archivemount (automount pour svn)
- mise en place d'un x distant, install de vnc avec proxy apache
- mise en place de chroot 1
- mise en place de chroot 2
- mise en place de chroot 3


Voila ce qui est fait :
- script de creation d'un tar dans /backup, ajout au cron
- install de cvs
- mise en conf de /etc, ajout au cron de la création d'une archive dédiée
-install de munin
- install de denyhost, install plug munin
- apache avec modwsgi
- install de cvsweb
- install de ntop et proxy par apache (partiel)
- install de moinmoin
- configuration de apache avec modwsgi
- install de clamav
- installation d'un kerberos et d'un ldap
- installation de svn, connexion sur ldap, install de websvn


Plus de gestion de projet

En allant sur la page dimitri.bouwyn.free.fr/ppprod, je me suis aperçu que ma gestion de projet avait disparu. En essayant de réactiver la page free de ppprod, ce provider me dit qu'il a tout supprimé et que les données ne sont pas récupérables.
Il va donc faloir refaire cette partie.
Je vais voir si j'ai une archive quelque part de ce site, mais je suis pessimiste.

Il semble que j'ai trouvé un truc : dotproject + ( mantis + svn )+ postnuke, le tout pluggé sur de l'autentification ldap

mardi, mai 25, 2010

sandra

Sandra a mis son site en ligne, vive la pub ! http://sandra.jorant.free.fr/

jeudi, mai 13, 2010

Suite au problème sur experience que je ne peux réparer, je passe à un serveur dédié.
Sur ce serveur, je vais installer les services suivants :
- faire un script de creation d'un tar dans /backup (renommage archive puis complet dimanche, update sinon, exclude /backup), le rajouter au cron

- install de cvs (et pserver)
=> mise en conf de /etc et /var (http://www.ird.fr/us191/spip.php?article1)
=> upload du /etc et du /root de experience
=> exclure /var/cvs du tar, rajouter au cron la création d'une archive dédiée

- install de denyhost

- apache avec modwsgi
=> upload du www de experience (pas fait), mise en conf dans cvs


- install de cvsweb

déplacement du script dans une partie avec htacces (pas fait)
- install de ntop et proxy par apache



- install de moinmoin
http://wiki.debian.org/HelpOnInstalling/BasicInstallation
https://help.ubuntu.com/9.04/serverguide/C/moinmoin.html
=> upload et mise en conf de /www/moinmoin (pas fait)


- configuration de apache
http://wiki.debian.org/HelpOnInstalling/ApacheWithModWSGI


- install de clamav
http://www.debianadmin.com/clamav-installation-and-configuration.html
=> cron du fresh, scan du /www/http et /www/moin


- mise en place de bind
http://wiki.debian.org/fr/Bind9
ATTENTION : le 192.168.0.1 ne pourra etre mis en place que quand le VPN sera fait
alors : on pourra changer le nameservice sur gandi (pas fait)
en attendant bind prend le reseau sivit




- installation d'un ldap (comme référence à la réplication locale)
http://mailman.mit.edu/pipermail/kerberos/2009-March/014685.html
http://www.linuxquestions.org/questions/linux-server-73/openldap-setup-invalid-credentials-error-49-a-798807/
https://help.ubuntu.com/9.04/serverguide/C/kerberos-ldap.html
http://techpubs.spinlocksolutions.com/dklar/kerberos.html
http://techpubs.spinlocksolutions.com/dklar/ldap.html
http://www.debian-administration.org/article/OpenLDAP_installation_on_Debian
mise en place du plug munin : http://muninexchange.projects.linpro.no/?search=&cid=11&os[5]=on


( réplication locale sur centos5 )
http://articles.mongueurs.net/magazines/linuxmag66.html
http://www.openldap.org/doc/admin22/syncrepl.html
http://julp.developpez.com/freebsd/replicat-ldap/


- installation de svn
http://hikage.developpez.com/linux/tutoriels/subversion/?page=page_2
http://wiki.freaks-unidos.net/Apache2%20SSL%20and%20Subversion%20in%20Debian
- connexion sur ldap
http://www.vogelweith.com/debian_server/09_subversion.php
http://wiki.osuosl.org/display/LNX/Subversion+SVN+and++LDAP+and+Webdav
http://www.jejik.com/articles/2007/06/apache_and_subversion_authentication_with_microsoft_active_directory/
http://blogs.open.collab.net/svn/2007/03/subversion_ldap.html
-install de webSVN
http://9rivers.linkka.com/2010/04/08/setup-subversion-on-debian/


=> mise en conf des sources qui trainent, (pas fait)
=> ajout de la créa d'une archive dédiée svn dans cron (pas fait, remplacé par archivemount par autofs)
, exclure du tar global /var/svn




- installation d'un jail (pour le relai tor) , branchement sur le ldap
https://trac.torproject.org/projects/tor/wiki/TheOnionRouter/TorInChroot
http://howto.landure.fr/gnu-linux/debian-4-0-etch/installer-un-chroot-sur-une-debian-4-0-etch
=> mise en conf du jail dans cvs


- checkout d'un jail pour tor, puis
- installation d'un relai tor (avec branchement sur le ldap) et priorisation minimum (torserver avec limits.conf)
http://tuxicoman.jesuislibre.net/2009/03/installer-tor-sur-debian.html
http://www.debianworld.org/systemes.et.reseaux?q=node/440
http://www.cyberciti.biz/faq/change-the-nice-value-of-a-process/
=> mise en conf du jail complet (dans un branche dédiée), vérification avec cvsweb




- installation d'un jail pour squid->privoxy->tor , branchement sur le ldap
- installation d'un client tor, de privoxy et de squid
http://www.christianschenk.org/blog/enhancing-your-privacy-using-squid-and-privoxy/
- installation de squid guard
http://www.trustonme.net/didactels/295.html
=> mise en conf du jail
plug munin : http://muninexchange.projects.linpro.no/?search=&cid=25&os[5]=on


- mise en place d'un jail pour ftp , branchement sur le ldap
http://www.debianhelp.co.uk/vsftpd.htm
http://www.linuxquestions.org/questions/linux-software-2/vsftpd-using-ldap-pam-authentication-issue-486781/
plug munin : http://muninexchange.projects.linpro.no/?search=&cid=10&os[5]=on&pid=226
=> ajout du scan clamav du /jail/ftp/home


- installation de postfix
http://elbacalow.free.fr/wiki/index.php?title=Installation_et_configuration_de_Postfix
munin : http://muninexchange.projects.linpro.no/?search=&cid=16&os[5]=on&pid=116 et http://muninexchange.projects.linpro.no/?search=&cid=50&os[5]=on


- mise en place de fs zippé pour repo cvs, repo svn et pages webs et moinmoin avec archivemount (automount pour svn)
http://talby.csu.umist.ac.uk/~rcs/_bits/archivemount_tar_and_cifs.html


sur les machine localisée : bind