我在远程主机上生成带有ansible的文件,在这一代之后,我想在另一个任务中读取这些文件。
我找不到任何用ansible读取远程文件的模块(查找似乎只在本地主机上)。
你知道这样的模块吗?
由于
修改
这是我的用例:
我生成ssh密钥并将其添加到github。这些键是由var文件中的对象设置的,所以我像这样循环生成它:
tasks:
- name: Create ssh key
user:
name: "{{sshConfigFile.user}}"
generate_ssh_key: yes
ssh_key_file: ".ssh/{{item.value.file}}"
state: present
with_dict: "{{sshConfiguration}}"
它工作得非常好但是如何读取这些键通过API将它发送到github?
答案 0 :(得分:46)
答案 1 :(得分:12)
正如您所说,所有查找都在localhost上。但是,所有这些都可以使用shell
和register
在远程完成。你能告诉你到底想要做什么吗?只是一个例子。
- shell: cat "{{remote_file}}"
register: data
- shell: ......
with_xxxx:
答案 2 :(得分:6)
您可以尝试使用'fetch'模块,该模块会将密钥文件检索到public class SomeServiceTest {
@InjectMocks
private SomeService someService;
@Mock
private SomeInnerService someInnerService;
@Before
public void setUp() {
initMocks(this);
Mockito.when(someInnerService.useMethod("argument")).thenReturn(new SomeObject());
}
@Test
public void testSomeMethod() {
Set<SomeObject> someObjects= someService.someMethod();
assertThat(someObjects, is(notNullValue()));
assertThat(someObjects, is(hasSize(4)));
}
}
上的目标路径:
localhost
答案 3 :(得分:2)
您可以使用register命令在变量中注册文件的内容。以下是我的建议,
- name: get contents of file
command: cat /path/to/file
register: filename
become: true # use case specific option
- name: viewing the contents
debug:
msg: "{{filename.stdout}}"
这将显示文件的内容。
答案 4 :(得分:-2)
通过使用命令模块,您可以在远程节点中的另一个任务中读取或使用该文件。
像
-command: cp /tmp/xxx/example.sh /usr/local/yyy