-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
0b18279
commit 5916725
Showing
6 changed files
with
370 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
resource "aem_instance" "single" { | ||
client { | ||
type = "local" | ||
settings = { | ||
} | ||
} | ||
|
||
system { | ||
data_dir = local.compose_dir | ||
work_dir = local.work_dir | ||
bootstrap = { | ||
inline = [ | ||
] | ||
} | ||
} | ||
|
||
compose { | ||
config = file("aem.yml") | ||
create = { | ||
inline = [ | ||
"mkdir -p ${local.compose_dir}/aem/home/lib", | ||
"cp ${local.library_dir}/* ${local.compose_dir}/aem/home/lib", | ||
"sh aemw instance init", | ||
"sh aemw instance create", | ||
] | ||
} | ||
configure = { | ||
inline = [ | ||
"sh aemw osgi config save --pid 'org.apache.sling.jcr.davex.impl.servlets.SlingDavExServlet' --input-string 'alias: /crx/server'", | ||
"sh aemw repl agent setup -A --location 'author' --name 'publish' --input-string '{enabled: true, transportUri: \"http://localhost:4503/bin/receive?sling:authRequestLogin=1\", transportUser: admin, transportPassword: admin, userId: admin}'", | ||
] | ||
} | ||
} | ||
} | ||
|
||
locals { | ||
env = "local" | ||
data_dir = "~/data/${local.env}" | ||
compose_dir = "${local.data_dir}/aemc" | ||
work_dir = "~/tmp/${local.env}/aemc" | ||
library_dir = "~/lib" | ||
} | ||
|
||
output "aem_instances" { | ||
value = "127.0.0.1" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,258 @@ | ||
# AEM instances to work with | ||
instance: | ||
|
||
# Full details of local or remote instances | ||
config: | ||
local_author: | ||
active: true | ||
http_url: http://127.0.0.1:6502 | ||
user: admin | ||
password: admin | ||
run_modes: [local] | ||
jvm_opts: | ||
- -server | ||
- -Djava.awt.headless=true | ||
- -Djava.io.tmpdir=[[canonicalPath .Path "aem/home/tmp"]] | ||
- -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:16502 | ||
- -Duser.language=en | ||
- -Duser.country=US | ||
- -Duser.timezone=UTC | ||
start_opts: [] | ||
secret_vars: | ||
- ACME_SECRET=value | ||
env_vars: | ||
- ACME_VAR=value | ||
sling_props: [] | ||
local_publish: | ||
active: true | ||
http_url: http://127.0.0.1:6503 | ||
user: admin | ||
password: admin | ||
run_modes: [local] | ||
jvm_opts: | ||
- -server | ||
- -Djava.awt.headless=true | ||
- -Djava.io.tmpdir=[[canonicalPath .Path "aem/home/tmp"]] | ||
- -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:16503 | ||
- -Duser.language=en | ||
- -Duser.country=US | ||
- -Duser.timezone=UTC | ||
start_opts: [] | ||
secret_vars: | ||
- ACME_SECRET=value | ||
env_vars: | ||
- ACME_VAR=value | ||
sling_props: [] | ||
|
||
# Tuning performance & reliability | ||
# 'auto' - for more than 1 local instances - 'serial', otherwise 'parallel' | ||
# 'parallel' - for working with remote instances | ||
# 'serial' - for working with local instances | ||
processing_mode: auto | ||
|
||
# HTTP client settings | ||
http: | ||
timeout: 10m | ||
debug: false | ||
disable_warn: true | ||
|
||
# State checking | ||
check: | ||
# Time to wait before first state checking (to avoid false-positives) | ||
warmup: 1s | ||
# Time to wait for next state checking | ||
interval: 6s | ||
# Number of successful check attempts that indicates end of checking | ||
done_threshold: 3 | ||
# Wait only for those instances whose state has been changed internally (unaware of external changes) | ||
await_strict: true | ||
# Max time to wait for the instance to be healthy after executing the start script or e.g deploying a package | ||
await_started: | ||
timeout: 30m | ||
# Max time to wait for the instance to be stopped after executing the stop script | ||
await_stopped: | ||
timeout: 10m | ||
# Max time in which socket connection to instance should be established | ||
reachable: | ||
skip: false | ||
timeout: 3s | ||
# Bundle state tracking | ||
bundle_stable: | ||
skip: false | ||
symbolic_names_ignored: [] | ||
# OSGi events tracking | ||
event_stable: | ||
skip: false | ||
# Topics indicating that instance is not stable | ||
topics_unstable: | ||
- "org/osgi/framework/ServiceEvent/*" | ||
- "org/osgi/framework/FrameworkEvent/*" | ||
- "org/osgi/framework/BundleEvent/*" | ||
# Ignored service names to handle known issues | ||
details_ignored: | ||
- "*.*MBean" | ||
- "org.osgi.service.component.runtime.ServiceComponentRuntime" | ||
- "java.util.ResourceBundle" | ||
received_max_age: 5s | ||
# OSGi components state tracking | ||
component_stable: | ||
skip: false | ||
pids: | ||
include: ['com.day.crx.packaging.*', 'org.apache.sling.installer.*'] | ||
exclude: ['org.apache.sling.installer.hc.*', 'org.apache.sling.installer.core.impl.console.*'] | ||
match: | ||
"disabled": [] | ||
"no config": [] | ||
"unsatisfied (reference)": [] | ||
"satisfied": [] | ||
# Sling Installer tracking | ||
installer: | ||
skip: false | ||
# JMX state checking | ||
state: true | ||
# Pause Installation nodes checking | ||
pause: true | ||
# Specific endpoints / paths (like login page) | ||
path_ready: | ||
timeout: 10s | ||
login_page: | ||
skip: false | ||
path: "/libs/granite/core/content/login.html" | ||
status_code: 200 | ||
contained_text: QUICKSTART_HOMEPAGE | ||
|
||
# Managed locally (set up automatically) | ||
local: | ||
# Current runtime dir (Sling launchpad, JCR repository) | ||
unpack_dir: "aem/home/var/instance" | ||
# Archived runtime dir (AEM backup files '*.aemb.zst') | ||
backup_dir: "aem/home/var/backup" | ||
|
||
# Oak Run tool options (offline instance management) | ||
oak_run: | ||
download_url: "https://repo1.maven.org/maven2/org/apache/jackrabbit/oak-run/1.44.0/oak-run-1.44.0.jar" | ||
store_path: "crx-quickstart/repository/segmentstore" | ||
|
||
# Source files | ||
quickstart: | ||
# AEM SDK ZIP or JAR | ||
dist_file: 'aem/home/lib/{aem-sdk,cq-quickstart}-*.{zip,jar}' | ||
# AEM License properties file | ||
license_file: "aem/home/lib/license.properties" | ||
|
||
# Status discovery (timezone, AEM version, etc) | ||
status: | ||
timeout: 500ms | ||
|
||
# JCR Repository | ||
repo: | ||
property_change_ignored: | ||
# AEM assigns them automatically | ||
- "jcr:created" | ||
- "cq:lastModified" | ||
# AEM encrypts it right after changing by replication agent setup command | ||
- "transportPassword" | ||
|
||
# CRX Package Manager | ||
package: | ||
# Force re-uploading/installing of snapshot AEM packages (just built / unreleased) | ||
snapshot_patterns: [ "**/*-SNAPSHOT.zip" ] | ||
snapshot_ignored: false | ||
# Use checksums to avoid re-deployments when snapshot AEM packages are unchanged | ||
snapshot_deploy_skipping: true | ||
# Disable following workflow launchers for a package deployment time only | ||
toggled_workflows: [/libs/settings/workflow/launcher/config/update_asset_*,/libs/settings/workflow/launcher/config/dam_*] | ||
# Also sub-packages | ||
install_recursive: true | ||
# Use slower HTML endpoint for deployments but with better troubleshooting | ||
install_html: | ||
enabled: false | ||
# Print HTML directly to console instead of writing to file | ||
console: false | ||
# Fail on case 'installed with errors' | ||
strict: true | ||
# Number of changes after which the commit to the repository is performed | ||
install_save_threshold: 1024 | ||
# Allows to relax dependency handling if needed | ||
install_dependency_handling: required | ||
# Controls how 'rep:policy' nodes are handled during import | ||
install_ac_handling: '' | ||
|
||
# 'SSL By Default' | ||
ssl: | ||
setup_timeout: 30s | ||
|
||
# OSGi Framework | ||
osgi: | ||
shutdown_delay: 3s | ||
|
||
bundle: | ||
install: | ||
start: true | ||
start_level: 20 | ||
refresh_packages: true | ||
|
||
# Crypto Support | ||
crypto: | ||
key_bundle_symbolic_name: com.adobe.granite.crypto.file | ||
|
||
# Replication | ||
replication: | ||
bundle_symbolic_name: com.day.cq.cq-replication | ||
|
||
# Workflow Manager | ||
workflow: | ||
launcher: | ||
lib_root: /libs/settings/workflow/launcher | ||
config_root: /conf/global/settings/workflow/launcher | ||
toggle_retry: | ||
timeout: 10m | ||
delay: 10s | ||
|
||
java: | ||
# Require following versions before e.g running AEM instances | ||
version_constraints: ">= 11, < 12" | ||
|
||
# Pre-installed local JDK dir | ||
# a) keep it empty to download open source Java automatically for current OS and architecture | ||
# b) set it to absolute path or to env var '[[.Env.JAVA_HOME]]' to indicate where closed source Java like Oracle is installed | ||
home_dir: "" | ||
|
||
# Auto-installed JDK options | ||
download: | ||
# Source URL with template vars support | ||
url: "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.18%2B10/OpenJDK11U-jdk_[[.Arch]]_[[.Os]]_hotspot_11.0.18_10.[[.ArchiveExt]]" | ||
# Map source URL template vars to be compatible with Adoptium Java | ||
replacements: | ||
# Var 'Os' (GOOS) | ||
"darwin": "mac" | ||
# Var 'Arch' (GOARCH) | ||
"x86_64": "x64" | ||
"amd64": "x64" | ||
"386": "x86-32" | ||
# enforce non-ARM Java as some AEM features are not working on ARM (e.g Scene7) | ||
"arm64": "x64" | ||
"aarch64": "x64" | ||
|
||
base: | ||
# Location of temporary files (downloaded AEM packages, etc) | ||
tmp_dir: aem/home/tmp | ||
# Location of supportive tools (downloaded Java, OakRun, unpacked AEM SDK) | ||
tool_dir: aem/home/opt | ||
|
||
log: | ||
level: info | ||
timestamp_format: "2006-01-02 15:04:05" | ||
full_timestamp: true | ||
|
||
input: | ||
format: yml | ||
file: STDIN | ||
|
||
output: | ||
format: text | ||
log: | ||
# File path of logs written especially when output format is different than 'text' | ||
file: aem/home/var/log/aem.log | ||
# Controls where outputs and logs should be written to when format is 'text' (console|file|both) | ||
mode: both |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
terraform { | ||
required_providers { | ||
aem = { | ||
source = "registry.terraform.io/wttech/aem" | ||
version = "< 2.0.0" | ||
} | ||
} | ||
} | ||
|
||
provider "aem" {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
package client | ||
|
||
import ( | ||
"fmt" | ||
"os/exec" | ||
"strings" | ||
) | ||
|
||
type LocalConnection struct { | ||
} | ||
|
||
func (a *LocalConnection) Info() string { | ||
return "local environment" | ||
} | ||
|
||
func (a *LocalConnection) User() string { | ||
return "" | ||
} | ||
|
||
func (a *LocalConnection) Connect() error { | ||
return nil | ||
} | ||
|
||
func (a *LocalConnection) Disconnect() error { | ||
return nil | ||
} | ||
|
||
func (a *LocalConnection) Command(cmdLine []string) ([]byte, error) { | ||
var alterCmdLine []string | ||
for _, cmdElem := range cmdLine { | ||
alterCmdLine = append(alterCmdLine, strings.Trim(cmdElem, `"`)) | ||
} | ||
cmd := exec.Command(alterCmdLine[0], alterCmdLine[1:]...) | ||
output, err := cmd.Output() | ||
if err != nil { | ||
return nil, fmt.Errorf("local: error executing command: %v", err) | ||
} | ||
return output, nil | ||
} | ||
|
||
func (a *LocalConnection) CopyFile(localPath string, remotePath string) error { | ||
cmd := fmt.Sprintf("cp %s %s", localPath, remotePath) | ||
cmdLine := []string{"sh", "-c", "\"" + cmd + "\""} | ||
_, err := a.Command(cmdLine) | ||
return err | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters