ansible-playbook 之 拷贝路径

1,使用copy模块时,src 路径可以不用写,直接写要copy的文件名称即可ansible 自己会根据一定的规律来遍历路径,是否存在该文件(拷贝的对象)

1.
[ 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.

相关推荐