Skip to main content Coast Systems

Allumez Neo4j et Neodash dans un pod avec butane et ignition

Exécuter une instance de Neo4j avec Neodash dans un pod dans un conteneur Fedora Coreos sur Google Cloud.

Vous aurez besoin de

  1. Compte GCP avec Google Cloud Compute Engine.

  2. IP statique pour la machine dans le réseau VPC.

  3. Gcloud cli sur la machine locale.

  4. instance locale de neo4j, y compris le tableau de bord enregistré dans la base de données.

  5. paire de clés ssh à installer (clé publique) sur l’image.

  6. butane

  7. allumettes

  8. Ces instructions supposent que l’utilisateur est sur une machine Linux.

    Aucun SSL n’est configuré ici.

Démarrez Google Cloud Web

  1. Configurer des règles de pare-feu pour le navigateur Neo4j et Neodash

    1. Sous Réseau VPC/Pare-feu, cliquez sur "Créer une règle de pare-feu".

    2. Fournissez un nom, par exemple: allow-neo4j

    3. Sous Cibles, sélectionnez "Balises cibles spécifiées"

    4. Fournissez une balise cible de votre choix, par exemple : neo4j

    5. Spécifiez les ports TCP : 7474, 7687, 5005

  2. Configurez une adresse IP statique à attribuer à la machine au moment de la création.

    1. Sous Réseau VPC/Adresses IP

    2. Sélectionnez Réserver des adresses statiques externes

    3. Sélectionnez la zone et d’autres options.

      l’adresse IP sera attachée à la machine que vous créerez dans une minute ou deux.

Continuez sur votre machine

  1. Installer l’interface de ligne de commande gcloud.

    1. Assurez-vous que vous pouvez exécuter : gcloud compute instances list

  2. Installer butane

  3. Créez le fichier neo4j.fcc suivant et adaptez-le à vos besoins.

    1. Section Neo4j

      1. Au strict minimum, vous devrez fournir une clé publique pour l’utilisateur principal.

        Vous ne pourrez pas vous connecter à la machine sans elle.
        La clé privée est également pratique (pour l’utilisateur core et/ou neo4j) si vous souhaitez extraire des données de gitlab, etc.

      2. L’adresse http et bolt doivent être les IP internes de votre vm GCP.

    2. Section Neodash

      1. L’IP statique externe de votre vm DOIT être indiquée.

      2. Vous DEVEZ changer le mot de passe de la base de données et le nom du tableau de bord.

      3. Vous DEVEZ indiquer l’adresse IP externe pour la valeur standaloneHost.

#filename: neo4j.fcc
variant: fcos
version: 1.4.0
passwd:
  users:
    - name: core
      ssh_authorized_keys:
        - ssh-ed25519 CCCBC3NzaC1lZDI1NTE5CCCBILfBrfr+iLNCXjQhcWKDFPLTOO5MPpPp6+GxmR8m5zxY keyname
    - name: neo4j
      ssh_authorized_keys:
        - ssh-ed25519 CCCBC3NzaC1lZDI1NTE5CCCBILfBrfr+iLNCXjQhcWKDFPLTOO5MPpPp6+GxmR8m5zxY keyname
      uid: 7474
storage:
  files:
    - path: /etc/hostname
      mode: 0644
      contents:
        inline: fcos-neo4j
    - path: /home/core/.ssh/id_ed25519
      mode: 0600
      user:
        name: core
      group:
        name: core
      contents:
        inline: |
          -----BEGIN OPENSSH PRIVATE KEY-----
          QyNTUxOQAAACC3wa36/oizQl40IXFigxTy0zjuTD6T6evhsZkfJuc8WCCCBJAPDFZXDwxW
          QyNTUxOQAAACC3wa36/oizQl40IXFigxTy0zjuTD6T6evhsZkfJuc8WCCCBJAPDFZXDwxW
          QyNTUxOQAAACC3wa36/oizQl40IXFigxTy0zjuTD6T6evhsZkfJuc8WCCCBJAPDFZXDwxW
          QyNTUxOQAAACC3wa36/oizQl40IXFigxTy0zjuTD6T6evhsZkfJuc8WCCCBJAPDFZXDwxW
          OO5MPpPp6+GxmR8m5zxYCCCBBmJrZWxseQECAwQFBgc=
          -----END OPENSSH PRIVATE KEY-----
    - path: /home/core/.ssh/id_ed25519.pub
      mode: 0644
      user:
        name: core
      group:
        name: core
      contents:
        inline: |
          ssh-ed25519 CCCBC3NzaC1lZDI1NTE5CCCBILfBrfr+iLNCXjQhcWKDFPLTOO5MPpPp6+GxmR8m5zxY keyname
    - path: /home/neo4j/.ssh/id_ed25519
      mode: 0600
      user:
        name: neo4j
      group:
        name: neo4j
      contents:
        inline: |
          -----BEGIN OPENSSH PRIVATE KEY-----
          QyNTUxOQAAACC3wa36/oizQl40IXFigxTy0zjuTD6T6evhsZkfJuc8WCCCBJAPDFZXDwxW
          QyNTUxOQAAACC3wa36/oizQl40IXFigxTy0zjuTD6T6evhsZkfJuc8WCCCBJAPDFZXDwxW
          QyNTUxOQAAACC3wa36/oizQl40IXFigxTy0zjuTD6T6evhsZkfJuc8WCCCBJAPDFZXDwxW
          QyNTUxOQAAACC3wa36/oizQl40IXFigxTy0zjuTD6T6evhsZkfJuc8WCCCBJAPDFZXDwxW
          OO5MPpPp6+GxmR8m5zxYCCCBBmJrZWxseQECAwQFBgc=
          -----END OPENSSH PRIVATE KEY-----
    - path: /home/neo4j/.ssh/id_ed25519.pub
      mode: 0644
      user:
        name: neo4j
      group:
        name: neo4j
      contents:
        inline: |
          ssh-ed25519 CCCBC3NzaC1lZDI1NTE5CCCBILfBrfr+iLNCXjQhcWKDFPLTOO5MPpPp6+GxmR8m5zxY keyname
    - path: /var/lib/systemd/linger/neo4j
      mode: 0644
    - path: /home/neo4j/get-go.sh
      mode: 0744
      user:
        name: neo4j
      group:
        name: neo4j
      contents:
        inline: |
          #!/usr/bin/bash
          [ -d $HOME/neo4j/data/databases/neo4j/|| { echo "Looks like there is no neo4j database.  Exiting..."; exit 1; }
          podman pod create --name neo \
              --userns=keep-id \
              -p 7474:7474 \
              -p 7687:7687 \
              -p 5005:5005

          podman run -d \
              --pod neo \
              --name neo4j \
              --security-opt label=disable \
              -v $HOME/neo4j/data:/var/lib/neo4j/data \
              -v $HOME/neo4j/logs:/var/lib/neo4j/logs \
              -v $HOME/neo4j/import:/var/lib/neo4j/import \
              -v $HOME/neo4j/plugins:/var/lib/neo4j/plugins \
              --env NEO4J_dbms_connector_bolt_enabled=true \
              --env NEO4J_dbms_connector_http_advertised__address=10.240.0.17:7474 \
              --env NEO4J_dbms_connector_bolt_advertised__address=10.240.0.17:7687 \
              docker.io/library/neo4j:5.3.0-community

          podman run -d \
              --pod neo \
              --name neodash \
              --security-opt label=disable \
              -e ssoEnabled=false \
              -e standalone=true \
              -e standaloneProtocol="bolt" \
              -e standaloneHost="IP_ADDRESS" \
              -e standalonePort="7687" \
              -e standaloneDatabase="neo4j" \
              -e standaloneUsername="neo4j" \
              -e standalonePassword="YOUR_PASSWORD_HERE" \
              -e standaloneDashboardName="REPLACE_THIS_WITH_YOUR_DASHBOARD_NAME" \
              -e standaloneDashboardDatabase="neo4j" \
              docker.io/nielsdejong/neodash
          pushd $HOME/.config/systemd/user || exit
          podman generate systemd -n -f neo
          popd
          systemctl --user enable pod-neo
  directories:
    - path: /home/neo4j/.config
      mode: 0755
      user:
        name: neo4j
      group:
        name: neo4j
    - path: /home/neo4j/.config/systemd
      mode: 0755
      user:
        name: neo4j
      group:
        name: neo4j
    - path: /home/neo4j/.config/systemd/user
      mode: 0755
      user:
        name: neo4j
      group:
        name: neo4j
  1. Modifiez le fichier suivant en tant que ignite.sh et enregistrez-le dans le même répertoire que neo4j.fcc ci-dessus.

    • Portez une attention particulière aux TAGS ; ceux-ci DOIVENT correspondre au tag attribué à la règle de pare-feu autorisant l’accès à la machine sur les ports TCP 7474 et 5005.

    • L’IP_ADDRESS est votre adresse IP statique telle que configurée dans Google Cloud.

    • Sélectionnez votre ZONE et VM_NAME

#!/bin/bash
#filename: ignite.sh
STREAM=stable
VM_NAME=fcos-neo4j
CONFIG=neo4j.ign
TAGS=neo4j
IP_ADDRESS=35.211.65.234
ZONE=us-east1-b
butane -p -r neo4j.fcc > neo4j.ign

gcloud compute instances create --metadata-from-file "user-data=${CONFIG}" \
  --image-project "fedora-coreos-cloud" \
  --image-family "fedora-coreos-${STREAM}" "${VM_NAME}" \
  --zone ${ZONE} \
  --tags ${TAGS} \
  --address ${IP_ADDRESS} \
  --no-service-account \
  --no-scopes \
  --preemptible
'preemptible' permet à Google d’éteindre la machine virtuelle à tout moment. Supprimer ceci ou bien créer un job cron pour la redémarrer après Google l’éteint.
  1. Installer butane (dnf install butane)

  2. Allumez! ./ignite.sh

Si tout se passe comme prévu et que vous aviez la clé privée correspondante sur votre ordinateur, vous devriez pouvoir vous connecter en ssh à votre machine.

C’est maintenant à vous d’obtenir votre base de données neo4j (y compris le tableau de bord neodash enregistré) sur la boîte.

  1. arrêter la base de données

  2. rsync -avupzr /var/lib/neo4j neo4j@IP_ADDRESS:~/ (ou scp)

Sur votre nouvelle vm

  1. Prenez les images du conteneur

    • podman pull docker.io/library/neo4j:5.3.0-community

    • podman pull docker.io/nielsdejong/neodash

  2. Allons:

    • ./get-go.sh

      Cela configurera et démarrera à la fois Neo4j et Neodash.

Vérifiez l’état de fonctionnement avecpodman pod ps

Vous pouvez démarrer et arrêter avec :

systemctl --user status|start|stop pod-neo

podman pod start|stop neo

Connectez-vous à la base de données Neodash :