自动化运维(ansible---role)

role模块的作用

Ansible为了层次化、结构化地组织Playbook,使用了角色(roles),roles可以根据层次型结构自动装载变量文件、task以及handlers等。简单来讲,roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地include它们。roles一般用于基于主机构建服务的场景中,但也可以用于构建守护进程等场景中。

role内各目录的解释

●files
用来存放由 copy 模块或 script 模块调用的文件。

●templates
用来存放 jinjia2 模板,template 模块会自动在此目录中寻找 jinjia2 模板文件。

●tasks
此目录应当包含一个 main.yml 文件,用于定义此角色的任务列表,此文件可以使用 include 包含其它的位于此目录的 task 文件。

●handlers
此目录应当包含一个 main.yml 文件,用于定义此角色中触发条件时执行的动作。

●vars
此目录应当包含一个 main.yml 文件,用于定义此角色用到的变量。

●defaults
此目录应当包含一个 main.yml 文件,用于为当前角色设定默认变量。

●meta
此目录应当包含一个 main.yml 文件,用于定义此角色的特殊设定及其依赖关系。

 注意: 在每个角色的目录中分别创建files, tasks,handlers,templates,vars和meta目录,用不到的目录可以创建为空目录.

 通过roles实现lamp

 第1步: 创建roles目录及文件,并确认目录结构

[root@mm ~]# cd /etc/ansible/roles/
[root@mm roles]# mkdir -p {httpd,mysql,php}/{files,tasks,handlers,templates,vars,meta}
[root@mm roles]# touch {httpd,mysql,php}/{tasks,handlers,vars,meta}/main.yml
[root@mm roles]# yum -y install tree
[root@mm roles]# tree /etc/ansible/roles/
/etc/ansible/roles/
├── httpd
│   ├── files
│   ├── handlers
│   │   └── main.yml
│   ├── meta
│   │   └── main.yml
│   ├── tasks
│   │   └── main.yml
│   ├── templates
│   └── vars
│       └── main.yml
├── mysql
│   ├── files
│   ├── handlers
│   │   └── main.yml
│   ├── meta
│   │   └── main.yml
│   ├── tasks
│   │   └── main.yml
│   ├── templates
│   └── vars
│       └── main.yml
└── php
    ├── files
    ├── handlers
    │   └── main.yml
    ├── meta
    │   └── main.yml
    ├── tasks
    │   └── main.yml
    ├── templates
    └── vars
        └── main.yml

21 directories, 12 files

 第2步: 准备httpd服务器的主页文件,php测试页和配置文件等

#httpd服务器的主页文件
[root@mm roles]# echo "test main page" > /etc/ansible/roles/httpd/files/index.html

#php的测试页面
[root@mm roles]# echo -e "<?php\n\tphpinfo();\n?>" > /etc/ansible/roles/httpd/files/test.php

#下载hrrpd服务
[root@mm roles]# yum -y install httpd -y

#按需求修改配置⽂件后,拷⻉到httpd⻆⾊⽬录⾥的files⼦⽬录
[root@mm roles]#vim /etc/httpd/conf/httpd.conf
[root@mm roles]#cp /etc/httpd/conf/httpd.conf /etc/ansible/roles/httpd/files/

第3步: 编写httpd角色的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

vim /etc/ansible/roles/httpd/handlers/main.yml

---

 - name: restart httpd  

   service: name=httpd state=restarted

第5步: 编写mysql角色的main.yml文件

---

 - name: 安装mysql  

   yum: name=mariadb,mariadb-server,mariadb-devel state=present

 - name: 启动mysql并开机自启动  

   service: name=mariadb state=started enabled=yes

第6步: 编写php角色的main.yml文件 

vim /etc/ansible/roles/php/tasks/main.yml

---

- name: 安装php及依赖包

  yum: name=php,php-gd,php-ldap,php-odbc,phppear,php-xml,php-xmlrpc,php-mbstring,php-snmp,phpsoap,curl,curl-devel,php-bcmath,php-mysql

state=present

  notify: restart httpd

 第7步:编写lamp的playbook文件调用前面定义好的三个角色

vim /etc/ansible/playbook/lamp.yaml

---

- hosts: group1

  remote_user: root

  roles:

    - httpd

    - mysql

    - php

 第8步: 执行lamp的playbook文件

ansible-playbook /etc/ansible/playbook/lamp.yaml

  • 13
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值