Skip to content

Commit ecef7ab

Browse files
committed
Updates for 11.0.0.6
1 parent 10bd561 commit ecef7ab

File tree

7 files changed

+488
-365
lines changed

7 files changed

+488
-365
lines changed

CHANGELOG.md

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,28 @@
11
# Change log
22

3-
## 11.0.0.5 (2019-07-x)
3+
## 11.0.0.6 (2019-10-30)
4+
5+
**Breaking changes**:
6+
* None
7+
8+
**Other changes**:
9+
* Updated to use the 11.0.0.6 build
10+
* Support metrics when Integration Server is using TLS
11+
12+
## 11.0.0.5.1 (2019-09-24)
13+
14+
**Breaking changes**:
15+
* None
16+
17+
**Other changes**:
18+
* New image that includes an MQ client
19+
* Supports MQ 9.1.3 images
20+
* Support for defining custom ports
21+
* Support for running switches
22+
* Ability to set up operator, editor, and audit users for the ACE web UI, in addition to admin and viewer users
23+
* Support for LEL User Exit files
24+
25+
## 11.0.0.5 (2019-07-05)
426

527
**Breaking changes**:
628
* When using MQ, the UID of the mqm user is now 888. You need to run the container with an entrypoint of `runmqserver -i` under the root user to update any existing files.

README.md

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,21 @@ You can build an image containing one of the following combinations:
1313

1414
# Building a container image
1515

16-
Download a copy of App Connect Enterprise (ie. `ace-11.0.0.5.tar.gz`) and place it in the `deps` folder. When building the image use `build-arg` to specify the name of the file: `--build-arg ACE_INSTALL=ace-11.0.0.5.tar.gz`
16+
Download a copy of App Connect Enterprise (ie. `ace-11.0.0.6.tar.gz`) and place it in the `deps` folder. When building the image use `build-arg` to specify the name of the file: `--build-arg ACE_INSTALL=ace-11.0.0.6.tar.gz`
1717

18-
- **Important:** Only ACE version **11.0.0.5 or greater** is supported.
18+
- **Important:** Only ACE version **11.0.0.6 or greater** is supported.
1919

2020
Choose if you want to have an image with just App Connect Enterprise or an image with both App Connect Enterprise and IBM MQ Advanced.
2121

2222
### Building a container image which contains an IBM Service provided fix for ACE
2323

2424
You may have been provided with a fix for App Connect Enterprise by IBM Support, this fix will have a name of the form `11.0.0.X-ACE-LinuxX64-TF12345.tar.gz`. In order to apply this fix follow these steps.
2525
- On a local system extract the App Connect Enterprise archive
26-
`tar -xvf ace-11.0.0.5.tar.gz`
26+
`tar -xvf ace-11.0.0.6.tar.gz`
2727
- Extract the fix package into expanded App Connect Enterprise installation
28-
`tar -xvf /path/to/11.0.0.5-ACE-LinuxX64-TF12345.tar.gz --directory ace-11.0.0.5`
28+
`tar -xvf /path/to/11.0.0.6-ACE-LinuxX64-TF12345.tar.gz --directory ace-11.0.0.6`
2929
- Tar and compress the resulting App Connect Enterprise installation
30-
`tar -cvf ace-11.0.0.5_with_IT12345.tar ace-11.0.0.5`
30+
`tar -cvf ace-11.0.0.5_with_IT12345.tar ace-11.0.0.6`
3131
`gzip ace-11.0.0.5_with_IT12345.tar`
3232
- Place the resulting `ace-11.0.0.5_with_IT12345.tar.gz` file in the `deps` folder and when building using the `build-arg` to specify the name of the file: `--build-arg ACE_INSTALL=ace-11.0.0.5_with_IT12345.tar.gz`
3333

@@ -45,7 +45,7 @@ When building a production image with MQ, follow the [MQ instructions](https://g
4545

4646
[Info on how to get the Developers or production image for MQ](#using-mq-production-image)
4747

48-
The `deps` folder must contain a copy of ACE, **version 11.0.0.5 or greater**. If using ACE for Developers, download it from [here](https://www.ibm.com/marketing/iwm/iwm/web/pick.do?source=swg-wmbfd).
48+
The `deps` folder must contain a copy of ACE, **version 11.0.0.6 or greater**. If using ACE for Developers, download it from [here](https://www.ibm.com/marketing/iwm/iwm/web/pick.do?source=swg-wmbfd).
4949
Then set the build argument `ACE_INSTALL` to the name of the ACE file placed in `deps`.
5050

5151
1. ACE production with MQ Advanced production
@@ -57,7 +57,7 @@ Then set the build argument `ACE_INSTALL` to the name of the ACE file placed in
5757

5858
## Build an image with App Connect Enterprise only
5959

60-
The `deps` folder must contain a copy of ACE, **version 11.0.0.5 or greater**. If using ACE for Developers, download it from [here](https://www.ibm.com/marketing/iwm/iwm/web/pick.do?source=swg-wmbfd).
60+
The `deps` folder must contain a copy of ACE, **version 11.0.0.6 or greater**. If using ACE for Developers, download it from [here](https://www.ibm.com/marketing/iwm/iwm/web/pick.do?source=swg-wmbfd).
6161
Then set the build argument `ACE_INSTALL` to the name of the ACE file placed in `deps`.
6262

6363
1. ACE for Developers only:
@@ -143,6 +143,12 @@ In the `sample` folder there is an example on how to build a server image with a
143143
- **ACE_TRUSTSTORE_PASSWORD** - Set this to the password you wish to use for the trust store (if using one).
144144
- **ACE_KEYSTORE_PASSWORD** - Set this to the password you wish to use for the key store (if using one).
145145

146+
- **ACE_ADMIN_SERVER_SECURITY** - Set to `true` if you intend to secure your Integration Server using SSL.
147+
- **ACE_ADMIN_SERVER_NAME** - Set this to the DNS name of your Integration Server for SSL SAN checking.
148+
- **ACE_ADMIN_SERVER_CA** - Set this to your Integration Server SSL CA certificate.
149+
- **ACE_ADMIN_SERVER_CERT** - Set this to your Integration Server SSL certificate.
150+
- **ACE_ADMIN_SERVER_KEY** - Set this to your Integration Server SSL key certificate.
151+
146152
The following environment variables are used by MQ Advanced if being used:
147153

148154
- **LICENSE** - Set this to `accept` to agree to the App Connect Enterprise license. If you wish to see the license you can set this to `view`.
@@ -177,7 +183,7 @@ You can mount the following file structure at `/home/aceuser/initial-config`. Mi
177183
- `/home/aceuser/initial-config/serverconf`
178184
- A text file called `server.conf.yaml` that contains a `server.conf.yaml` overrides file. This will be copied to `/home/aceuser/ace-server/overrides/server.conf.yaml`
179185
- `/home/aceuser/initial-config/setdbparms`
180-
- For any parameters that need to be set via `mqsisetdbparms` include a text file called `setdbparms.txt`. This supports 2 formats:
186+
- For any parameters that need to be set via `mqsisetdbparms` include a text file called `setdbparms.txt` This supports 2 formats:
181187
```
182188
# Lines starting with a "#" are ignored
183189
# Each line which starts mqsisetdbparms will be run as written

cmd/runaceserver/integrationserver.go

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ func initialIntegrationServerConfig() error {
128128
}
129129
}
130130

131-
131+
132132

133133
log.Printf("Initial configuration of integration server complete")
134134

@@ -309,27 +309,31 @@ func addOpenTracingToServerConf(serverconfContent []byte) ([]byte, error) {
309309
// getConfigurationFromContentServer checks if ACE_CONTENT_SERVER_URL exists. If so then it pulls
310310
// a bar file from that URL
311311
func getConfigurationFromContentServer() error {
312+
312313
url := os.Getenv("ACE_CONTENT_SERVER_URL")
313314
if url == "" {
314315
log.Printf("No content server url available")
315316
return nil
316317
}
317318

319+
defaultContentServer := os.Getenv("DEFAULT_CONTENT_SERVER")
320+
if defaultContentServer == "" {
321+
log.Printf("Can't tell if content server is default one so defaulting")
322+
defaultContentServer = "true"
323+
}
324+
318325
serverName := os.Getenv("ACE_CONTENT_SERVER_NAME")
319326
if serverName == "" {
320327
log.Printf("No content server name available but a url is defined")
321328
return errors.New("No content server name available but a url is defined")
322329
}
323330

324331
token := os.Getenv("ACE_CONTENT_SERVER_TOKEN")
325-
if token == "" {
332+
if token == "" && defaultContentServer == "true" {
326333
log.Errorf("No content server token available but a url is defined")
327334
return errors.New("No content server token available but a url is defined")
328335
}
329336

330-
log.Printf("Getting configuration from content server")
331-
url = url + "?archive=true"
332-
333337
err := os.Mkdir("/home/aceuser/initial-config/bars", os.ModePerm)
334338
if err != nil {
335339
log.Errorf("Error creating directory /home/aceuser/initial-config/bars: %v", err)
@@ -343,19 +347,47 @@ func getConfigurationFromContentServer() error {
343347
}
344348
defer file.Close()
345349

346-
// Get file from content server
347-
caCert, err := ioutil.ReadFile("/home/aceuser/ssl/cacert.pem")
350+
// Create a CA certificate pool and add cacert to it
351+
var contentServerCACert string
352+
if defaultContentServer == "true" {
353+
log.Printf("Getting configuration from content server")
354+
contentServerCACert = "/home/aceuser/ssl/cacert.pem"
355+
url = url + "?archive=true"
356+
} else {
357+
log.Printf("Getting configuration from custom content server")
358+
contentServerCACert = os.Getenv("CONTENT_SERVER_CA")
359+
if contentServerCACert == "" {
360+
log.Printf("CONTENT_SERVER_CA not defined")
361+
return errors.New("CONTENT_SERVER_CA not defined")
362+
}
363+
}
364+
log.Printf("Using ca file %s", contentServerCACert)
365+
caCert, err := ioutil.ReadFile(contentServerCACert)
348366
if err != nil {
349367
log.Errorf("Error reading CA Certificate")
350368
return errors.New("Error reading CA Certificate")
351369
}
352370
caCertPool := x509.NewCertPool()
353371
caCertPool.AppendCertsFromPEM(caCert)
354372

373+
// If provided read the key pair to create certificate
374+
contentServerCert := os.Getenv("CONTENT_SERVER_CERT")
375+
contentServerKey := os.Getenv("CONTENT_SERVER_KEY")
376+
cert, err := tls.LoadX509KeyPair(contentServerCert, contentServerKey)
377+
if err != nil {
378+
if ( contentServerCert != "" && contentServerKey != "" ) {
379+
log.Errorf("Error reading Certificates: %s", err)
380+
return errors.New("Error reading Certificates")
381+
}
382+
} else {
383+
log.Printf("Using certs for mutual auth")
384+
}
385+
355386
client := &http.Client{
356387
Transport: &http.Transport{
357388
TLSClientConfig: &tls.Config{
358389
RootCAs: caCertPool,
390+
Certificates: []tls.Certificate{cert},
359391
ServerName: serverName,
360392
},
361393
},

cmd/runaceserver/logging.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@ import (
2626
var log *logger.Logger
2727

2828
func logTerminationf(format string, args ...interface{}) {
29-
logTermination(fmt.Sprintf(format, args))
29+
logTermination(fmt.Sprintf(format, args...))
3030
}
3131

3232
func logTermination(args ...interface{}) {
33-
msg := fmt.Sprint(args)
33+
msg := fmt.Sprint(args...)
3434
// Write the message to the termination log. This is the default place
3535
// that Kubernetes will look for termination information.
3636
log.Debugf("Writing termination message: %v", msg)

0 commit comments

Comments
 (0)