unoverse 0.1.146 → 0.1.147

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17,3 +17,12 @@ become = True
17
17
  become_method = sudo
18
18
  become_user = root
19
19
  become_ask_pass = False
20
+
21
+ [ssh_connection]
22
+ # A transient TCP timeout must not kill a deploy: a single dropped SYN to a busy
23
+ # or far-away VM read as UNREACHABLE on the very first task. Retry the connect
24
+ # (ConnectionAttempts) and the connection (retries) before declaring the host gone.
25
+ # The -C/ControlMaster/ControlPersist flags are ansible's defaults, restated
26
+ # because ssh_args REPLACES them rather than appending.
27
+ ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s -o ConnectionAttempts=5 -o ConnectTimeout=15 -o ServerAliveInterval=15 -o ServerAliveCountMax=4
28
+ retries = 3
@@ -819,8 +819,20 @@ EOF
819
819
  # never been migrated, and reported success. The stamp is written only after install,
820
820
  # database and verify have all passed, so an interrupted setup resumes as a setup.
821
821
  if [ -z "$subcommand" ]; then
822
- if ! ssh -o BatchMode=yes -o StrictHostKeyChecking=accept-new -o ConnectTimeout=15 \
823
- "$deploy_user@$deploy_host" 'test -f /opt/gravity/.setup-complete' >/dev/null 2>&1; then
822
+ # "COULD NOT ASK" IS NOT "NOT SET UP". ssh exits 255 on a connection failure and
823
+ # with the remote command's status otherwise — and a transient timeout here once
824
+ # reclassified a healthy, deployed server as first-time, pointing a full install at
825
+ # it. Retry the connect, and if the host still cannot be reached, stop and say so
826
+ # rather than guessing what it is.
827
+ local stamp_probe=0
828
+ ssh -o BatchMode=yes -o StrictHostKeyChecking=accept-new -o ConnectTimeout=15 \
829
+ -o ConnectionAttempts=5 \
830
+ "$deploy_user@$deploy_host" 'test -f /opt/gravity/.setup-complete' >/dev/null 2>&1 || stamp_probe=$?
831
+ if [ "$stamp_probe" -eq 255 ]; then
832
+ rm -f "$tmp_inventory"
833
+ fail "Cannot reach $deploy_user@$deploy_host over SSH (tried 5 times). Check the network / security-group admin rule, then: unoverse deploy $cloud"
834
+ exit 1
835
+ elif [ "$stamp_probe" -ne 0 ]; then
824
836
  echo ""
825
837
  info "This server's setup has not finished. Running it ${DIM}(install, database, verify)${NC}"
826
838
  subcommand="first-time"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unoverse",
3
- "version": "0.1.146",
3
+ "version": "0.1.147",
4
4
  "description": "The Unoverse front door — create a Studio project, a universe, or a client app, and launch Studio.",
5
5
  "license": "SEE LICENSE IN README.md",
6
6
  "type": "module",