it-swarm.com.ru

Ansible: читать удаленный файл

Я создаю файлы с ansible на удаленном хосте, и после этого поколения я хотел бы прочитать эти файлы в другой задаче.

Я не нашел ни одного модуля для чтения удаленного файла с ansible (поиск кажется только на локальном хосте).

Вы знаете такой модуль?

Благодарность

EDIT:

Вот мой вариант использования:

Я генерирую ключи 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}}"

Он работает очень хорошо, но как прочитать эти ключи, чтобы отправить его на github через API?

27
Kiva

Как вы сказали, все поиски на локальном хосте. Но все это можно сделать на удаленном компьютере, используя Shell и ​​register. Можете ли вы сказать, что именно вы пытаетесь сделать? просто пример.

  - Shell: cat "{{remote_file}}"
    register: data

  - Shell: ......
    with_xxxx:
14
helloV

Либо запустить с флагом --diff (выводит diff при изменении файла назначения).

ansible-playbook --diff server.yaml

или Slurp это вверх ..

- name: Slurp hosts file
  Slurp:
    src: /etc/hosts
  register: slurpfile

- debug: msg="{{ slurpfile['content'] | b64decode }}"
55
danday74

Вы можете попробовать модуль 'fetch' , который будет извлекать файл ключа по пути назначения в localhost:

fetch: 
  src: ".ssh/{{item.value.file}}" 
  dest:"/tmp/ssh_keys/{{item.value.file}}"
  flat: yes
with_dict: "{{sshConfiguration}}" 
6
vernonm

Вы можете зарегистрировать содержимое файла в переменной, используя команду 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}}"

Это отобразит содержимое файла.

2
Luv33preet