ansible角色lnmp部署
时间: 2023-09-19 08:11:11 浏览: 127
LNMP的部署
Ansible角色是Ansible中的一种组织方式,它是一组任务、变量、文件和模板的集合,用于实现某个特定功能。在这个问题中,我们可以使用Ansible角色来部署LNMP(Linux、Nginx、MySQL和PHP)堆栈。
以下是一个简单的LNMP Ansible角色部署示例:
1. 创建一个名为“lnmp”的Ansible角色目录:
```
mkdir roles/lnmp
```
2. 在lnmp目录中创建一个tasks目录:
```
mkdir roles/lnmp/tasks
```
3. 在tasks目录中创建一个main.yml文件,其中包含以下任务:
```
- name: Install Nginx
yum:
name: nginx
state: present
- name: Start Nginx service
service:
name: nginx
state: started
- name: Install MySQL
yum:
name: mysql-server
state: present
- name: Start MySQL service
service:
name: mysqld
state: started
- name: Install PHP
yum:
name: php
state: present
- name: Install PHP-FPM
yum:
name: php-fpm
state: present
- name: Start PHP-FPM service
service:
name: php-fpm
state: started
```
这些任务将安装和启动Nginx、MySQL和PHP-FPM服务。
4. 在lnmp目录中创建一个vars目录:
```
mkdir roles/lnmp/vars
```
5. 在vars目录中创建一个main.yml文件,其中包含以下变量:
```
---
nginx_conf_file: /etc/nginx/nginx.conf
mysql_root_password: mysecretpassword
php_conf_dir: /etc/php.d/
```
这些变量将用于配置Nginx、MySQL和PHP的设置。
6. 在lnmp目录中创建一个templates目录:
```
mkdir roles/lnmp/templates
```
7. 在templates目录中创建一个nginx.conf.j2模板文件:
```
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 80;
server_name localhost;
location / {
root /var/www/html;
index index.php index.html index.htm;
}
location ~ \.php$ {
root /var/www/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
```
这个模板将用于生成Nginx的配置文件。
8. 在tasks目录中创建一个configure.yml文件,其中包括以下任务:
```
- name: Copy Nginx configuration file
template:
src: nginx.conf.j2
dest: "{{ nginx_conf_file }}"
mode: '0644'
- name: Set MySQL root password
mysql_user:
name: root
password: "{{ mysql_root_password }}"
login_unix_socket: /var/lib/mysql/mysql.sock
- name: Copy PHP configuration file
copy:
src: php.ini
dest: "{{ php_conf_dir }}"
mode: '0644'
```
这些任务将生成Nginx配置文件、设置MySQL root密码和复制PHP配置文件。
9. 在lnmp目录中创建一个files目录:
```
mkdir roles/lnmp/files
```
10. 在files目录中创建php.ini文件:
```
memory_limit = 128M
upload_max_filesize = 64M
post_max_size = 64M
```
这个文件将被复制到PHP配置目录中。
11. 在lnmp目录中创建一个meta目录:
```
mkdir roles/lnmp/meta
```
12. 在meta目录中创建一个main.yml文件,其中包含以下元数据:
```
---
dependencies:
- { role: geerlingguy.repo-epel }
- { role: geerlingguy.mysql }
```
这些元数据将指定依赖项,以便安装EPEL存储库和MySQL角色。
13. 在playbook中使用lnmp角色:
```
- hosts: webserver
become: true
roles:
- lnmp
```
这个playbook将在webserver主机上使用lnmp角色。
这就是一个简单的LNMP Ansible角色部署示例。当然,还有很多其他的配置选项和任务可以添加到这个角色中,以满足不同的需求。
阅读全文