Skip to content

Commit 0e4ce20

Browse files
committed
Upgrade SmbTestContainer base image
Upgraded SmbTestContainer base image from Ubuntu 16.04 to 24.04 to avoid hanging Python module compilation when installing samba package. Installing SMB had to be moved from container building to the starting because SYS_ADMIN capability is required.
1 parent 5462e00 commit 0e4ce20

File tree

3 files changed

+18
-7
lines changed

3 files changed

+18
-7
lines changed

x-pack/test/smb-fixture/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ apply plugin: 'elasticsearch.java'
22
apply plugin: 'elasticsearch.cache-test-fixtures'
33

44
dependencies {
5+
implementation "com.fasterxml.jackson.core:jackson-annotations:${versions.jackson}"
6+
57
api project(':test:fixtures:testcontainer-utils')
68
api "junit:junit:${versions.junit}"
79
api "org.testcontainers:testcontainers:${versions.testcontainer}"

x-pack/test/smb-fixture/src/main/java/org/elasticsearch/test/fixtures/smb/SmbTestContainer.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,31 @@
77

88
package org.elasticsearch.test.fixtures.smb;
99

10+
import com.github.dockerjava.api.model.Capability;
11+
1012
import org.elasticsearch.test.fixtures.testcontainers.DockerEnvironmentAwareTestContainer;
13+
import org.testcontainers.containers.wait.strategy.Wait;
1114
import org.testcontainers.images.builder.ImageFromDockerfile;
1215

1316
public final class SmbTestContainer extends DockerEnvironmentAwareTestContainer {
1417

15-
private static final String DOCKER_BASE_IMAGE = "ubuntu:16.04";
18+
private static final String DOCKER_BASE_IMAGE = "ubuntu:24.04";
1619
public static final int AD_LDAP_PORT = 636;
1720
public static final int AD_LDAP_GC_PORT = 3269;
1821

1922
public SmbTestContainer() {
2023
super(
2124
new ImageFromDockerfile("es-smb-fixture").withDockerfileFromBuilder(
2225
builder -> builder.from(DOCKER_BASE_IMAGE)
23-
.run("apt-get update -qqy && apt-get install -qqy samba ldap-utils")
26+
.env("TZ", "Etc/UTC")
27+
.run("DEBIAN_FRONTEND=noninteractive apt-get update -qqy && apt-get install -qqy tzdata winbind samba ldap-utils")
2428
.copy("fixture/provision/installsmb.sh", "/fixture/provision/installsmb.sh")
2529
.copy("fixture/certs/ca.key", "/fixture/certs/ca.key")
2630
.copy("fixture/certs/ca.pem", "/fixture/certs/ca.pem")
2731
.copy("fixture/certs/cert.pem", "/fixture/certs/cert.pem")
2832
.copy("fixture/certs/key.pem", "/fixture/certs/key.pem")
2933
.run("chmod +x /fixture/provision/installsmb.sh")
30-
.run("/fixture/provision/installsmb.sh")
31-
.cmd("service samba-ad-dc restart && sleep infinity")
34+
.cmd("/fixture/provision/installsmb.sh && service samba-ad-dc restart && echo Samba started && sleep infinity")
3235
.build()
3336
)
3437
.withFileFromClasspath("fixture/provision/installsmb.sh", "/smb/provision/installsmb.sh")
@@ -37,10 +40,16 @@ public SmbTestContainer() {
3740
.withFileFromClasspath("fixture/certs/cert.pem", "/smb/certs/cert.pem")
3841
.withFileFromClasspath("fixture/certs/key.pem", "/smb/certs/key.pem")
3942
);
40-
// addExposedPort(389);
41-
// addExposedPort(3268);
43+
4244
addExposedPort(AD_LDAP_PORT);
4345
addExposedPort(AD_LDAP_GC_PORT);
46+
47+
setWaitStrategy(Wait.forLogMessage(".*Samba started.*", 1));
48+
49+
getCreateContainerCmdModifiers().add(createContainerCmd -> {
50+
createContainerCmd.getHostConfig().withCapAdd(Capability.SYS_ADMIN);
51+
return createContainerCmd;
52+
});
4453
}
4554

4655
public String getAdLdapUrl() {

x-pack/test/smb-fixture/src/main/resources/smb/provision/installsmb.sh

100644100755
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ cat $SSL_DIR/ca.pem >> /etc/ssl/certs/ca-certificates.crt
2121

2222
mv /etc/samba/smb.conf /etc/samba/smb.conf.orig
2323

24-
samba-tool domain provision --server-role=dc --use-rfc2307 --dns-backend=SAMBA_INTERNAL --realm=AD.TEST.ELASTICSEARCH.COM --domain=ADES --adminpass=Passw0rd --use-ntvfs
24+
samba-tool domain provision --server-role=dc --use-rfc2307 --dns-backend=SAMBA_INTERNAL --realm=AD.TEST.ELASTICSEARCH.COM --domain=ADES --adminpass=Passw0rd
2525

2626
cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
2727

0 commit comments

Comments
 (0)