Skip to content

Commit 26ee1c3

Browse files
committed
add param to allow custom tmp dir
1 parent 56431d2 commit 26ee1c3

File tree

6 files changed

+30
-14
lines changed

6 files changed

+30
-14
lines changed

src/main/groovy/com/rundeck/plugins/ansible/ansible/AnsibleInlineInventoryBuilder.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.dtolabs.rundeck.core.common.INodeEntry;
44
import com.dtolabs.rundeck.core.plugins.configuration.ConfigurationException;
5+
import com.rundeck.plugins.ansible.util.AnsibleUtil;
56

67
import java.io.File;
78
import java.io.PrintWriter;
@@ -18,7 +19,7 @@ public AnsibleInlineInventoryBuilder(String inline_inventory) {
1819

1920
public File buildInventory() throws ConfigurationException {
2021
try {
21-
File file = File.createTempFile("ansible-inventory", ".inventory");
22+
File file = AnsibleUtil.createTemporaryFile("ansible-inventory", ".inventory","");
2223
file.deleteOnExit();
2324
PrintWriter writer = new PrintWriter(file);
2425
writer.write(inline_inventory);

src/main/groovy/com/rundeck/plugins/ansible/ansible/AnsibleInventoryBuilder.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import java.util.HashMap;
1111

1212
import com.google.gson.Gson;
13+
import com.rundeck.plugins.ansible.util.AnsibleUtil;
1314

1415
public class AnsibleInventoryBuilder {
1516

@@ -21,7 +22,7 @@ public AnsibleInventoryBuilder(Collection<INodeEntry> nodes) {
2122

2223
public File buildInventory() throws ConfigurationException {
2324
try {
24-
File file = File.createTempFile("ansible-inventory", ".json");
25+
File file = AnsibleUtil.createTemporaryFile("ansible-inventory", ".json","");
2526
file.deleteOnExit();
2627
PrintWriter writer = new PrintWriter(file);
2728
AnsibleInventory ai = new AnsibleInventory();

src/main/groovy/com/rundeck/plugins/ansible/ansible/AnsibleRunner.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.rundeck.plugins.ansible.ansible;
22

33
import com.dtolabs.rundeck.core.plugins.configuration.ConfigurationException;
4+
import com.dtolabs.rundeck.core.utils.Utility;
45
import com.fasterxml.jackson.core.type.TypeReference;
56
import com.rundeck.plugins.ansible.util.*;
67
import com.dtolabs.rundeck.core.utils.SSHAgentProcess;
@@ -14,6 +15,7 @@
1415
import java.nio.file.*;
1516
import java.nio.file.attribute.PosixFilePermission;
1617
import java.nio.file.attribute.BasicFileAttributes;
18+
import java.nio.file.attribute.PosixFilePermissions;
1719
import java.util.*;
1820

1921
@Builder
@@ -531,7 +533,7 @@ public int run() throws Exception {
531533
List<VaultPrompt> stdinVariables = new ArrayList<>();
532534

533535
if(useAnsibleVault || vaultPass != null ){
534-
vaultPromptFile = File.createTempFile("vault-prompt", ".log");
536+
vaultPromptFile = AnsibleUtil.createTemporaryFile("vault-prompt",".log", "");
535537
}
536538

537539
if (useAnsibleVault) {
@@ -677,7 +679,7 @@ public boolean registerKeySshAgent(String keyPath) throws Exception {
677679

678680
File tempPassVarsFile = null;
679681
if (sshPassphrase != null && sshPassphrase.length() > 0) {
680-
tempPassVarsFile = File.createTempFile("ansible-runner", "ssh-add-check");
682+
tempPassVarsFile = AnsibleUtil.createTemporaryFile("ssh-add-check", "");
681683
tempPassVarsFile.setExecutable(true);
682684

683685
List<String> passScript = new ArrayList<>();

src/main/groovy/com/rundeck/plugins/ansible/ansible/AnsibleVault.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
import java.util.*;
1717
import com.rundeck.plugins.ansible.ansible.AnsibleException;
1818

19+
import static java.io.File.createTempFile;
20+
1921
@Data
2022
@Builder
2123
public class AnsibleVault {
@@ -129,7 +131,7 @@ public String encryptVariable(String key,
129131

130132

131133
public static File createVaultScriptAuth(String suffix) throws IOException {
132-
File tempInternalVaultFile = File.createTempFile("ansible-runner", suffix + "-client.py");
134+
File tempInternalVaultFile = AnsibleUtil.createTemporaryFile(suffix + "-client.py", "");
133135

134136
try {
135137
Files.copy(AnsibleUtil.class.getClassLoader().getResourceAsStream("vault-client.py"),
@@ -138,7 +140,6 @@ public static File createVaultScriptAuth(String suffix) throws IOException {
138140
} catch (IOException e) {
139141
throw new IOException("Failed to copy vault-client.py", e);
140142
}
141-
142143
Set<PosixFilePermission> perms = PosixFilePermissions.fromString("rwxr-xr-x");
143144
Files.setPosixFilePermissions(tempInternalVaultFile.toPath(), perms);
144145

src/main/groovy/com/rundeck/plugins/ansible/plugin/AnsibleResourceModelSource.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.rundeck.plugins.ansible.ansible.AnsibleInventoryList;
2626
import com.rundeck.plugins.ansible.ansible.AnsibleRunner;
2727
import com.rundeck.plugins.ansible.ansible.InventoryList;
28+
import com.rundeck.plugins.ansible.util.AnsibleUtil;
2829
import com.rundeck.plugins.ansible.util.VaultPrompt;
2930
import lombok.Setter;
3031
import lombok.extern.slf4j.Slf4j;
@@ -41,13 +42,11 @@
4142
import java.io.File;
4243
import java.io.IOException;
4344
import java.nio.charset.Charset;
44-
import java.nio.file.DirectoryStream;
45-
import java.nio.file.FileVisitResult;
46-
import java.nio.file.Files;
47-
import java.nio.file.Path;
48-
import java.nio.file.Paths;
49-
import java.nio.file.SimpleFileVisitor;
45+
import java.nio.file.*;
5046
import java.nio.file.attribute.BasicFileAttributes;
47+
import java.nio.file.attribute.FileAttribute;
48+
import java.nio.file.attribute.PosixFilePermission;
49+
import java.nio.file.attribute.PosixFilePermissions;
5150
import java.util.ArrayList;
5251
import java.util.Arrays;
5352
import java.util.HashMap;
@@ -420,7 +419,7 @@ public void processWithGatherFacts(NodeSetImpl nodes, AnsibleRunner.AnsibleRunne
420419
final Gson gson = new Gson();
421420
Path tempDirectory;
422421
try {
423-
tempDirectory = Files.createTempDirectory("ansible-hosts");
422+
tempDirectory = Files.createTempDirectory(Paths.get(AnsibleUtil.getAnsibleTmpPath()), "ansible-hosts");
424423
} catch (IOException e) {
425424
throw new ResourceModelSourceException("Error creating temporary directory: " + e.getMessage(), e);
426425
}

src/main/groovy/com/rundeck/plugins/ansible/util/AnsibleUtil.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,11 +105,23 @@ public static Map<String, String> getRuntimeProperties(ExecutionContext context,
105105

106106

107107
public static File createTemporaryFile(String suffix, String data) throws IOException {
108-
File tempVarsFile = File.createTempFile("ansible-runner", suffix);
108+
return createTemporaryFile("ansible-runner", suffix, data);
109+
}
110+
111+
public static File createTemporaryFile(String prefix, String suffix, String data) throws IOException {
112+
return createTemporaryFile(new File(getAnsibleTmpPath()), suffix, data, prefix);
113+
}
114+
115+
public static File createTemporaryFile(File path, String suffix, String data, String prefix) throws IOException {
116+
File tempVarsFile = File.createTempFile(prefix, suffix, path);
109117
Files.write(tempVarsFile.toPath(), data.getBytes());
110118
return tempVarsFile;
111119
}
112120

121+
public static String getAnsibleTmpPath() {
122+
return System.getProperty("ansible.tmp.path", System.getProperty("java.io.tmpdir"));
123+
}
124+
113125

114126
public static String randomString(){
115127
byte[] bytes = new byte[32];

0 commit comments

Comments
 (0)