博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ansible--项目实战
阅读量:5166 次
发布时间:2019-06-13

本文共 6268 字,大约阅读时间需要 20 分钟。

Ansible项目实战lnmp

项目规划

通过ansible roles配置lnmp环境,nginx通过源码编译安装,php通过源码编译安装,mysql通过yum安装(mysql源码编译超级慢)支持系统(centos6.xcentos7.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 nginxnginx├── 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.yml5 directories, 14 files

php roles

1)创建相应文件夹

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

2)最终编写效果

[root@ansible roles]# tree phpphp├── 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.yml5 directories, 14 files

mysql roles

1)创建相应文件夹

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

2)最终编写效果

[root@ansible roles]# tree mysqlmysql├── files├── handlers│   └── main.yml├── tasks│   ├── config.yml│   ├── install.yml│   ├── main.yml│   └── service.yml├── templates│   ├── my.cnf6.j2│   └── my.cnf7.j2└── vars5 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 '
' > {
{ WEBDIR }}/index.php" handlers: - name: Restart Nginx service: name=nginx state=restarted# hostslist文件准备,这样方便执行,可以在执行playbook时指定某台机器上运行[root@ansible roles]# cat hostlist 192.168.1.31192.168.1.32192.168.1.33192.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.ymldrwxr-xr-x. 7 root root 77 6月 5 10:44 mysql-rw-r--r--. 1 root root 81 6月 5 10:06 mysql_roles.ymldrwxr-xr-x. 7 root root 77 6月 4 15:37 nginx-rw-r--r--. 1 root root 89 6月 4 17:10 nginx_roles.ymldrwxr-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.j218 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

 

 

如需源码及软件包联系我

转载于:https://www.cnblogs.com/yanjieli/p/10980057.html

你可能感兴趣的文章
Doctype的作用
查看>>
java中的注释规范
查看>>
几道有趣的题
查看>>
hdu5834 Magic boy Bi Luo with his excited tree 【树形dp】
查看>>
Git 服务器搭建
查看>>
在js中利用标签添加元素
查看>>
centos7 挂载window下的共享文件夹
查看>>
NOIP2018游记
查看>>
VSCode修改Java运行及输出于集成终端而非调试控制台
查看>>
Unity最优化摘要
查看>>
类模板使用说明
查看>>
Redis源代码分析(一)--Redis结构解析
查看>>
Flex父子窗体相互调用
查看>>
改动网卡IP信息
查看>>
转载--存储是怎样炼成的
查看>>
转载---JavaScript执行机制
查看>>
一头扎进 JAVA
查看>>
关于session和cookie
查看>>
【Unity3D】简要分析unity3d中剪不断理还乱的yield
查看>>
【Java】国内maven私服
查看>>