From ac7d021b6730f49c0bf316bd3b4b5336aacd57c9 Mon Sep 17 00:00:00 2001 From: David Young Date: Wed, 6 Jun 2018 21:42:35 +1200 Subject: [PATCH 1/9] Add Travis test 10 --- scripts/markdown-to-markua.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/markdown-to-markua.sh b/scripts/markdown-to-markua.sh index 3abed57..00b8414 100755 --- a/scripts/markdown-to-markua.sh +++ b/scripts/markdown-to-markua.sh @@ -1,3 +1,6 @@ #!/bin/bash -echo "Nananana... Batman!" > manuscript/test.md + +# Markua doesn't know what to do with 4 backticks (````), so convert to 3: +find manuscript -type f -name "*.md" -print0 | xargs -0 sed "s/````/```/g" + # Do nothing, yet. This is where the sed magic will go From 26e9fa43325ec6794b83be10e60829f462928a56 Mon Sep 17 00:00:00 2001 From: David Young Date: Wed, 6 Jun 2018 21:48:01 +1200 Subject: [PATCH 2/9] Add Travis test 11 --- scripts/markdown-to-markua.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/markdown-to-markua.sh b/scripts/markdown-to-markua.sh index 00b8414..81355b6 100755 --- a/scripts/markdown-to-markua.sh +++ b/scripts/markdown-to-markua.sh @@ -1,6 +1,6 @@ #!/bin/bash # Markua doesn't know what to do with 4 backticks (````), so convert to 3: -find manuscript -type f -name "*.md" -print0 | xargs -0 sed "s/````/```/g" +find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/\`\`\`\`/\`\`\`/g" # Do nothing, yet. This is where the sed magic will go From bd33ac6c595b66504fae70f6433267d5acd85ce5 Mon Sep 17 00:00:00 2001 From: David Young Date: Wed, 6 Jun 2018 22:26:35 +1200 Subject: [PATCH 3/9] Remove Emojis --- scripts/markdown-to-markua.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/markdown-to-markua.sh b/scripts/markdown-to-markua.sh index 81355b6..07f1889 100755 --- a/scripts/markdown-to-markua.sh +++ b/scripts/markdown-to-markua.sh @@ -3,4 +3,8 @@ # Markua doesn't know what to do with 4 backticks (````), so convert to 3: find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/\`\`\`\`/\`\`\`/g" +# Markua doesn't like emojis, so remove them: +find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/👏//g" +find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/💬//g" + # Do nothing, yet. This is where the sed magic will go From 1fb0a952bd97c56d1880acb04e149b8450ba00d1 Mon Sep 17 00:00:00 2001 From: David Young Date: Thu, 7 Jun 2018 12:43:14 +1200 Subject: [PATCH 4/9] Improve preview, strip more emojis --- .travis.yml | 9 +++++---- scripts/markdown-to-markua.sh | 6 ++++++ scripts/push-markua-to-branch.sh | 5 +++++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8316e46..e446668 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,12 +1,13 @@ lang: python -# blocklist branches: except: - leanpub-preview - leanpub-publish script: - - scripts/markdown-to-markua.sh +- scripts/markdown-to-markua.sh after_success: - - scripts/push-markua-to-branch.sh +- scripts/push-markua-to-branch.sh env: - secure: "X0ruiXtzArHPaOAd5cQS0axHGwMM5HwqSHASr/KnzV1yZUPzJIrzJQYSCJmFPzk6zuboA2Tsa96zu+DftgA9N9WgzTYmjp8M10y9vcK4cpkfi5frs7GVorVLPQ5kcWwYPf/j+YzpP5OwrRSxDDG853GJ4OhoALcjmmBJk8NwIKZOkA6x2RvvcDRx6dc216QdhmouD5Hz0tImkE2rYdQNm44IN7OF6wekbEhOzN2Chz6yGit3duRvxBrNOPqmGqkFwtg0sxyQO0iBa4qvg88qrKQOIHwUG5y4rp8QcdqfRMv/lSNGEg1Mh7iDUHbZpvcAoXREXp9FMEY/SJ1uYkcEMn+GvLDQ/BOFwKjC/duWM3oMPgzjqI+gwpIdlTZt5+Qu9v4Z6+XJ5P+JIWZYtzudDVuOzVMSIzwk9y2a/ufYXGQdvGktf6H51WCcA8CO2muxLtDwDtV1okAVm+HXkgQ/pcwjqqq3n3RojN6Xxm+TJggn3HgU21qug/K1lukycwCjQbI8s0ey3soT1+oPc8Fl95n35eXTUY3DOd0u14e0Y3XKIbG9Rvyp9U8gJC2Ij6+EXSdHlFhvr5tJJLNwXkXjV3yMnLgtlSnuGBGHUpv0+XZuSsGqOropl/KDUurb2TGkIH7PjpBpFm6PhSbLViGXrupuxTvKLdsXBXospzODuEQ=" + secure: X0ruiXtzArHPaOAd5cQS0axHGwMM5HwqSHASr/KnzV1yZUPzJIrzJQYSCJmFPzk6zuboA2Tsa96zu+DftgA9N9WgzTYmjp8M10y9vcK4cpkfi5frs7GVorVLPQ5kcWwYPf/j+YzpP5OwrRSxDDG853GJ4OhoALcjmmBJk8NwIKZOkA6x2RvvcDRx6dc216QdhmouD5Hz0tImkE2rYdQNm44IN7OF6wekbEhOzN2Chz6yGit3duRvxBrNOPqmGqkFwtg0sxyQO0iBa4qvg88qrKQOIHwUG5y4rp8QcdqfRMv/lSNGEg1Mh7iDUHbZpvcAoXREXp9FMEY/SJ1uYkcEMn+GvLDQ/BOFwKjC/duWM3oMPgzjqI+gwpIdlTZt5+Qu9v4Z6+XJ5P+JIWZYtzudDVuOzVMSIzwk9y2a/ufYXGQdvGktf6H51WCcA8CO2muxLtDwDtV1okAVm+HXkgQ/pcwjqqq3n3RojN6Xxm+TJggn3HgU21qug/K1lukycwCjQbI8s0ey3soT1+oPc8Fl95n35eXTUY3DOd0u14e0Y3XKIbG9Rvyp9U8gJC2Ij6+EXSdHlFhvr5tJJLNwXkXjV3yMnLgtlSnuGBGHUpv0+XZuSsGqOropl/KDUurb2TGkIH7PjpBpFm6PhSbLViGXrupuxTvKLdsXBXospzODuEQ= + global: + secure: VRvMlfLCPYa7/E8zE6RBNRIcKCxaIeVMkcvt33TgBLlDUhskDaWxRE9AboFfw4lSRpvuzOUWMpytSQ1VOlL6RIQgceyLgdZFp8iOcuthJs/UuKODAQbmY0uW4RfAX3KQehaz95vfstLZdvglQR1tdYAucYCfZVxTbUDNotnZjYZGjGdAZCf3ZymeZgTjUDQakiIY6iE0TXG8aBVltW38FbZu9jifKTe9rg1IiDGti12ehJDfKeBPdUloDzdSSOkqXTcBWmyYoTKvtS6EKQVTbJk4Wj/QssGwtYBAYnWup1AI2uxlT4R8Kh5jHjaIM8s+55LX6vU4VrIexeGrNsef9SJZVnMWGrq+2vpLyoN4EzxT3K3S6R4mnUG+JslmEtu78YNCfA6N6xgVLWNfKHZjdoeuJs4KPsTWpHCyArkjfBbV3cQKvGsNgG80ozXKv9stLqdM+HfNlCWYhsVrKwKVu+1zlc1Nl8DL67wGKrcUxMj3ayBDXhbUfB2ed0IhbQdKZLkMZtRrxytrAVbHtVuOYckQlhTO9WjRvBI+F9EI8i8DDN71023BKbEEi7tKDDgTdlJ2puIMqrnt+6DJ7xJAL235jKcXquL2TWyAsLsNk1Djkr6jGkJ2kwZbFNQucBp3s0MGY2SvEWFI4rWY80MvPT+2PBuICyfS0BAeI2forzA= diff --git a/scripts/markdown-to-markua.sh b/scripts/markdown-to-markua.sh index 07f1889..707a0f7 100755 --- a/scripts/markdown-to-markua.sh +++ b/scripts/markdown-to-markua.sh @@ -6,5 +6,11 @@ find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/\`\`\`\`/\`\`\ # Markua doesn't like emojis, so remove them: find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/👏//g" find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/💬//g" +find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/👍//g" +find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/💰//g" +find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/🍷//g" +find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/🏢//g" +find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/❤️//g" +find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/:turtle://g" # Do nothing, yet. This is where the sed magic will go diff --git a/scripts/push-markua-to-branch.sh b/scripts/push-markua-to-branch.sh index 1c70a66..7354492 100755 --- a/scripts/push-markua-to-branch.sh +++ b/scripts/push-markua-to-branch.sh @@ -19,6 +19,11 @@ upload_files() { git push --quiet --set-upstream origin-leanpub-preview leanpub-preview } +trigger_preview() { + curl -d "api_key=${LEANPUB-API-KEY}" https://leanpub.com/geek-cookbook/preview.json +} + setup_git commit_website_files upload_files +trigger_preview From 6297c6e41c09e4c3bf06e14b6ece19c0a1d16cdf Mon Sep 17 00:00:00 2001 From: David Young Date: Thu, 7 Jun 2018 12:55:23 +1200 Subject: [PATCH 5/9] Tweaked Travis --- .travis.yml | 2 -- manuscript/book.txt | 3 +++ scripts/push-markua-to-branch.sh | 10 ++++++---- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index e446668..2a67136 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,5 +9,3 @@ after_success: - scripts/push-markua-to-branch.sh env: secure: X0ruiXtzArHPaOAd5cQS0axHGwMM5HwqSHASr/KnzV1yZUPzJIrzJQYSCJmFPzk6zuboA2Tsa96zu+DftgA9N9WgzTYmjp8M10y9vcK4cpkfi5frs7GVorVLPQ5kcWwYPf/j+YzpP5OwrRSxDDG853GJ4OhoALcjmmBJk8NwIKZOkA6x2RvvcDRx6dc216QdhmouD5Hz0tImkE2rYdQNm44IN7OF6wekbEhOzN2Chz6yGit3duRvxBrNOPqmGqkFwtg0sxyQO0iBa4qvg88qrKQOIHwUG5y4rp8QcdqfRMv/lSNGEg1Mh7iDUHbZpvcAoXREXp9FMEY/SJ1uYkcEMn+GvLDQ/BOFwKjC/duWM3oMPgzjqI+gwpIdlTZt5+Qu9v4Z6+XJ5P+JIWZYtzudDVuOzVMSIzwk9y2a/ufYXGQdvGktf6H51WCcA8CO2muxLtDwDtV1okAVm+HXkgQ/pcwjqqq3n3RojN6Xxm+TJggn3HgU21qug/K1lukycwCjQbI8s0ey3soT1+oPc8Fl95n35eXTUY3DOd0u14e0Y3XKIbG9Rvyp9U8gJC2Ij6+EXSdHlFhvr5tJJLNwXkXjV3yMnLgtlSnuGBGHUpv0+XZuSsGqOropl/KDUurb2TGkIH7PjpBpFm6PhSbLViGXrupuxTvKLdsXBXospzODuEQ= - global: - secure: VRvMlfLCPYa7/E8zE6RBNRIcKCxaIeVMkcvt33TgBLlDUhskDaWxRE9AboFfw4lSRpvuzOUWMpytSQ1VOlL6RIQgceyLgdZFp8iOcuthJs/UuKODAQbmY0uW4RfAX3KQehaz95vfstLZdvglQR1tdYAucYCfZVxTbUDNotnZjYZGjGdAZCf3ZymeZgTjUDQakiIY6iE0TXG8aBVltW38FbZu9jifKTe9rg1IiDGti12ehJDfKeBPdUloDzdSSOkqXTcBWmyYoTKvtS6EKQVTbJk4Wj/QssGwtYBAYnWup1AI2uxlT4R8Kh5jHjaIM8s+55LX6vU4VrIexeGrNsef9SJZVnMWGrq+2vpLyoN4EzxT3K3S6R4mnUG+JslmEtu78YNCfA6N6xgVLWNfKHZjdoeuJs4KPsTWpHCyArkjfBbV3cQKvGsNgG80ozXKv9stLqdM+HfNlCWYhsVrKwKVu+1zlc1Nl8DL67wGKrcUxMj3ayBDXhbUfB2ed0IhbQdKZLkMZtRrxytrAVbHtVuOYckQlhTO9WjRvBI+F9EI8i8DDN71023BKbEEi7tKDDgTdlJ2puIMqrnt+6DJ7xJAL235jKcXquL2TWyAsLsNk1Djkr6jGkJ2kwZbFNQucBp3s0MGY2SvEWFI4rWY80MvPT+2PBuICyfS0BAeI2forzA= diff --git a/manuscript/book.txt b/manuscript/book.txt index e82abab..fd02ee1 100644 --- a/manuscript/book.txt +++ b/manuscript/book.txt @@ -27,6 +27,8 @@ recipies/piwik.md recipies/autopirate.md recipies/nextcloud.md recipies/portainer.md +recipies/turtle-pool.md +recipies/tiny-tiny-rss.md sections/reference.md reference/oauth_proxy.md @@ -34,3 +36,4 @@ reference/data_layout.md reference/networks.md reference/git-docker.md reference/openvpn.md +reference/troubleshooting.md diff --git a/scripts/push-markua-to-branch.sh b/scripts/push-markua-to-branch.sh index 7354492..7d75f9f 100755 --- a/scripts/push-markua-to-branch.sh +++ b/scripts/push-markua-to-branch.sh @@ -19,11 +19,13 @@ upload_files() { git push --quiet --set-upstream origin-leanpub-preview leanpub-preview } -trigger_preview() { - curl -d "api_key=${LEANPUB-API-KEY}" https://leanpub.com/geek-cookbook/preview.json -} +# Not needed at this stage, since github integration still works. It's noted as being deprecated however, +# so might need this in future +#trigger_preview() { +# curl -d "api_key=${LEANPUB-API-KEY}" https://leanpub.com/geek-cookbook/preview.json +#} setup_git commit_website_files upload_files -trigger_preview +#trigger_preview From 7ef99757fd7357a3918b57f1af3518218986b776 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 7 Jun 2018 14:32:06 +1200 Subject: [PATCH 6/9] Added some sed rules --- scripts/markdown-to-markua.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scripts/markdown-to-markua.sh b/scripts/markdown-to-markua.sh index 707a0f7..aca7bc7 100755 --- a/scripts/markdown-to-markua.sh +++ b/scripts/markdown-to-markua.sh @@ -12,5 +12,11 @@ find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/🍷//g" find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/🏢//g" find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/❤️//g" find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/:turtle://g" +find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/👋//g" +find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/🐦//g" +find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/🐦//g" +find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/🐦//g" + + # Do nothing, yet. This is where the sed magic will go From 6e30c59eeb9ba3c93022899ef9a382abd50c0065 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 7 Jun 2018 14:57:46 +1200 Subject: [PATCH 7/9] Removed book emoji --- scripts/markdown-to-markua.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/markdown-to-markua.sh b/scripts/markdown-to-markua.sh index aca7bc7..b08da9c 100755 --- a/scripts/markdown-to-markua.sh +++ b/scripts/markdown-to-markua.sh @@ -14,7 +14,7 @@ find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/❤️//g" find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/:turtle://g" find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/👋//g" find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/🐦//g" -find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/🐦//g" +find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/📖//g" find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/🐦//g" From e2cb3999292d82fd5646e3b3c54e7d4bf60c60f9 Mon Sep 17 00:00:00 2001 From: Bencey Date: Thu, 7 Jun 2018 16:16:27 +1200 Subject: [PATCH 8/9] Removed all emojis from book --- scripts/markdown-to-markua.sh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/scripts/markdown-to-markua.sh b/scripts/markdown-to-markua.sh index b08da9c..a9c1718 100755 --- a/scripts/markdown-to-markua.sh +++ b/scripts/markdown-to-markua.sh @@ -11,11 +11,19 @@ find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/💰//g" find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/🍷//g" find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/🏢//g" find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/❤️//g" -find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/:turtle://g" +find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/🐢//g" find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/👋//g" find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/🐦//g" find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/📖//g" -find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/🐦//g" +find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/✉️//g" +find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/📺//g" +find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/🎥//g" +find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/🎵//g" +find manuscript -type f -name "*.md" -print0 | xargs -0 sed -i "s/😁//g" + + + + From 41a607493bf621c2718b469958f5735226344981 Mon Sep 17 00:00:00 2001 From: David Young Date: Thu, 7 Jun 2018 22:24:43 +1200 Subject: [PATCH 9/9] Fix images broken in leanpub --- manuscript/ha-docker-swarm/design.md | 6 +++--- ...shared-storage-replicated-gluster-volume.png | Bin 44077 -> 0 bytes .../images/docker-swarm-ha-function.png | Bin .../images/docker-swarm-node-failure.png | Bin .../images/docker-swarm-node-restore.png | Bin 5 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 manuscript/ha-docker-swarm/images/shared-storage-replicated-gluster-volume.png rename manuscript/{ha-docker-swarm => }/images/docker-swarm-ha-function.png (100%) rename manuscript/{ha-docker-swarm => }/images/docker-swarm-node-failure.png (100%) rename manuscript/{ha-docker-swarm => }/images/docker-swarm-node-restore.png (100%) diff --git a/manuscript/ha-docker-swarm/design.md b/manuscript/ha-docker-swarm/design.md index db3c61e..9b718f3 100644 --- a/manuscript/ha-docker-swarm/design.md +++ b/manuscript/ha-docker-swarm/design.md @@ -51,7 +51,7 @@ Assuming 3 nodes, under normal circumstances the following is illustrated: * The **traefik** service (in swarm mode) receives incoming requests (on http and https), and forwards them to individual containers. Traefik knows the containers names because it's able to access the docker socket. * All 3 nodes run keepalived, at different priorities. Since traefik is running as a swarm service and listening on TCP 80/443, requests made to the keepalived VIP and arriving at **any** of the swarm nodes will be forwarded to the traefik container (no matter which node it's on), and then onto the target backend. -![HA function](images/docker-swarm-ha-function.png) +![HA function](../images/docker-swarm-ha-function.png) ### Node failure @@ -63,7 +63,7 @@ In the case of a failure (or scheduled maintenance) of one of the nodes, the fol * The **traefik** service is either restarted or unaffected, and as the backend containers stop/start and change IP, traefik is aware and updates accordingly. * The keepalived VIP continues to function on the remaining nodes, and docker swarm continues to forward any traffic received on TCP 80/443 to the appropriate node. -![HA function](images/docker-swarm-node-failure.png) +![HA function](../images/docker-swarm-node-failure.png) ### Node restore @@ -75,7 +75,7 @@ When the failed (or upgraded) host is restored to service, the following is illu * Keepalived VIP regains full redundancy -![HA function](images/docker-swarm-node-restore.png) +![HA function](../images/docker-swarm-node-restore.png) ### Total cluster failure diff --git a/manuscript/ha-docker-swarm/images/shared-storage-replicated-gluster-volume.png b/manuscript/ha-docker-swarm/images/shared-storage-replicated-gluster-volume.png deleted file mode 100644 index 135a63f345ad997101d34e72ca63b889d8289686..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44077 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

;YdWD3_p=D2U zH^P_gUl&kjT6^1-J%BJ9V!it(V8lS>RS+Zk@i#0g8&kkZEv#%rVVsa&zN?b@efkT; zWQJo-jMHxT1ga<5ME*}93Fz_|&czBnB%s>C{ine~h|`{SMi_c{?|;7mqYAAW2TA?B zQ=;i#?ou)x0Aj3-mI@30mB~2JL%5(@7+`J1l{Ycfck0SHmT; ze}3P4FTmBSkqy>Z2W5sZ4zbKxy^$S<9m=o<0j0p%`&O z8vS8hSQhoZhwxRAf>?-W@ioSC(dOB3ij-l5?*V3{YNT3ZCz{>&Qqg2YcJ26@#R(Ua zy<;K7O&-t8<${Zu5x{x;?d&Y5X|knD*`R_RO*1HVj+SCMMT9c1C58W!Yy73{#*V6L5=tUgt0y&M8Z3Kyp0Cf&A-z?SjqY&R8m&l>PL)~$@jPrrh zhqq^KgUg2UN~M@2AE_^takSrwA53HgaM(4mC{O7Iu5UdAhy^2g9xv!49JPYunO`G@ z3~!;3w~uddw5|~(hFUh}@8b3;euC5AOgojxn%^*-qPZelw6=iM(F?OHI}l|Q9uQ%_ z$pO`U+KmizU6;8t)ut|$@DX;fK0XS^9ruZAI;9J zgCf5){=^$gcd2lk_c@NL1s;7CScJqZ6wROmjgRF(_HhkAwB$h6TO>EMI%`n z8_>4#R#vO^O=O4cTU)5LpV_CR^*^7I)?~8_>AXQUJx>|Tt^uVjj^>7BFxt61Z`0XH z{eCIGjLWAx-|8&~|9YFcw@bp?`LmCTq5fB34u#C&p{a~wUB?i*i)Tl9z)pSv_NAqV4+{c=qT z`}!Z#_)-v^CWI37)gI$BM!lrExs@w%$0ZPNvBAK=c@bu=V@@2N)0pfq(%tcfX+PYU|}| o>0yK6>+8$s;Ns+IZRuvi=jvgXwkJ&sdsYU4j0LP8~djJ3c diff --git a/manuscript/ha-docker-swarm/images/docker-swarm-ha-function.png b/manuscript/images/docker-swarm-ha-function.png similarity index 100% rename from manuscript/ha-docker-swarm/images/docker-swarm-ha-function.png rename to manuscript/images/docker-swarm-ha-function.png diff --git a/manuscript/ha-docker-swarm/images/docker-swarm-node-failure.png b/manuscript/images/docker-swarm-node-failure.png similarity index 100% rename from manuscript/ha-docker-swarm/images/docker-swarm-node-failure.png rename to manuscript/images/docker-swarm-node-failure.png diff --git a/manuscript/ha-docker-swarm/images/docker-swarm-node-restore.png b/manuscript/images/docker-swarm-node-restore.png similarity index 100% rename from manuscript/ha-docker-swarm/images/docker-swarm-node-restore.png rename to manuscript/images/docker-swarm-node-restore.png