diff --git a/spring-cloud-launcher/spring-cloud-launcher-cli/src/main/java/org/springframework/cloud/launcher/cli/LauncherCommand.java b/spring-cloud-launcher/spring-cloud-launcher-cli/src/main/java/org/springframework/cloud/launcher/cli/LauncherCommand.java index a8e4553..b482bcb 100644 --- a/spring-cloud-launcher/spring-cloud-launcher-cli/src/main/java/org/springframework/cloud/launcher/cli/LauncherCommand.java +++ b/spring-cloud-launcher/spring-cloud-launcher-cli/src/main/java/org/springframework/cloud/launcher/cli/LauncherCommand.java @@ -77,6 +77,8 @@ public class LauncherCommand extends OptionParsingCommand { private OptionSpec debugOption; private OptionSpec listOption; + private OptionSpec deployerOption; + private OptionSpec profileOption; private OptionSpec versionOption; @Override @@ -88,6 +90,12 @@ public class LauncherCommand extends OptionParsingCommand { "Debug logging for the deployer"); this.listOption = option(Arrays.asList("list", "l"), "List the deployables (don't launch anything)"); + this.deployerOption = option(Arrays.asList("deployer"), + "Use a different deployer instead of the default local one (either 'local' or 'thin')") + .withRequiredArg().defaultsTo("local"); + this.profileOption = option(Arrays.asList("profile", "p"), + "Use a different Spring profile (or profiles) for the deployer app, e.g. 'rabbit' for a Spring Cloud Bus with RabbitMQ") + .withOptionalArg(); this.versionOption = option(Arrays.asList("version", "v"), "Show the version (don't launch anything)"); } @@ -135,6 +143,12 @@ public class LauncherCommand extends OptionParsingCommand { if (options.has(this.debugOption)) { args.add("--debug=true"); } + if (options.has(this.profileOption)) { + args.add("--spring.profiles.active=" + profileOption.value(options)); + } + if (options.has(this.deployerOption)) { + args.add("--thin.profile=" + deployerOption.value(options)); + } if (options.has(this.listOption)) { args.add("--launcher.list=true"); } diff --git a/spring-cloud-launcher/spring-cloud-launcher-configserver/src/main/resources/META-INF/thin-rabbit.properties b/spring-cloud-launcher/spring-cloud-launcher-configserver/src/main/resources/META-INF/thin-rabbit.properties new file mode 100644 index 0000000..0343528 --- /dev/null +++ b/spring-cloud-launcher/spring-cloud-launcher-configserver/src/main/resources/META-INF/thin-rabbit.properties @@ -0,0 +1,2 @@ +exclusions.spring-cloud-starter-bus-kafka: org.springframework.cloud:spring-cloud-starter-bus-kafka +dependencies.spring-cloud-starter-bus-amqp: org.springframework.cloud:spring-cloud-starter-bus-amqp diff --git a/spring-cloud-launcher/spring-cloud-launcher-dataflow/src/main/resources/META-INF/thin-rabbit.properties b/spring-cloud-launcher/spring-cloud-launcher-dataflow/src/main/resources/META-INF/thin-rabbit.properties new file mode 100644 index 0000000..0343528 --- /dev/null +++ b/spring-cloud-launcher/spring-cloud-launcher-dataflow/src/main/resources/META-INF/thin-rabbit.properties @@ -0,0 +1,2 @@ +exclusions.spring-cloud-starter-bus-kafka: org.springframework.cloud:spring-cloud-starter-bus-kafka +dependencies.spring-cloud-starter-bus-amqp: org.springframework.cloud:spring-cloud-starter-bus-amqp diff --git a/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/Deployer.java b/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/Deployer.java index 625f720..10ca7a4 100644 --- a/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/Deployer.java +++ b/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/Deployer.java @@ -178,6 +178,7 @@ public class Deployer { appDefProps.putAll(other.getEnabled()); } } + appDefProps.putAll(deployable.getApplicationProperties()); Map map = extractProperties("/" + deployable.getName() + ".yml"); for (String key : map.keySet()) { appDefProps.put(key, map.get(key)); @@ -198,7 +199,8 @@ public class Deployer { logger.debug("Deployment Properties: {}", deploymentProperties); String id = deployer.deploy(request); AppStatus appStatus = getAppStatus(deployer, id); - // TODO: stream stdout/stderr like docker-compose (with colors and prefix) + // TODO: stream stdout/stderr like docker-compose (with colors and prefix) - the + // colors work with the "thin" deployer, but there is no prefix in the logs yet if (deployable.isWaitUntilStarted()) { try { diff --git a/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/DeployerProperties.java b/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/DeployerProperties.java index f6cafb3..f5c2948 100644 --- a/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/DeployerProperties.java +++ b/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/DeployerProperties.java @@ -25,6 +25,7 @@ import javax.annotation.PostConstruct; import javax.validation.constraints.NotNull; import org.hibernate.validator.constraints.NotEmpty; + import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.core.Ordered; @@ -149,12 +150,19 @@ public class DeployerProperties { */ private Map enabled = new LinkedHashMap<>(); /** - * A map of "deployment" properties passed to the deployer (not the app) when this - * app is launched. You can use spring.cloud.deployer.local.javaOpts - * here to pass JVM args to a local deployer. + * A map of "deployment" properties passed to the deployer (not the app) when an + * app is launched. E.g. you can use + * spring.cloud.deployer.local.javaOpts here to pass JVM args to a + * local deployer. */ private Map properties = new LinkedHashMap<>(); + /** + * A map of properties passed to the app (not the deployer) when an app is + * launched. + */ + private Map applicationProperties; + public String getCoordinates() { return this.coordinates; } @@ -228,6 +236,14 @@ public class DeployerProperties { this.properties = properties; } + public Map getApplicationProperties() { + return applicationProperties; + } + + public void setApplicationProperties(Map applicationProperties) { + this.applicationProperties = applicationProperties; + } + @Override public String toString() { final StringBuffer sb = new StringBuffer("Deployable{"); diff --git a/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/resources/cloud.yml b/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/resources/cloud.yml index 670b642..df60171 100644 --- a/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/resources/cloud.yml +++ b/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/resources/cloud.yml @@ -24,12 +24,16 @@ spring: properties: spring.cloud.deployer.memory: ${dt.mem} spring.cloud.deployer.local.javaOpts: ${dt.opts} + application-properties: + management.security.enabled: false dataflow: coordinates: ${dt.pre}dataflow:${dt.ver} port: 9393 properties: spring.cloud.deployer.memory: ${dt.mem} spring.cloud.deployer.local.javaOpts: ${dt.opts} + application-properties: + management.security.enabled: false eureka: coordinates: ${dt.pre}eureka:${dt.ver} port: 8761 @@ -39,6 +43,8 @@ spring: properties: spring.cloud.deployer.memory: ${dt.mem} spring.cloud.deployer.local.javaOpts: ${dt.opts} + application-properties: + management.security.enabled: false h2: coordinates: ${dt.pre}h2:${dt.ver} port: 9095 @@ -50,12 +56,16 @@ spring: properties: spring.cloud.deployer.memory: ${dt.mem} spring.cloud.deployer.local.javaOpts: ${dt.opts} + application-properties: + management.security.enabled: false hystrixdashboard: coordinates: ${dt.pre}hystrixdashboard:${dt.ver} port: 7979 properties: spring.cloud.deployer.memory: ${dt.mem} spring.cloud.deployer.local.javaOpts: ${dt.opts} + application-properties: + management.security.enabled: false kafka: coordinates: ${dt.pre}kafka:${dt.ver} port: 9091 @@ -66,6 +76,8 @@ spring: properties: spring.cloud.deployer.memory: ${dt.mem} spring.cloud.deployer.local.javaOpts: ${dt.opts} + application-properties: + management.security.enabled: false zipkin: coordinates: ${dt.pre}zipkin:${dt.ver} port: 9411 @@ -73,4 +85,43 @@ spring: properties: spring.cloud.deployer.memory: ${dt.mem} spring.cloud.deployer.local.javaOpts: ${dt.opts} + application-properties: + management.security.enabled: false deploy: ${launcher.deploy:configserver,eureka} + +--- +spring: + profiles: rabbit + cloud: + launcher: + deployables: + configserver: + properties: + spring.cloud.deployer.thin.profile: rabbit + application-properties: + spring.cloud.bus.enabled: true + eureka: + properties: + spring.cloud.deployer.thin.profile: rabbit + application-properties: + spring.cloud.bus.enabled: true + h2: + properties: + spring.cloud.deployer.thin.profile: rabbit + application-properties: + spring.cloud.bus.enabled: true + dataflow: + properties: + spring.cloud.deployer.thin.profile: rabbit + application-properties: + spring.cloud.bus.enabled: true + hystrixdashboard: + properties: + spring.cloud.deployer.thin.profile: rabbit + application-properties: + spring.cloud.bus.enabled: true + zipkin: + properties: + spring.cloud.deployer.thin.profile: rabbit + application-properties: + spring.cloud.bus.enabled: true \ No newline at end of file diff --git a/spring-cloud-launcher/spring-cloud-launcher-eureka/src/main/resources/META-INF/thin-rabbit.properties b/spring-cloud-launcher/spring-cloud-launcher-eureka/src/main/resources/META-INF/thin-rabbit.properties new file mode 100644 index 0000000..0343528 --- /dev/null +++ b/spring-cloud-launcher/spring-cloud-launcher-eureka/src/main/resources/META-INF/thin-rabbit.properties @@ -0,0 +1,2 @@ +exclusions.spring-cloud-starter-bus-kafka: org.springframework.cloud:spring-cloud-starter-bus-kafka +dependencies.spring-cloud-starter-bus-amqp: org.springframework.cloud:spring-cloud-starter-bus-amqp diff --git a/spring-cloud-launcher/spring-cloud-launcher-h2/pom.xml b/spring-cloud-launcher/spring-cloud-launcher-h2/pom.xml index bf46434..3bbe4d8 100644 --- a/spring-cloud-launcher/spring-cloud-launcher-h2/pom.xml +++ b/spring-cloud-launcher/spring-cloud-launcher-h2/pom.xml @@ -33,6 +33,10 @@ org.springframework.cloud spring-cloud-starter-config + + org.springframework.cloud + spring-cloud-starter-bus-kafka + org.springframework.cloud spring-cloud-starter-eureka diff --git a/spring-cloud-launcher/spring-cloud-launcher-h2/src/main/resources/META-INF/thin-rabbit.properties b/spring-cloud-launcher/spring-cloud-launcher-h2/src/main/resources/META-INF/thin-rabbit.properties new file mode 100644 index 0000000..0343528 --- /dev/null +++ b/spring-cloud-launcher/spring-cloud-launcher-h2/src/main/resources/META-INF/thin-rabbit.properties @@ -0,0 +1,2 @@ +exclusions.spring-cloud-starter-bus-kafka: org.springframework.cloud:spring-cloud-starter-bus-kafka +dependencies.spring-cloud-starter-bus-amqp: org.springframework.cloud:spring-cloud-starter-bus-amqp diff --git a/spring-cloud-launcher/spring-cloud-launcher-hystrixdashboard/src/main/resources/META-INF/thin-rabbit.properties b/spring-cloud-launcher/spring-cloud-launcher-hystrixdashboard/src/main/resources/META-INF/thin-rabbit.properties new file mode 100644 index 0000000..0343528 --- /dev/null +++ b/spring-cloud-launcher/spring-cloud-launcher-hystrixdashboard/src/main/resources/META-INF/thin-rabbit.properties @@ -0,0 +1,2 @@ +exclusions.spring-cloud-starter-bus-kafka: org.springframework.cloud:spring-cloud-starter-bus-kafka +dependencies.spring-cloud-starter-bus-amqp: org.springframework.cloud:spring-cloud-starter-bus-amqp diff --git a/spring-cloud-launcher/spring-cloud-launcher-zipkin/src/main/resources/META-INF/thin-rabbit.properties b/spring-cloud-launcher/spring-cloud-launcher-zipkin/src/main/resources/META-INF/thin-rabbit.properties new file mode 100644 index 0000000..0343528 --- /dev/null +++ b/spring-cloud-launcher/spring-cloud-launcher-zipkin/src/main/resources/META-INF/thin-rabbit.properties @@ -0,0 +1,2 @@ +exclusions.spring-cloud-starter-bus-kafka: org.springframework.cloud:spring-cloud-starter-bus-kafka +dependencies.spring-cloud-starter-bus-amqp: org.springframework.cloud:spring-cloud-starter-bus-amqp