ansible处理很多数据时,写一个剧本playbook比较方便,推荐一种引用环境变量的方法
废话不多说,直接上yaml文件内容
--- - hosts: all become: yes tasks: - name: install rsync yum: name: rsync state: present - name: Start service rsyncd service: name: rsyncd state: started - name: rsync local synchronize: #同步功能 mode: pull #远程主机同步到本地主机 src: "/vrgv/" dest: "/vrgv/{{ansible_date_time.date }}" #引用变量格式:2021-02-03 when: inventory_hostname in groups['node1'] #只作用于node1主机 # rsync_opts: # - "--remove-source-files" - name: rsync node2 synchronize: mode: push #本地主机同步到远程主机 src: "/vrgv/{{ansible_date_time.date }}/" dest: "/vrgv/" when: inventory_hostname in groups['node2'] #只作用于node2主机 # rsync_opts: # # - "--remove-source-files"
上面的意思是,我要把node1主机的/vrgv/目录下的文件拷贝到node2主机的/vrgv/目录下,并引用了一个环境变量ansible_date_time.date,之所以没用copy模块,是因为rsync同步比copy模块快,并且没有局限性,需要安装rsync服务,默认都是安装好的,只需开启即可。
这个环境变量是通过查看全局变量得来的
[root@jenkins ansible]# ansible all -m setup |less
ansible-playbook引用系统变量
可以看到有很多变量,都可以引用,我上面的代码只引用了时间为例。
到这里ansible引用环境变量就说完了,欢迎评论区留言噢!