roles

一、roles介绍

roles(⻆⾊): 就是通过分别将variables, tasks及handlers等放置于单独的⽬录中,并可以便捷地调⽤它们的⼀种机制。

假设我们要写⼀个playbook来安装管理lamp环境,那么这个playbook就会写很⻓。所以我们希望把这个很⼤的⽂件分成多个功能拆分, 分成apache管理,php管理,mysql管理,然后在需要使⽤的时候直接调⽤就可以了,以免重复写。就类似编程⾥的模块化的概念,以达到代码复⽤的效果。

二、创建roles的目录结构

files:⽤来存放由copy模块或script模块调⽤的⽂件。

tasks:⾄少有⼀个main.yml⽂件,定义各tasks。

handlers:有⼀个main.yml⽂件,定义各handlers。

templates:⽤来存放jinjia2模板。

vars:有⼀个main.yml⽂件,定义变量。

meta:有⼀个main.yml⽂件,定义此⻆⾊的特殊设定及其依赖关系。

注意: 在每个⻆⾊的⽬录中分别创建files,tasks,handlers,templates,vars和meta⽬录,⽤不到的⽬录可以创建为空⽬录.

三、通过roles实现httpd

1.创建roles⽬录及⽂件,并确认⽬录结构

root@m0 \~\]# cd /etc/ansible/roles/ \[root@m0 roles\]# tree . └── httpd ├── files ├── handlers │ └── main.yml ├── meta │ └── main.yml ├── tasks │ └── main.yml ├── templates └── vars └── main.yml 2.准备httpd服务器的主⻚⽂件,php测试⻚和配置⽂件等 \[root@m0 \~\]# yum -y install httpd \[root@m0 roles\]# echo "\" \> /etc/ansible/roles/httpd/files/test.php \[root@m0 roles\]# echo "test main page" \> /etc/ansible/roles/httpd/files/index.html \[root@m0 roles\]# cp /etc/httpd/conf/httpd.conf /etc/ansible/roles/httpd/files/ 3.编写httpd⻆⾊的main.yml⽂件 \[root@m0 roles\]# vim /etc/ansible/roles/httpd/tasks/main.yml --- - name: 安装httpd yum: name=httpd,httpd-devel state=present - name: 同步httpd配置文件 copy: src=/etc/ansible/roles/httpd/files/httpd.conf dest=/etc/httpd/conf/httpd.conf notify: restart httpd - name: 同步主页文件 copy: src=/etc/ansible/roles/httpd/files/index.html dest=/var/www/html/index.html - name: 同步php测试页 copy: src=/etc/ansible/roles/httpd/files/test.php dest=/var/www/html/test.php - name: 启动httpd并开机自启动 service: name=httpd state=started enabled=yes 4.编写httpd⻆⾊⾥的handler \[root@m0 ansible\]# vim /etc/ansible/roles/httpd/handlers/main.yml --- - name: restart httpd service: name=httpd state=restarted 5.将两台主机添加到组 \[root@m0 \~\]# vim /etc/ansible/hosts s1 ansible_ssh_host=192.168.1.68 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=q s2 ansible_ssh_host=192.168.1.69 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=q \[s

s1

s2

6.编写httpd的playbook⽂件调⽤前⾯定义好的⻆⾊

root@m0 roles\]# vim /etc/ansible/playbook/httpd.yaml --- - hosts: s remote_user: root roles: - httpd 8.执行playbook文件 \[root@m0 roles\]# ansible-playbook /etc/ansible/playbook/httpd.yaml //执行

相关推荐
一介草民丶33 分钟前
Jenkins | Linux环境部署Jenkins与部署java项目
java·linux·jenkins
字节高级特工33 分钟前
【Linux篇】0基础之学习操作系统进程
linux·运维·服务器·数据结构·windows·学习·list
s_little_monster1 小时前
【Linux】网络--数据链路层--以太网
linux·运维·网络·经验分享·笔记·学习·计算机网络
belldeep4 小时前
WSL 安装 Debian 12 后,Linux 如何安装 curl , quickjs ?
linux·运维·debian·curl·quickjs
%#RulER#%6 小时前
哈工大计算机系统2024大作业——Hello的程序人生
linux·笔记·程序人生
y1x2y36 小时前
【HITCSAPP 哈工大计算机系统期末大作业】 程序人生-Hello’s P2P
linux·程序人生·ubuntu
God_archer6 小时前
程序人生-hello’s P2P
linux·c语言·汇编·程序人生
西域曼波王6 小时前
哈尔滨工业大学计算机系统大作业程序人生-Hello’s P2P
linux·c语言·编辑器·vim
无效的名字7 小时前
如何安装并使用RustDesk
linux·运维·服务器
Amo Xiang9 小时前
Python 解释器安装全攻略(适用于 Linux / Windows / macOS)
linux·windows·python·环境安装