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.