137 lines
3.9 KiB
Plaintext
137 lines
3.9 KiB
Plaintext
type: install
|
|
name: Staging Environment
|
|
description: Create staging environment from selected live environment
|
|
logo: https://d33v4339jhl8k0.cloudfront.net/docs/assets/629d6154f38bfd3f4a4c3046/images/62ce4ffaeabe9a7235b3d220/white-300.png
|
|
skipNodeEmails: false
|
|
|
|
settings:
|
|
fields:
|
|
- caption: Target Environment
|
|
editable: true
|
|
type: envlist
|
|
name: sourceEnv
|
|
valueField: shortdomain
|
|
tooltip: Select the Target Environment
|
|
- type: string
|
|
name: nodeGroup
|
|
caption: Node Group
|
|
default: cp
|
|
hideLabel: true
|
|
hidden: true
|
|
- caption: Display Name
|
|
editable: true
|
|
type: string
|
|
name: displayName
|
|
default: My Environment
|
|
tooltip: Enter the desired display name for the environment
|
|
- caption: Environment Name
|
|
type: envname
|
|
name: stagingEnv
|
|
randomName: true
|
|
showFullDomain: true
|
|
hidden: false
|
|
dependsOn: regionFieldName
|
|
displayName: ${settings.displayName}
|
|
|
|
|
|
|
|
onInstall:
|
|
- initNodes:
|
|
envName: ${settings.sourceEnv}
|
|
namespace: sourceEnv
|
|
- cloneSource
|
|
- remoteOperations:
|
|
envName: ${settings.sourceEnv}
|
|
nodeGroup: ${settings.nodeGroup}
|
|
cmd: |-
|
|
|
|
mkdir /var/www/webroot/ROOT/dbexport
|
|
touch /var/www/webroot/ROOT/dbexport/dbexport.sql
|
|
wp db export /var/www/webroot/ROOT/dbexport/dbexport.sql --path=/var/www/webroot/ROOT/ --quiet
|
|
user: root
|
|
sayYes: true
|
|
- initNodes:
|
|
envName: ${settings.stagingEnv}
|
|
namespace: stagingEnv
|
|
|
|
- mountLive: NFS4
|
|
|
|
|
|
|
|
actions:
|
|
initNodes:
|
|
envName: ${this.envName}
|
|
namespace: ${this.namespace}
|
|
script: |
|
|
let nodes = {}, resp = api.env.control.GetEnvInfo(envName, session)
|
|
if (resp.result != 0) return resp
|
|
resp.nodes.sort((node1, node2) => node1.id - node2.id)
|
|
for (let node of resp.nodes) {
|
|
nodes[node.nodeGroup] = nodes[node.nodeGroup] || []
|
|
nodes[node.nodeGroup].push(node)
|
|
}
|
|
let globals = {}
|
|
globals[namespace] = nodes
|
|
return { result: 0, onAfterReturn: { setGlobals: globals } }
|
|
|
|
cloneSource:
|
|
- env.control.CloneEnv:
|
|
envName: ${settings.sourceEnv}
|
|
srcEnvName: ${settings.sourceEnv}
|
|
dstEnvName: ${settings.stagingEnv}
|
|
useExternalMounts: false
|
|
|
|
remoteOperations:
|
|
env.control.ExecCmdByGroup:
|
|
envName: ${settings.sourceEnv}
|
|
nodeGroup: ${this.nodeGroup}
|
|
commandList:
|
|
- command: ${this.cmd}
|
|
|
|
|
|
|
|
mountLive:
|
|
- log: Mount Storage
|
|
- env.file.AddMountPointById:
|
|
envName: ${settings.stagingEnv}
|
|
nodeId: ${globals.stagingEnv.cp[0].id}
|
|
path: /var/www/webroot/sourcefiles
|
|
protocol: nfs4
|
|
sourcePath: /var/www/webroot/ROOT
|
|
sourceNodeId: ${globals.sourceEnv.cp[0].id}
|
|
name: LiveFilesMount
|
|
readOnly: false
|
|
addons:
|
|
- id: LiveSync
|
|
targetNodes:
|
|
envName: ${settings.sourceEnv}
|
|
nodeGroup: ${settings.nodeGroup}
|
|
|
|
onInstall:
|
|
|
|
writeFile:
|
|
- nodeGroup: ${settings.nodeGroup}
|
|
path: /var/www/webroot/ROOT/sycfromlive.sh
|
|
body: '#!/bin/bash
|
|
|
|
cp -R -u /var/www/webroot/sourcefiles/* /var/www/webroot/ROOT
|
|
|
|
wp db import /var/www/webroot/sourcefiles/dbexport/dbexport.sql --path=/var/www/webroot/ROOT/ --quiet
|
|
'
|
|
cmd [cp]:
|
|
- chmod 701 /var/www/webroot/ROOT/sycfromlive.sh
|
|
|
|
actions:
|
|
liveSync:
|
|
cmd [cp]:
|
|
|
|
- /var/www/webroot/ROOT/sycfromlive.sh
|
|
|
|
user: root
|
|
sayYes: true
|
|
buttons:
|
|
- caption: Sync From Live
|
|
action: liveSync
|
|
loadingText: Syching from live...
|
|
confirmText: Do you want to initiate sync process?
|
|
successText: The syching process has been finished successfully. |