---
- 代表项
: 分割健和值
...
远程安装httpd服务
---
- hosts: gyh
remote_user: root
tasks:
- name: copy http
copy: src=/root/httpd-2.4.25.tar.gz dest=/root
tags: copy-http
- name: unarchive http
unarchive:
src: /root/httpd-2.4.25.tar.gz
dest: /usr/src
remote_src: true
tags: unarchive-http #远程服务器本地解压
...
提升可移植性
roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。简单的说,roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中、并可以便捷地include他们的一种机制。
files,copy模块要复制的文件
tasks剧本正文文件,包含一个名为main.yml的文件,其定义了此角色的任务列表;此文件可以使用include包含其他的位于此目录中的task文件
templates,template模块要复制的文件
vars剧本里需要的变量
handlers触发器文件
所有 copy tasks 可以引用 roles/x/files/ 中的文件,不需要指明文件的路径。
所有 scripttasks 可以引用 roles/x/files/ 中的脚本,不需要指明文件的路径。
所有 template tasks 可以引用roles/x/templates/ 中的文件,不需要指明文件的路径。
所有 include tasks 可以引用roles/x/tasks/ 中的文件,不需要指明文件的路径。
如果你在 playbook 中同时使用 roles 和 tasks,vars_files 或者 handlers,roles 将优先执行。
做一个复制服务安装包的剧本
- 建目录
#递归创建目录,可以看作一个矩阵
mkdir -p /etc/ansible/roles/{httpd,mysqld,php}/{files,tasks,templates,vars,handlers}
cd /etc/ansible/roles/
tree .
vim test.yml
- 写一个主机上的剧本,其中调用了gyh2这个http服务器,和gyh3这个数据库服务器
---
- hosts: gyh2
remote_user: root
roles: httpd
- hosts: gyh3
remote_user: root
roles: mysqld
...
具体ansible中主机清单配置如下
- 编写服务器模块中的剧本
vim mysqld/tasks/main.yml
---
- name: copy mysql
copy:
src: "{{item}}"
dest: /root/
tags: cpdd
with_items:
- cmake-2.8.6.tar.gz
- mysql-5.6.36.tar.gz
...
vim httpd/tasks/main.yml
---
- name: copy httpd
copy:
src: "{{item}}"
dest: /home/gyh
tags: cpdd
with_items:
- 1.txt
...
其中1.txt存放在/etc/ansible/roles/httpd/files中
4.执行剧本
ansible-playbook test.yml
查看结果,在192.168.35.12查看
1.txt成功拷贝到
两个压缩包成功拷贝