在Ansible主机上创建2个文件/tmp/exam1.txt和/tmp/exam2.txt,文件内容自拟;在两台主机上都创建/tmp/exam文件夹。使用Ansible的模块或playbook实现以下功能: 将这两个txt文件拷贝到两台虚拟机的/tmp/exam路径下。
时间: 2024-09-28 22:05:15 浏览: 41
要在Ansible中完成这个任务,你需要编写一个Playbook。首先,确保你已经配置了SSH密钥对并且可以无密码登录目标机器。以下是使用Ansible的基本步骤:
1. 创建一个新的Playbook文件,例如`copy_files.yml`,内容如下:
```yaml
---
- name: Copy files to remote machines
hosts: all
become: true
tasks:
- name: Create /tmp/exam directory on the target hosts if it doesn't exist
file:
path: /tmp/exam
state: directory
- name: Copy exam1.txt and exam2.txt to /tmp/exam on each host
copy:
src: "{{ playbook_dir }}/files/{{ item }}"
dest: "/tmp/exam/"
with_items:
- exam1.txt
- exam2.txt
delegate_to: localhost # You can change this to your target hosts later
- vars:
playbook_dir: "{{ lookup('env', 'PWD') }}" # Get the current working directory
```
在这个Playbook中,我们假设`exam1.txt`和`exam2.txt`在与Playbook相同的目录`files`下。`become: true`表示以root权限执行任务。
2. 将`exam1.txt`和`exam2.txt`复制到`files`目录下,并运行`ansible-playbook copy_files.yml`。如果你只想在特定的虚拟机上运行,替换`hosts: all`为它们的实际主机名或组名。
3. 为了简化,这里我们在本地主机(`localhost`)上查找源文件,实际生产环境中,你需要更新`delegate_to`字段为你要复制的目标主机。
注意:确保在运行Ansible之前,所有目标主机都能访问你的工作目录(包含Playbook和文件)。如果不方便,也可以通过配置remote_src参数或使用其他方式上传文件。
阅读全文