Compare commits

5 Commits

Author SHA1 Message Date
N S
716bcb2eee Update readme.md 2026-03-24 11:21:14 +00:00
N S
c2247b0683 Update stages/stage0-remote-run.sh 2026-03-24 11:09:14 +00:00
N S
6166e88f11 Update readme.md 2026-03-24 11:06:55 +00:00
root
0a2f37fea5 fix 2026-03-24 10:09:06 +00:00
N S
83f2136c13 Update readme.md 2026-03-24 09:43:53 +00:00
3 changed files with 52 additions and 8 deletions

View File

@@ -1,22 +1,32 @@
Under clusterwide-file-manifest we should have directory tree of the form
dir - K-Y-Z-M
K-Y-Z-M/clusterwide-manifest.nmd5
`dir` - `K-Y-Z-M`:
- `K-Y-Z-M`/`clusterwide-manifest.nmd5`
These are the clusterwide manifests - i.e manifests that are produced by comparing the md5s of different nodes from the same cluster,
and producing 2 lists for each of those clusters:
List 1 (matches):
- List 1 (matches):
md5sum:/file/path
List 2 (diffs):
- List 2 (diffs):
md5sum:/file/path
Where List 1 is a list of all files that have the same path, and have the same path and md5sum across the cluster
While list 2 is a list of the inverse of the above.
> Where List 1 is a list of all files that have the same path, and have the same path and md5sum across the cluster
> While list 2 is a list of the inverse of the above.
# Stages
## Stage 0 - ssh backbone for propogating stage1 across the cluster
```bash
yum install git -y
git clone https://git.adspem.com/opthq/nmd-md5sum-manifest.git
cd nmd-md5sum-manifest/stages
chmod +x *
./stage0-remote-run.sh
hsctl cmd run 'ls -la /root/manifest*'
./stage1-1-get-remote-files.sh
```
## Stage 1 - Md5:filepath
- Param 1 - base path (i.e `stage1.sh /` - would produce md5sum for everything under root)
- Produces a file containing the md5:file on a given system

View File

@@ -1,6 +1,6 @@
#!/bin/bash
ssh_keyfile='/export/home/cloudian/cloudian-installation-key'
script='/tmp/nmd/nmd-md5sum-manifest/stages/stage1-gather-node-manifest.sh'
script='stage1-gather-node-manifest.sh'
# Ensure environment variables are set
if [[ -z "$ssh_keyfile" || -z "$script" ]]; then

View File

@@ -0,0 +1,34 @@
#!/bin/bash
ssh_keyfile='/export/home/cloudian/cloudian-installation-key'
# Set the path to the remote file you want to download
remote_file='/root/manifest-*txt*'
# Ensure variables are set
if [[ -z "$ssh_keyfile" || -z "$remote_file" ]]; then
echo "Error: Please set 'ssh_keyfile' and 'remote_file' variables."
exit 1
fi
# Extract hostnames/IPs from /etc/hosts, skipping comments and localhost
HOSTS=$(grep -v '^#' /etc/hosts | grep -v 'localhost' | awk '{print $2}')
for HOST in $HOSTS; do
echo "--- Fetching from: $HOST ---"
# Create a unique local directory for this host's file
#target_dir="remotes/$HOST"
target_dir="remotes/"
mkdir -p "$target_dir"
# Use SCP to pull the file from the remote host to the local directory
# -i: Specifies the identity (private key) file
# -o StrictHostKeyChecking=no: Skips manual fingerprint verification prompts
scp -i "$ssh_keyfile" -o StrictHostKeyChecking=no "$HOST":"$remote_file" "$target_dir/"
if [ $? -eq 0 ]; then
echo "--- Success: File saved to $target_dir/ ---"
else
echo "--- Failed: Could not fetch from $HOST ---"
fi
done