Почему удаленная копия не работает с локального - PullRequest
0 голосов
/ 24 мая 2018

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

---
 - hosts: osa
   tasks:
     - name: Copying file to remote host
       copy: src=/tmp/foo.txt dest=/tmp/bar.txt

Запустил playbook, но ничего не произошло и тоже не было ошибок.

# /usr/bin/ansible-playbook /home/spatel/ansible/first-playbook.yml

PLAY [osa] **************************************************************************************************************************************************************************

TASK [Gathering Facts] **************************************************************************************************************************************************************
ok: [10.5.1.160]

TASK [Copying file to remote host] **************************************************************************************************************************************************
ok: [10.5.1.160]

PLAY RECAP **************************************************************************************************************************************************************************
10.5.1.160                 : ok=2    changed=0    unreachable=0    failed=0

Мой файл / etc / ansible / hosts имеет Удаленный IP-адрес хоста:

[osa]
10.5.1.160

Подробный вывод:

# ansible-playbook -vv first-playbook.yml
ansible-playbook 2.4.1.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible-playbook
  python version = 2.7.5 (default, Nov  6 2016, 00:28:07) [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]
Using /etc/ansible/ansible.cfg as config file

PLAYBOOK: first-playbook.yml ********************************************************************************************************************************************************
1 plays in first-playbook.yml

PLAY [osa] **************************************************************************************************************************************************************************
META: ran handlers

TASK [Copying file to remote host] **************************************************************************************************************************************************
task path: /home/spatel/ansible/first-playbook.yml:5
ok: [10.5.1.160] => {"changed": false, "checksum": "4383f040dc0303e55260bca327cc0eeb213b04b5", "failed": false, "gid": 0, "group": "root", "mode": "0644", "owner": "root", "path": "/tmp/bar.txt", "secontext": "unconfined_u:object_r:admin_home_t:s0", "size": 8, "state": "file", "uid": 0}
META: ran handlers
META: ran handlers

PLAY RECAP **************************************************************************************************************************************************************************
10.5.1.160                 : ok=1    changed=0    unreachable=0    failed=0

ОБНОВЛЕНИЕ

Я заметил, что он копирует файл на localhost , а не удаленный хост, это не имеет смысла, почему в выводе говорится, что он выполняет playbook на удаленном хосте (10.5.1.160) ?????

# ls -l /tmp/bar.txt
-rw-r--r--. 1 root root 16 May 24 10:45 /tmp/bar.txt

1 Ответ

0 голосов
/ 22 августа 2019

У меня была похожая проблема, что он искал файл на удаленном сервере.Вы выполняете свои задачи на удаленном сервере hosts: osa, но файл находится на локальном хосте.Я мог бы решить это с помощью Delegate_to: Localhost .

---
 - hosts: osa
   tasks:
     - name: Copying file to remote host
       delegate_to: localhost
       copy: src=/tmp/foo.txt dest=/tmp/bar.txt

Однако мне пришлось сначала даже создать задачу для получения файла с локального хоста, а затем предоставить его на удаленный хост:

  - name: read files

    # This needs to run on localhost, because that's where
    # the keys are stored.
    delegate_to: localhost

    command: cat {{item}}

    # Register the results of this task in a variable called
    # "files"
    register: files

    with_fileglob:
      - "/tmp/*.txt"

  - name: show what was stored in the files variable
    debug:
      var: files

  - name: Copying file to remote host
     delegate_to: localhost
     copy: src="{{item.stdout}}" dest=/tmp/bar.txt
    with_items: "{{keys.results}}"
...