Ansible:读取远程文件

时间:2016-01-11 13:28:13

标签: ansible ansible-playbook

我在远程主机上生成带有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?

5 个答案:

答案 0 :(得分:46)

使用--diff标志运行(在目标文件更改时输出差异)..

Language

slurp它起来..

Replace by space

答案 1 :(得分:12)

正如您所说,所有查找都在localhost上。但是,所有这些都可以使用shellregister在远程完成。你能告诉你到底想要做什么吗?只是一个例子。

  - 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