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
-
Compte GCP avec Google Cloud Compute Engine.
-
IP statique pour la machine dans le réseau VPC.
-
Gcloud cli sur la machine locale.
-
instance locale de neo4j, y compris le tableau de bord enregistré dans la base de données.
-
paire de clés ssh à installer (clé publique) sur l’image.
-
butane
-
allumettes
-
Ces instructions supposent que l’utilisateur est sur une machine Linux.
Aucun SSL n’est configuré ici.
Démarrez Google Cloud Web
-
Configurer des règles de pare-feu pour le navigateur Neo4j et Neodash
-
Sous Réseau VPC/Pare-feu, cliquez sur "Créer une règle de pare-feu".
-
Fournissez un nom, par exemple: allow-neo4j
-
Sous Cibles, sélectionnez "Balises cibles spécifiées"
-
Fournissez une balise cible de votre choix, par exemple : neo4j
-
Spécifiez les ports TCP : 7474, 7687, 5005
-
-
Configurez une adresse IP statique à attribuer à la machine au moment de la création.
-
Sous Réseau VPC/Adresses IP
-
Sélectionnez Réserver des adresses statiques externes
-
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
-
Installer l’interface de ligne de commande gcloud.
-
Assurez-vous que vous pouvez exécuter :
gcloud compute instances list
-
-
Installer butane
-
Créez le fichier neo4j.fcc suivant et adaptez-le à vos besoins.
-
Section Neo4j
-
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. -
L’adresse http et bolt doivent être les IP internes de votre vm GCP.
-
-
Section Neodash
-
L’IP statique externe de votre vm DOIT être indiquée.
-
Vous DEVEZ changer le mot de passe de la base de données et le nom du tableau de bord.
-
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
-
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. |
-
Installer butane (
dnf install butane
) -
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.
-
arrêter la base de données
-
rsync -avupzr /var/lib/neo4j neo4j@IP_ADDRESS:~/
(ou scp)
Sur votre nouvelle vm
-
Prenez les images du conteneur
-
podman pull docker.io/library/neo4j:5.3.0-community
-
podman pull docker.io/nielsdejong/neodash
-
-
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 :
http://IP_ADDRESS:7474
(neo4j browser)
http://IP_ADDRESS:5005
(neodash)