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 "<?php\n\tphpinfo();\n?>" > /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 //执行

相关推荐
逆风的蚂蚁1 小时前
linux服务器性能调整怎么落地?我把 CPU 调度、I/O 优先级和内核参数这几个旋钮都拧了一遍
linux·运维·服务器
沫璃染墨5 小时前
从零入门计算机网络系列(十一):HTTP协议进阶——从重定向原理到GET/POST与Fiddler抓包
linux·服务器·开发语言·网络·c++·tcp/ip·html
AI_Lab016 小时前
宝塔用了两年,有没有必要换成轻量方案?
linux·运维·服务器
by209996 小时前
Linux GDB 调试与 CGDB 使用
linux·运维·服务器·经验分享
星恒随风7 小时前
Linux网络编程:应用层协议究竟是什么?从网络计算器到TCP Socket抽象基类完整实现
linux·网络·笔记·tcp/ip
feng_you_ying_li9 小时前
linux之网络层
linux·运维·网络
未来之窗软件服务10 小时前
Linux 运维日志删除的多种方式—东方仙盟
linux·运维·服务器·仙盟创梦ide·东方仙盟
小雉系统10 小时前
BcoreOS实战:用一个升级包,让Rocky Linux跑进Debian服务器
linux·运维·服务器·debian
thethefighter10 小时前
快速预览Word、WPS秒开,支持空格弹窗
linux·word·wps·快速预览·空格弹窗·nhdeepview
用户83514140494910 小时前
把日志和寄存器值喂给AI做故障定位,我的实际问法
linux·ubuntu