1,使用copy模塊時,src 路徑可以不用寫,直接寫要copy的文件名稱即可
ansible 自己會根據一定的規律來遍歷路徑,是否存在該文件(拷貝的對象)
1.
[root@localhost kafka]# tree
.
├── hosts
│ ├── kafka_hosts
│ └── kafka_manager_hosts
├── kafka_manager.retry
├── kafka_manager.yml
├── kafka.retry
├── kafka.yml
├── roles
│ ├── kafka_manager
│ │ ├── files
│ │ │ ├── start.sh
│ │ │ └── start.sh-bak
│ │ ├── handlers
│ │ │ └── main.yml
│ │ ├── meta
│ │ ├── tasks
│ │ │ └── main.yml
│ │ ├── templates
│ │ │ └── application.conf.j2
│ │ ├── test4.txt
│ │ └── vars
│ │ └── main.yml
│ ├── kafka_server
│ │ ├── files
│ │ │ ├── kafka_2.11-1.1.1.tgz
│ │ │ ├── start.sh
│ │ │ ├── test5.txt
│ │ │ ├── tmp_hosts
│ │ │ └── tsta.txt
│ │ ├── handlers
│ │ │ └── main.yml
│ │ ├── meta
│ │ ├── tasks
│ │ │ ├── main.yml
│ │ │ ├── main.yml.bak
│ │ │ └── test6.txt
│ │ ├── templates
│ │ │ └── server.properties.j2
│ │ ├── test3.txt
│ │ └── vars
│ │ ├── main.yml
│ │ └── test7.txt
│ └── test2.txt
├── test1.txt
└── test.log
16 directories, 29 files
2.
cat xxxx.yml
- name: copy JAR files to remote
copy: src={{ item }} dest={{ basedir }}/src owner=root mode=700
with_items:
- kafka_2.11-1.1.1.tgz
- tmp_hosts
- name: echo tmp_hosts
shell: cat tmp_hosts >> /etc/hosts chdir={{ basedir }}/src
3.遍歷路徑,因此文件的路徑,需要留意,不是任何路徑都可以放的,一般放在 roles/xxx/files 目錄
AnsibleFileNotFound: Could not find or access 'test2.txt'
/home/srv/kafka/roles/kafka_server/files/test2.txt
/home/srv/kafka/roles/kafka_server/test2.txt
/home/srv/kafka/roles/kafka_server/tasks/files/test2.txt
/home/srv/kafka/roles/kafka_server/tasks/test2.txt
/home/srv/kafka/files/test2.txt
/home/srv/kafka/test2.txt on the Ansible Controller.