ansible 使用roles简单部署LAMP平台

目录

一、了解roles目录

二、基于构建LAMP平台创建roles目录

1、在192.168.115.148创建目录

2、书写php的测试页面

3、编写httpd角色的main.yml文件

4、编写mysql角色的main.yml文件

6、编写lamp的playbook

7、启动剧本

8、访问


一、了解roles目录

在Ansible中,roles是一种组织和复用任务和变量的方式。Roles是一种可重用的模块化结构,用于将相关的任务、变量和处理逻辑组合在一起,以便在不同的剧本(playbook)中重复使用。

通过使用roles,可以将复杂的任务分解成更小的、可管理的部分,并使剧本更具可读性和可维护性。Roles还可以促进代码的复用,因为可以将角色在不同的剧本中重复使用。

一个role通常由以下组成:

1. 任务(tasks):包含要执行的操作步骤。这些任务可以是与特定角色相关的任何操作,例如安装软件、配置文件、启动服务等。

2. 变量(vars):存储角色所需的变量。这些变量可以在角色的任务中使用,以根据不同的需求进行自定义。

3. 文件(files):包含角色所需的文件。这些文件可以是配置文件、脚本文件等。

4. 模板(templates):包含用于生成配置文件等的模板文件。模板文件通常包含一些可自定义的变量,以便在生成文件时根据需要进行替换。

5. 处理器(handlers):定义角色相关的处理程序,用于在特定事件发生时触发操作。例如,在配置文件更改后重新启动服务。

通过将相关的任务、变量和文件组织在一起,roles提供了一种结构化的方式来管理和组织复杂的配置和部署任务。它们使剧本更易于编写、理解和维护,并促进了在不同的剧本中重用和分享配置和部署逻辑。

roles/
├── role_name/                # role的名称
│   ├── defaults/             # 存放变量默认值的目录
│   │   └── main.yml          # 变量默认值文件
│   ├── tasks/                # 存放任务文件的目录
│   │   └── main.yml          # 任务文件
│   ├── templates/            # 存放模板文件的目录
│   │   └── template.j2       # 模板文件
│   ├── vars/                 # 存放特定角色变量的目录
│   │   └── main.yml          # 特定角色变量文件
│   ├── handlers/             # 存放处理器文件的目录
│   │   └── main.yml          # 处理器文件
│   ├── files/                # 存放文件的目录
│   │   └── file.txt          # 文件
│   ├── meta/                 # 存放描述文件的目录
│   │   └── main.yml          # 描述文件
│   └── README.md             # role的说明文件
└── playbook.yml              # 包含roles的Playbook文件

二、基于构建LAMP平台创建roles目录

实验环境:

192.168.115.148  :  安装ansible、部署LAMP

192.168.115.149  : 部署LAMP

192.168.115.151  : 部署LAMP

1、在192.168.115.148创建目录

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

2、书写php的测试页面

vim /etc/index.php
<?php
    phpinfo();
?>

3、编写httpd角色的main.yml文件

vim /etc/anseble/roles/http/tasks/mian/yml
---
- name: 安装httpd
  yum: name=httpd state=present
- name: 分发php测试页面
  copy: src=/index.php dest=/var/www/html/index.php
- name: 启动httpd、设为开机自启
  service: name=httpd state=started enabled=yes
  

vim /etc/ansible/roles/http/hardlers/mian.yml
---
- name: restart httpd
  shell: systemctl restart httpd

4、编写mysql角色的main.yml文件

vim /etc/ansible/roles/mysql/tasks/main.yml
---
- name: 安装mysql
  shell: yum -y install mariadb mariadb-server
- name: 启动mariadb,并设为开机自启
  service: name=mariadb state=started enabled=yes

5、编写php角色的main.yml文件

vim /etc/ansible/roles/php/tasks/main.yml
---
- name: 安装php及依赖包
  yum: name=php,php-gd,php-ldap,php-odbc,php-pear,php-xml,php-xmlrpc,php-mbstring,php-snmp,php-soap,curl,curl-devel,php-bcmath,php-mysql state=present
  notify: restart httpd


vim /etc/ansible/roles/php/hardlers/mian.yml
---
- name: restart httpd
  shell: systemctl restart httpd

6、编写lamp的playbook

vim /etc/ansible/lamp.yml
---
- hosts: group
  remote_user: root
  roles:
    - http
    - mysql
    - php

7、启动剧本

ansible-playbook /etc/ansible/lapm.yml

执行结果

8、访问

猜你喜欢

转载自blog.csdn.net/2302_78534730/article/details/132766606