linux - 为什么ansible远程副本不能从本地工作
问题描述
我刚开始学习 ansible 并编写第一个copy
模块,但我不知道为什么它不起作用。
---
- hosts: osa
tasks:
- name: Copying file to remote host
copy: src=/tmp/foo.txt dest=/tmp/bar.txt
运行剧本,但什么也没发生,也没有错误。
# /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
更新
我注意到它将文件复制到本地主机而不是远程主机,这没有任何意义,为什么它在输出中说它正在远程主机(10.5.1.160)上执行剧本??????
# ls -l /tmp/bar.txt
-rw-r--r--. 1 root root 16 May 24 10:45 /tmp/bar.txt
解决方案
我有一个类似的问题,它正在远程服务器上查找文件。您正在远程服务器上运行任务,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
但是,我什至必须首先从 localhost 获取文件,然后再将其提供给远程主机:
- 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}}"
推荐阅读
- python - Turtle.goto 函数仅适用于两个正坐标?
- sql - SQL - 需要以选择字段为条件的字段之间的计算
- javascript - 如何将 ajax 与 jquery 一起使用以获取 json 文件
- php - PHP file_put_contents - 如何组织输出?
- javascript - 如何:使用 JsonConfiguration 在 ReactJS 中使用 AnyChart.js 更改 aera 图表的颜色
- html - Bootstrap 4 Multi Select在模态内部不起作用
- java - 消息延迟几秒,我用writeandflush写
- python - 在分块之前如何知道 csv 文件中的块数量(或行数)?
- sql - 具有重复列值的行
- css - 更改父容器的 flex 方向会使子元素的 flex-grow 停止工作?