GIT: Remote-Repository anlegen und pushen

Verwalten von Repositories

Die Verwaltung von Repositories und (wie wir später sehen werden) von Benutzern geschieht bei Gitosis über ein eigens dafür vorgesehenes Git-Repository, welches bei der Installation auf dem Server erzeugt wurde. Es lässt sich wie folgt auf dem Client klonen:

cd ~/Projects
git clone git@SERVER:gitosis-admin.git

SERVER ist wiederum durch den Namen des Servers zu ersetzen. Da wir vorhin den eigenen öffentlichen SSH-Schlüssel auf den Server kopiert haben, ist kein Passwort notwendig.

Das Repository besteht grundsätzlich aus der Datei gitosis.conf zur Verwaltung der Repositories und Benutzer sowie dem Verzeichnis keydir, in dem die SSH-Schlüssel ablegt sind:

$ cd gitosis-admin/
$ ls -ln
total 8
-rw-r--r--  1 501  20  167  3 Jan 19:57 gitosis.conf
drwxr-xr-x  4 501  20  136  3 Jan 19:57 keydir

Die Datei gitosis.conf enthält im initialen Zustand folgende Zeilen:

[gitosis]

[group gitosis-admin]
writable = gitosis-admin
members = tom@mymac

Der Abschnitt „group gitosis-admin“ definiert eine neue Benutzergruppe mit dem Namen „gitosis-admin“, die Schreibzugriff auf das Repository „gitosis-admin“ hat und derzeit nur aus einem Mitglied „tom@mymac“ besteht. „tom“ ist hierbei mein lokaler Benutzername, „mymac“ der Name meines Client-Rechners. Entsprechend enthält das Verzeichnis keydir eine Datei mit dem Namen tom@mymac.pub.

Ein neues Repository kann nun erzeugt werden, in dem folgende Zeilen der Datei gitosis.conf hinzufügt werden:

[group developers]
writable = test
members = tom@mymac

Das Repository hat hier den Namen „test“, gehört zur Gruppe „developers“ und nur mein eigener Benutzer „tom@mymac“ hat darauf Schreibrechte. Im Prinzip hätte es auch ausgereicht, den Bezeichner „test“ an die obige Zeile „writable = gitosis-admin“ mit Leerzeichen getrennt anzuhängen. Es ist aber aus meiner Sicht sinnvoll, gleich von Anfang an die Repositories für Projekte vom Repository für die administrativen Aufgaben zu unterscheiden.

Nach Speichern der Datei gitosis.conf wird nun gitosis-admin eingecheckt und auf den Server geschoben („push“):

git commit -a -m "Created repository test."
git push

Damit hat „tom@mymac“ Zugriff auf das Repository „git@SERVER:test.git“, das Repository selbst existiert aber noch nicht und muss entsprechend angelegt werden:

cd ~/Projects
mkdir test
cd test
git init
git remote add origin git@SERVER:test.git

Hat man bereits ein Projektverzeichnis (egal ob mit oder ohne Dateien), kann der Aufruf von „mkdir test“ entfallen. Anschließend können Dateien dem Projekt hinzugefügt und eingecheckt werden. Beispiel:

echo "This is a test file." > README
git add README
git commit -m "Initial revision."

Beim „push“ auf den Server wird schlussendlich das Repository erzeugt:

git push origin master:refs/heads/master

Verwalten von Benutzern

Bisher hat auf das erzeugte Test-Repository lediglich der Benutzer „tom@mymac“ Lese- und Schreibzugriff. Weitere Benutzer mit denselben Rechten können erstellt werden, indem diese dem Admin ihren öffentlichen SSH -Schlüssel zur Verfügung stellen. Angenommen, der Benutzer „joey@hismac“ schickt seinen Schlüssel, dann sind folgende Schritte durchzuführen:

cd ~/Project/gitosis-admin
cp ~/Download/joey@hismac keydir

In der Datei gitosis.conf ist der Benutzer der Gruppe „developers“ hinzuzufügen:

[group developers]
writable = test
members = tom@mymac joey@hismac

Dann weiter im Terminal:

git add .
git commit -m "Added joey to project test."
git push

Will man das Repository hingegen für die Allgemeinheit mit Leserechten veröffentlichen (also ohne Abfrage von Benutzername und Passwort), muss auf dem Server die Datei git-daemon-export-ok innerhalb des Repositories erzeugt werden,

sudo touch /home/git/repositories/test.git/git-daemon-export-ok

und ist dann wie folgt klonbar:

git clone git://SERVER/test.git

Damit endet dieser Artikel über Gitosis. Für weitere Dokumentation sei auf die README-Datei von gitosis verwiesen.

Kommentare, Fragen und Kritik sind wie immer herzlich willkommen.

Mit den folgenden Zeilen lässt sich für ein bestehendes lokales Repository ein Remote-Repository auf einem Gitosis anlegen und pushen:

# git remote add origin gitosis@servername:project.git
# git push origin master:refs/heads/master (Zuvor muss mindestens ein Commit bestehen.)

Konfiguration anpassen
Da das lokale Repository noch nicht mit dem Remote-Repository verknüpft wurde, muss nun die Konfiguration entsprechend angepasst werden. Dazu sind folgende Zeilen nötig:

# git config branch.master.merge refs/heads/master
# git config branch.master.remote origin

Danach kann das Repository auch ganz regulär mit git fetch und git pull synchronisiert werden. Wird ein Remote-Repository auf das lokale System geklont, besteht diese Konfiguration bereits. So kann auch alternativ das Repository gelöscht und vom Remote neu geklont werden.

fail2ban: manuell ensperren

root@h50877:~# iptables -L -n
...
Chain fail2ban-apache (1 references)
target     prot opt source               destination
RETURN     all  --  0.0.0.0/0            0.0.0.0/0

Chain fail2ban-apache-noscript (1 references)
target     prot opt source               destination
RETURN     all  --  0.0.0.0/0            0.0.0.0/0

Chain fail2ban-dovecot-auth (1 references)
target     prot opt source               destination
RETURN     all  --  0.0.0.0/0            0.0.0.0/0

Chain fail2ban-postfix (1 references)
target     prot opt source               destination
RETURN     all  --  0.0.0.0/0            0.0.0.0/0

Chain fail2ban-postfix-auth (1 references)
target     prot opt source               destination
RETURN     all  --  0.0.0.0/0            0.0.0.0/0

Chain fail2ban-sasl (1 references)
target     prot opt source               destination
RETURN     all  --  0.0.0.0/0            0.0.0.0/0

Chain fail2ban-ssh (1 references)
target     prot opt source               destination
RETURN     all  --  0.0.0.0/0            0.0.0.0/0
root@h50877:~# iptables -D fail2ban-ssh 1

ILOM Fehler "löschen"

Clearing faults from SC

a) Show the faults on the system controller

sc> showfaults -v

b) For each fault listed run

sc> clearfault <uuid>

c) If there are any disabled components run

sc> clearasrdb

d) Clear ereports

sc> setsc sc_servicemode true
sc> clearereports -y
sc> setsc sc_servicemode false
*To clear the FMA faults and error logs from Solaris:*

a) Show faults in FMA

# fmadm faulty

b) For each fault listed in the ‚fmadm faulty‘ run

# fmadm repair <uuid>

c) Clear ereports and resource cache

# cd /var/fm/fmd
# rm e* f* c*/eft/* r*/*

d) Reset the fmd serd modules

# fmadm reset cpumem-diagnosis
# fmadm reset cpumem-retire
# fmadm reset eft
# fmadm reset io-retire

e) Reboot the system

Clearing faults from SC:
> 
> 
> a)  Show the faults on the system controller
> 
> sc> showfaults -v
> 
> b)  For each fault listed run
> 
> sc> clearfault <uuid>
> 
> c)  If there are any disabled components run
> 
> sc> clearasrdb
> 
> d)  Clear ereports
> 
> sc> setsc sc_servicemode true
> sc> clearereports -y
> sc> setsc sc_servicemode false
> 
> *To clear the FMA faults and error logs from Solaris:*
> 
> a) Show faults in FMA
> 
> # fmadm faulty
> 
> b)  For each fault listed in the 'fmadm faulty' run
> 
> # fmadm repair <uuid>
> 
> c) Clear ereports and resource cache
> 
> # cd /var/fm/fmd
> # rm e* f* c*/eft/* r*/*
> 
> d)  Reset the fmd serd modules
> 
> # fmadm reset cpumem-diagnosis
> # fmadm reset cpumem-retire
> # fmadm reset eft
> # fmadm reset io-retire
> 
> e) Reboot the system
> 

ILOM Fehler „löschen“

Clearing faults from SC

a) Show the faults on the system controller

sc> showfaults -v

b) For each fault listed run

sc> clearfault <uuid>

c) If there are any disabled components run

sc> clearasrdb

d) Clear ereports

sc> setsc sc_servicemode true
sc> clearereports -y
sc> setsc sc_servicemode false
*To clear the FMA faults and error logs from Solaris:*

a) Show faults in FMA

# fmadm faulty

b) For each fault listed in the ‚fmadm faulty‘ run

# fmadm repair <uuid>

c) Clear ereports and resource cache

# cd /var/fm/fmd
# rm e* f* c*/eft/* r*/*

d) Reset the fmd serd modules

# fmadm reset cpumem-diagnosis
# fmadm reset cpumem-retire
# fmadm reset eft
# fmadm reset io-retire

e) Reboot the system

Clearing faults from SC:
> 
> 
> a)  Show the faults on the system controller
> 
> sc> showfaults -v
> 
> b)  For each fault listed run
> 
> sc> clearfault <uuid>
> 
> c)  If there are any disabled components run
> 
> sc> clearasrdb
> 
> d)  Clear ereports
> 
> sc> setsc sc_servicemode true
> sc> clearereports -y
> sc> setsc sc_servicemode false
> 
> *To clear the FMA faults and error logs from Solaris:*
> 
> a) Show faults in FMA
> 
> # fmadm faulty
> 
> b)  For each fault listed in the 'fmadm faulty' run
> 
> # fmadm repair <uuid>
> 
> c) Clear ereports and resource cache
> 
> # cd /var/fm/fmd
> # rm e* f* c*/eft/* r*/*
> 
> d)  Reset the fmd serd modules
> 
> # fmadm reset cpumem-diagnosis
> # fmadm reset cpumem-retire
> # fmadm reset eft
> # fmadm reset io-retire
> 
> e) Reboot the system
> 

Nützliche OBP Kommandos

HBA properties

{0} ok " /pci@400/pci@0/pci@c/SUNW,qlc@0" select-dev
QLogic QLE2460  Host Adapter FCode(SPARC): 2.01  03/27/08
Firmware version 4.03.01
{0} ok show-children
Adapter portID - 400016
************** Fabric Attached Devices **************
  Dev# 0(0)   PortID 400b00    Port WWN 203500a0b8113a0e
   LUN    0(0)    DISK  IBM     1815      FAStT 0914
   LUN    1(1)    DISK  IBM     1815      FAStT 0914
   LUN    2(2)    DISK  IBM     1815      FAStT 0914
   LUN    3(3)    DISK  IBM     1815      FAStT 0914
   LUN   1f(31)    DISK  IBM     Universal Xport 0914

{0} ok cd /pci@500/pci@0/pci@9
{0} ok .properties
available                82000000 00000000 00210000 00000000 00010000
                         82000000 00000000 004a0000 00000000 00060000
                         82000000 00000000 00580000 00000000 00080000
ranges                   82000000 00000000 00200000 82000000 00000000 00200000 00000000 00400000
bus-range                00 00 00 04 00 00 00 04
compatible               pciex10b5,8548.aa
                         pciex10b5,8548
                         pciexclass,060400
                         pciexclass,0604
reg                      00034800 00000000 00000000 00000000 00000000
physical-slot#           00000005
#address-cells           00000003
#size-cells              00000002
device_type              pciex
name                     pci
interrupts               00000001
cache-line-size          00000010
class-code               00060400
revision-id              000000aa
device-id                00008548
vendor-id                000010b5

devalias

{0} ok devalias
cmtio-vds0               /virtual-devices@100/channel-devices@200/virtual-disk-server@0
clint-cmtio-vsw1         /virtual-devices@100/channel-devices@200/virtual-network-switch@1
public-cmtio-vsw0        /virtual-devices@100/channel-devices@200/virtual-network-switch@0
cmtio-vcc0               /virtual-devices@100/channel-devices@200/virtual-console-concentrator@0
virtual-console          /virtual-devices/console@1
name                     aliases

show-devs

{0} ok show-devs
/pci-performance-counters@700
/pci@700
/pci-performance-counters@600
/pci@600
/cpu@7
/cpu@6
/cpu@5
/cpu@4
/cpu@3
/cpu@2
/cpu@1
/cpu@0
/cpu@b
/cpu@a
/cpu@9
/cpu@8
/virtual-devices@100
/virtual-memory
/memory@m0,10000000
/aliases
/options
/openprom
...

show-nets

{0} ok show-nets
a) /pci@700/pci@0/pci@9/network@0,1
b) /pci@700/pci@0/pci@9/network@0
q) NO SELECTION
Enter Selection, q to quit: b
/pci@700/pci@0/pci@9/network@0 has been selected.
Type ^Y ( Control-Y ) to insert it in the command line.
e.g. ok nvalias mydev ^Y
         for creating devalias mydev for /pci@700/pci@0/pci@9/network@0

Solaris SAN boot

{0} ok probe-scsi-all
/pci@7c0/pci@0/pci@1/pci@0,2/SUNW,qlc@2
QLA2340 Host Adapter fcode version 1.17 08/09/07
Firmware version 3.03.23
**********************  Fabric Attached Devices  **********************
Adapter portId - cf900
   Device PortId 100900   DeviceId 0     Port WWN 50060e801002a701
   Lun     a   DISK  HITACHI DF600F          0000
   Lun     b   DISK  HITACHI DF600F          0000
   Lun     c   DISK  HITACHI DF600F          0000
   Lun     d   DISK  HITACHI DF600F          0000

/pci@7c0/pci@0/pci@1/pci@0,2/SUNW,qlc@1
QLA2340 Host Adapter fcode version 1.17 08/09/07
Firmware version 3.03.23
**********************  Fabric Attached Devices  **********************
Adapter portId - df900
   Device PortId 110900   DeviceId 0     Port WWN 50060e801002a705
   Lun     a   DISK  HITACHI DF600F          0000
   Lun     b   DISK  HITACHI DF600F          0000
   Lun     c   DISK  HITACHI DF600F          0000
   Lun     d   DISK  HITACHI DF600F          0000

{0} ok cd /pci@7c0/pci@0/pci@1/pci@0,2/SUNW,qlc@1
{0} ok ls
f02b17b4 fp@0,0
{0} ok cd fp@0,0
{0} ok ls
f02b1eb0 disk
{0} ok ls
f02b1eb0 disk
{0} ok pwd
/pci@7c0/pci@0/pci@1/pci@0,2/SUNW,qlc@1/fp@0,0
{0} ok cd disk
{0} ok ls
{0} ok pwd
/pci@7c0/pci@0/pci@1/pci@0,2/SUNW,qlc@1/fp@0,0/disk
{0} ok nvalias rootdisk
/pci@7c0/pci@0/pci@1/pci@0,2/SUNW,qlc@1/fp@0,0/disk@w50060e801002a705,a:a
{0} ok nvstore

Dateie mit vorgegebener Größe anlegen

Windows:

fsutil file createnew [FILE] [LENGTH]

UNIX (allgemein):

dd if=/dev/zero of=[FILE] size=1M count=[LENGTH]

UNIX (Solaris)

mkfile [LENGTH] [FILE]

Beispiele Datei mit 100GB anlegen:

# fsutil file createnew v:0G 107374182400
# dd if=/dev/zero of=/100G size=1g count=100
# mkfile 100g /100G

mysql Version in Opensolaris

Bei einem update von Opensolaris wurde automatisch die mysql Installation von 5.0 auf 5.1 aktualisiert.

Der mysql Service sah wie folgt aus:

# svcs mysql
STATE          STIME    FMRI
online         20:32:08 svc:/application/database/mysql:version_51

Um weiterhin mysql 5.0 zu verwenden, sind die folgenden Schritte notwendig:

Überprüfen des data Links im Verzeichnis /var/mysql

# ls -l /var/mysql/
total 5
drwxr-xr-x 3 mysql mysql 3 2009-12-07 20:37 5.0
drwxr-xr-x 3 mysql mysql 3 2009-12-07 20:37 5.1
lrwxrwxrwx 1 root  root  3 2009-12-12 20:32 data -> 5.0

Neuer Import des mysql Manifestes

# svccfg import /var/svc/manifest/application/database/mysql.xml
# svcs mysql
STATE          STIME    FMRI
online         20:32:08 svc:/application/database/mysql:version_51
disabled       20:32:52 svc:/application/database/mysql:version_50

Abschalten der mysql 5.1 Instanz und einschalten der mysql 5.0 Instanz

# svcadm disable mysql:version_51
# svcadm enable  mysql:version_50