Ansible项目实战LNMP

栏目: 服务器 · 发布时间: 6年前

内容简介:通过说明: 将这里角色都统一放在了

通过 ansible roles 配置 lnmp 环境, nginx 通过源码编译安装, php 通过源码编译安装, mysql 通过 yum 安装( mysql 源码编译超级慢 )支持系统( CentOS6.x centos7.x 系列)

说明: 将 nginxphp 源码包放到对应的角色文件下的 files 目录下,通过 vars/main.yml 控制安装的版本和路径。如下:

[root@ansible roles]# cat nginx/vars/main.yml 
DOWNLOAD_DIR: "/usr/local/src/"  #软件包拷贝到目标主机的存放路径
INSTALL_DIR: "/usr/local/"       #安装路径
NGINX_VERSION: "1.12.2"          #软件包版本
USER: "nginx"                    #运行的用户
GROUP: "nginx"                   #运行的组

角色编写

这里角色都统一放在了 /etc/ansible/roles

安装编译时所需要用到的依赖包

[root@ansible ~]# cd /etc/ansible/roles/
[root@ansible roles]# cat init_pkg.yml 
#安装源码编译 php 、nginx时所需要用到的依赖包
---
- hosts: all 
  remote_user: root

  tasks:
    - name: Install Package
      yum: name={{ item }} state=installed
      with_items:
        - gcc-c++
        - glibc
        - glibc-devel
        - glib2
        - glib2-devel
        - pcre
        - pcre-devel
        - zlib
        - zlib-devel
        - openssl
        - openssl-devel
        - libpng
        - libpng-devel
        - freetype
        - freetype-devel
        - libxml2
        - libxml2-devel
        - bzip2
        - bzip2-devel
        - ncurses
        - curl
        - gdbm-devel
        - libXpm-devel
        - libX11-devel
        - gd-devel
        - gmp-devel
        - readline-devel
        - libxslt-devel
        - expat-devel
        - xmlrpc-c
        - libcurl-devel

nginx roles

1)创建相应文件夹

[root@ansible roles]# mkdir -p nginx/{files,handlers,tasks,templates,vars}

2)最终编写效果

[root@ansible roles]# tree nginx
nginx
├── files
│   ├── nginx-1.12.2.tar.gz
│   └── nginx-1.16.0.tar.gz
├── handlers
│   └── main.yml
├── tasks
│   ├── config.yml
│   ├── copypkg.yml
│   ├── group.yml
│   ├── install.yml
│   ├── main.yml
│   ├── service.yml
│   └── user.yml
├── templates
│   ├── nginx.conf.j2
│   ├── nginx_init.j2
│   └── nginx.service.j2
└── vars
    └── main.yml

5 directories, 14 files

php roles

1)创建相应文件夹

[root@ansible roles]# mkdir -p php/{files,handlers,tasks,templates,vars}

2)最终编写效果

[root@ansible roles]# tree php
php
├── files
│   └── php-5.6.40.tar.gz
├── handlers
│   └── main.yml
├── tasks
│   ├── config.yml
│   ├── copypkg.yml
│   ├── group.yml
│   ├── install.yml
│   ├── main.yml
│   ├── service.yml
│   └── user.yml
├── templates
│   ├── php-fpm.conf.j2
│   ├── php-fpm.init.j2
│   ├── php-fpm.service.j2
│   └── php.ini.j2
└── vars
    └── main.yml

5 directories, 14 files

mysql roles

1)创建相应文件夹

[root@ansible roles]# mkdir -p mysql/{files,handlers,tasks,templates,vars}

2)最终编写效果

[root@ansible roles]# tree mysql
mysql
├── files
├── handlers
│   └── main.yml
├── tasks
│   ├── config.yml
│   ├── install.yml
│   ├── main.yml
│   └── service.yml
├── templates
│   ├── my.cnf6.j2
│   └── my.cnf7.j2
└── vars

5 directories, 7 files

角色执行playbook文件编写

[root@ansible roles]# cat nginx_roles.yml 
#源码编译安装nginx
---
- hosts: all
  remote_user: root
  roles:
    - role: nginx


[root@ansible roles]# cat php_roles.yml 
#源码编译安装nginx
---
- hosts: all
  remote_user: root
  roles:
    - role: php


[root@ansible roles]# cat mysql_roles.yml 
#yum安装MySQL
---
- hosts: all
  remote_user: root
  roles:
    - role: mysql 


[root@ansible roles]# cat lnmp.yml 
#配置lnmp,创建虚拟主机
---
- hosts: all
  remote_user: root
  roles:
    - role: nginx
    - role: php 
    - role: mysql
  
  vars:
    PORT: 8081
    WEBDIR: "/opt/www"
    CONFIGDIR: "/usr/local/nginx/conf/conf.d"

  tasks:
    - name: create vhost dir
      file: name={{ WEBDIR }} state=directory owner=www group=www mode=755

    - name: create vhost conf
      template: src=vhost.conf.j2 dest={{ CONFIGDIR }}/vhost.conf
      notify: Restart Nginx

    - name: create index.php
      shell: "echo '<?php phpinfo(); ?>' > {{ WEBDIR }}/index.php"
    
  handlers:
    - name: Restart Nginx
      service: name=nginx state=restarted


# hostslist文件准备,这样方便执行,可以在执行playbook时指定某台机器上运行
[root@ansible roles]# cat hostlist 
192.168.1.31
192.168.1.32
192.168.1.33
192.168.1.36


#所有文件查看
[root@ansible roles]# ll 
总用量 28
-rw-r--r--. 1 root root  53 6月   4 22:37 hostlist
-rw-r--r--. 1 root root 824 6月   5 10:53 init_pkg.yml
-rw-r--r--. 1 root root 646 6月   5 12:05 lnmp.yml
drwxr-xr-x. 7 root root  77 6月   5 10:44 mysql
-rw-r--r--. 1 root root  81 6月   5 10:06 mysql_roles.yml
drwxr-xr-x. 7 root root  77 6月   4 15:37 nginx
-rw-r--r--. 1 root root  89 6月   4 17:10 nginx_roles.yml
drwxr-xr-x. 7 root root  77 6月   4 17:18 php
-rw-r--r--. 1 root root  87 6月   4 17:37 php_roles.yml
-rw-r--r--. 1 root root 811 6月   5 11:53 vhost.conf.j2

所有文件查看

[root@ansible roles]# tree 
.
├── hostlist
├── init_pkg.yml
├── lnmp.yml
├── mysql
│   ├── files
│   ├── handlers
│   │   └── main.yml
│   ├── tasks
│   │   ├── config.yml
│   │   ├── install.yml
│   │   ├── main.yml
│   │   └── service.yml
│   ├── templates
│   │   ├── my.cnf6.j2
│   │   └── my.cnf7.j2
│   └── vars
├── mysql_roles.yml
├── nginx
│   ├── files
│   │   ├── nginx-1.12.2.tar.gz
│   │   └── nginx-1.16.0.tar.gz
│   ├── handlers
│   │   └── main.yml
│   ├── tasks
│   │   ├── config.yml
│   │   ├── copypkg.yml
│   │   ├── group.yml
│   │   ├── install.yml
│   │   ├── main.yml
│   │   ├── service.yml
│   │   └── user.yml
│   ├── templates
│   │   ├── nginx.conf.j2
│   │   ├── nginx_init.j2
│   │   └── nginx.service.j2
│   └── vars
│       └── main.yml
├── nginx_roles.yml
├── php
│   ├── files
│   │   └── php-5.6.40.tar.gz
│   ├── handlers
│   │   └── main.yml
│   ├── tasks
│   │   ├── config.yml
│   │   ├── copypkg.yml
│   │   ├── group.yml
│   │   ├── install.yml
│   │   ├── main.yml
│   │   ├── service.yml
│   │   └── user.yml
│   ├── templates
│   │   ├── php-fpm.conf.j2
│   │   ├── php-fpm.init.j2
│   │   ├── php-fpm.service.j2
│   │   └── php.ini.j2
│   └── vars
│       └── main.yml
├── php_roles.yml
└── vhost.conf.j2

18 directories, 42 files

执行说明

1)单独某一台机器安装nginx

[root@ansible roles]# ansible-playbook -i hostlist nginx_roles.yml --limit 192.168.1.31

2)单独某一台机器安装php

[root@ansible roles]# ansible-playbook -i hostlist php_roles.yml --limit 192.168.1.31

3)单独某一台机器安装mysql

[root@ansible roles]# ansible-playbook -i hostlist mysql_roles.yml --limit 192.168.1.31

4)单独某一台机器部署lnmp

[root@ansible roles]# ansible-playbook -i hostlist lnmp.yml --limit 192.168.1.31

5)所有机器部署php

[root@ansible roles]# ansible-playbook php_roles.yml

6)所有机器部署nginx

[root@ansible roles]# ansible-playbook nginx_roles.yml

7)所有机器部署mysql

[root@ansible roles]# ansible-playbook mysql_roles.yml

8)所有机器部署lnmp

[root@ansible roles]# ansible-playbook lnmp.yml

Ansible项目实战LNMP


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Ordering Disorder

Ordering Disorder

Khoi Vinh / New Riders Press / 2010-12-03 / USD 29.99

The grid has long been an invaluable tool for creating order out of chaos for designers of all kinds—from city planners to architects to typesetters and graphic artists. In recent years, web designers......一起来看看 《Ordering Disorder》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具