热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

运维自动化之ansibleplaybook安装lnmp环境

之前介绍了使用ansibleplaybok安装zabbix客户端、mysql服务端、nginx,现在介绍一下安装lnmp环境。下面是安装nginx的信息:nginx_user:ww

之前介绍了使用ansible playbok安装zabbix客户端、mysql服务端、nginx,现在介绍一下安装lnmp环境。

下面是安装nginx的信息:

nginx_user: www                        nginx用户
nginx_port: 80                         nginx监听端口
nginx_web_dir: /data/webroot/nginx     nginx的目录
nginx_version: 1.4.3                   nginx的版本
pcre_version: 8.33                     pcre的版本
pretended_name: Tengine                为了安全起见,把nginx名字改为tengine
pretended_version: 1.5.2               隐藏版本,换个tengine的版本

下面是安装php的信息:

php_user: www                            php fpm模式的启动用户
php_port: 9000                           php fpm使用tcp的端口
php_dir: /usr/local                      php的安装目录
php_version: 5.3.10                      php的版本
mysql_basedir: /data/mysql/basedir       mysql的目录

下面是安装mysql的信息:

mysql_basedir: /data/mysql/basedir                    源码目录
mysql_datadir: /data/mysql/datadir                    数据目录
mysql_user: mysql                                     mysql用户
mysql_database_user: root                             数据库用户
mysql_passwd: ‘E4yR3WnoluSFTCBAI‘                     数据库密码
mysql_port: 3306                                      mysql监听端口
mysql_sock: /data/mysql/datadir/mysql.sock            mysql的sock
mysql_charset: utf8                                   mysql字符集
mysql_collation: utf8_general_ci                      mysql排序方式
mysql_version: Percona-Server-5.5.21-rel25.1.tar.gz   mysql版本

备注:此playbook仅能对centos或者redhat的6.x版本进行安装。

下面是安装lnmp的playbook结构

09:28:50 # tree nginx* mysql* php*
nginx_delete
├── files
├── handlers
├── meta
│   └── main.yml
├── tasks
│   ├── delete.yml
│   └── main.yml
├── templates
└── vars
    └── main.yml
nginx_install
├── files
│   └── nginx-1.4.3.tar.gz
├── handlers
├── meta
│   └── main.yml
├── tasks
│   ├── copy.yml
│   ├── delete.yml
│   ├── install.yml
│   └── main.yml
├── templates
│   ├── index.html
│   ├── index.php
│   ├── install_nginx.sh
│   ├── nginx
│   ├── nginx.conf
│   └── vhost.conf
└── vars
    └── main.yml
mysql_delete
├── files
├── handlers
├── meta
│   └── main.yml
├── tasks
│   ├── delete.yml
│   └── main.yml
├── templates
└── vars
    └── main.yml
mysql_install
├── files
│   └── mysql.tar.gz
├── handlers
├── meta
│   └── main.yml
├── tasks
│   ├── copy.yml
│   ├── delete.yml
│   ├── install.yml
│   └── main.yml
├── templates
│   ├── install_mysql.sh
│   ├── my.cnf
│   ├── mysqld
│   └── mysql_security.sh
└── vars
    └── main.yml
php_delete
├── files
├── handlers
├── meta
│   └── main.yml
├── tasks
│   ├── delete.yml
│   └── main.yml
├── templates
│   └── delete_php.sh
└── vars
    └── main.yml
php_install
├── files
│   └── php.tar.gz
├── handlers
├── meta
│   └── main.yml
├── tasks
│   ├── copy.yml
│   ├── delete.yml
│   ├── install.yml
│   └── main.yml
├── templates
│   ├── install_php.sh
│   ├── php-fpm
│   └── php-fpm.conf
└── vars
    └── main.yml

36 directories, 47 files

playbook的lnmp安装是

09:29:59 # cat lnmp_install.yml 
---
- hosts: "{{host}}"
  remote_user: "{{user}}"
  gather_facts: True
  roles:
    - common
    - pcre_install
    - nginx_install
    - mysql_install
    - php_install

playbook的lnmp删除是

09:30:33 # cat lnmp_delete.yml 
---
- hosts: "{{host}}"
  remote_user: "{{user}}"
  gather_facts: True
  roles:
    - pcre_delete
    - php_delete
    - nginx_delete
    - mysql_delete

1、安装lnmp

09:35:55 #  time ansible-playbook lnmp_install.yml --extra-vars "host=192.168.240.13 user=root" --private-key=/root/test.pem 

PLAY [192.168.240.13] ********************************************************* 

GATHERING FACTS *************************************************************** 
ok: [192.168.240.13]

TASK: [common | Install initializtion require software] *********************** 
changed: [192.168.240.13]

TASK: [pcre_install | Copy Pcre Software To Redhat Client] ******************** 
changed: [192.168.240.13]

TASK: [pcre_install | Uncompression Pcre Software In Redhat Client] *********** 
changed: [192.168.240.13]

TASK: [pcre_install | Delete Pcre Software In Redhat Client] ****************** 
changed: [192.168.240.13]

TASK: [nginx_install | Copy Nginx Software To Redhat Client] ****************** 
changed: [192.168.240.13]

TASK: [nginx_install | Uncompression Nginx Software To Redhat Client] ********* 
changed: [192.168.240.13]

TASK: [nginx_install | Copy Nginx Start Script To Redhat Client] ************** 
changed: [192.168.240.13]

TASK: [nginx_install | Copy Nginx Config To Redhat Client] ******************** 
changed: [192.168.240.13]

TASK: [nginx_install | Copy Nginx Vhost Config to RedHat Client] ************** 
changed: [192.168.240.13]

TASK: [nginx_install | Create Nginx User In Redhat Client] ******************** 
changed: [192.168.240.13]

TASK: [nginx_install | Create Nginx  Dir] ************************************* 
changed: [192.168.240.13] => (item=vhost)
changed: [192.168.240.13] => (item=logs)

TASK: [nginx_install | Modify Nginx Dir Permission In Redhat Client] ********** 
changed: [192.168.240.13] => (item=/data/webroot/nginx)
changed: [192.168.240.13] => (item=/usr/local/nginx-1.4.3)

TASK: [nginx_install | Create Index Html To Redhat Client] ******************** 
changed: [192.168.240.13]

TASK: [nginx_install | Install Check Script In Redhat Client] ***************** 
changed: [192.168.240.13]

TASK: [nginx_install | Start Nginx Service In Redhat Client] ****************** 
changed: [192.168.240.13]

TASK: [nginx_install | Add Boot Start Nginx Service In Redhat Client] ********* 
changed: [192.168.240.13]

TASK: [nginx_install | Delete Nginx compression Software In Redhat Client] **** 
changed: [192.168.240.13]

TASK: [mysql_install | Copy Mysql Software To Redhat Client] ****************** 
changed: [192.168.240.13]

TASK: [mysql_install | Create Mysql User In Redhat Client] ******************** 
changed: [192.168.240.13]

TASK: [mysql_install | Copy Mysql Start Script To Redhat Client] ************** 
changed: [192.168.240.13]

TASK: [mysql_install | Copy Install Mysql Script  To Redhat Client] *********** 
changed: [192.168.240.13]

TASK: [mysql_install | Copy Mysql Config To Redhat Client] ******************** 
changed: [192.168.240.13]

TASK: [mysql_install | Copy Mysql Security Script To Redhat Client] *********** 
changed: [192.168.240.13]

TASK: [mysql_install | Create Mysql Install Dir] ****************************** 
ok: [192.168.240.13]

TASK: [mysql_install | Uncompression Mysql Software To Redhat Client] ********* 
changed: [192.168.240.13]

TASK: [mysql_install | Modify Mysql Dir Permission In Redhat Client] ********** 
ok: [192.168.240.13] => (item=/data/mysql/datadir)
ok: [192.168.240.13] => (item=/data/mysql/basedir)

TASK: [mysql_install | Install Mysql Script In Redhat Client] ***************** 
changed: [192.168.240.13]

TASK: [mysql_install | Start Myql Security Script In Redhat Client] *********** 
changed: [192.168.240.13]

TASK: [mysql_install | Add Boot Start Mysql Service In Redhat Client] ********* 
changed: [192.168.240.13]

TASK: [mysql_install | Delete Mysql compression Software In Redhat Client] **** 
changed: [192.168.240.13]

TASK: [php_install | Copy Php Software To Redhat Client] ********************** 
changed: [192.168.240.13]

TASK: [php_install | Uncompression Php Software To Redhat Client] ************* 
changed: [192.168.240.13]

TASK: [php_install | Copy Php Start Script To Redhat Client] ****************** 
changed: [192.168.240.13]

TASK: [php_install | Copy Php Config To Redhat Client] ************************ 
changed: [192.168.240.13]

TASK: [php_install | Copy Php Install Script To Redhat Client] **************** 
changed: [192.168.240.13]

TASK: [php_install | Create Php User In Redhat Client] ************************ 
ok: [192.168.240.13]

TASK: [php_install | Install Php Script In Redhat Client] ********************* 
changed: [192.168.240.13]

TASK: [php_install | Start Php Service In Redhat Client] ********************** 
changed: [192.168.240.13]

TASK: [php_install | Add Boot Start Php Service In Redhat Client] ************* 
changed: [192.168.240.13]

TASK: [php_install | Delete Php compression Software In Redhat Client] ******** 
changed: [192.168.240.13]

PLAY RECAP ******************************************************************** 
192.168.240.13             : ok=41   changed=37   unreachable=0    failed=0   


real	2m16.803s
user	0m14.753s
sys	0m1.468s

可以看到2分16秒就安装成功,一般比较费时的是使用yum安装软件与从本地负责包到客户端,所以yum源最后使用自己做的yum源或者找个速度快的yum源。

2、安装后测试

[root@ip-10-10-240-20 tmp]# ps -ef|grep nginx|wc -l
10
[root@ip-10-10-240-20 tmp]# ps -ef|grep mysql|wc -l
3
[root@ip-10-10-240-20 tmp]# ps -ef|grep php|wc -l
130
[root@ip-10-10-240-20 tmp]# cd /data/webroot/nginx/
logs/  vhost/ 
[root@ip-10-10-240-20 tmp]# cd /data/webroot/nginx/vhost/
[root@ip-10-10-240-20 vhost]# cat index.html 
Nginx 1.4.3 in 10.10.240.20  is success!
[root@ip-10-10-240-20 vhost]# cat index.php 

[root@ip-10-10-240-20 vhost]# curl 10.10.240.20/index.html
Nginx 1.4.3 in 10.10.240.20  is success!
[root@ip-10-10-240-20 vhost]# curl 10.10.240.20/index.php
Successs!!!Php install success!
[root@ip-10-10-240-20 vhost]# curl -I 10.10.240.20/index.php
HTTP/1.1 200 OK
Server: Tengine/1.5.2
Date: Mon, 21 Jul 2014 02:12:24 GMT
Content-Type: text/html
Connection: keep-alive
Vary: Accept-Encoding

3、删除lnmp

09:38:36 #  time ansible-playbook lnmp_delete.yml --extra-vars "host=192.168.240.13 user=root" --private-key=/root/test.pem 

PLAY [192.168.240.13] ********************************************************* 

GATHERING FACTS *************************************************************** 
ok: [192.168.240.13]

TASK: [pcre_delete | Delete Pcre] ********************************************* 
changed: [192.168.240.13]

TASK: [php_delete | Copy Delete Php Script To RedHat Client] ****************** 
changed: [192.168.240.13]

TASK: [php_delete | Run Delete Php Script In RedHat Client] ******************* 
changed: [192.168.240.13]

TASK: [php_delete | Delete Php User In Redhat Client] ************************* 
failed: [192.168.240.13] => {"failed": true, "item": "", "name": "www", "rc": 8}
msg: userdel: user www is currently logged in

...ignoring

TASK: [php_delete | Delete Php Script] **************************************** 
changed: [192.168.240.13]

TASK: [nginx_delete | stop nginx service] ************************************* 
changed: [192.168.240.13]

TASK: [nginx_delete | Delete Nginx Boot Start Script] ************************* 
changed: [192.168.240.13]

TASK: [nginx_delete | Delete Nginx Dir] *************************************** 
changed: [192.168.240.13]

TASK: [nginx_delete | Delete Nginx User] ************************************** 
changed: [192.168.240.13]

TASK: [nginx_delete | Delete Nginx Service Start Script] ********************** 
changed: [192.168.240.13]

TASK: [mysql_delete | Stop Mysql Service] ************************************* 
changed: [192.168.240.13]

TASK: [mysql_delete | Delete Mysql Boot Start Script] ************************* 
changed: [192.168.240.13]

TASK: [mysql_delete | Delete Mysql Dir And Socket] **************************** 
changed: [192.168.240.13]

TASK: [mysql_delete | Delete Mysql User] ************************************** 
changed: [192.168.240.13]

TASK: [mysql_delete | Delete Mysql Service Start Script] ********************** 
changed: [192.168.240.13]

PLAY RECAP ******************************************************************** 
192.168.240.13             : ok=16   changed=14   unreachable=0    failed=0   


real	0m31.511s
user	0m1.470s
sys	0m0.232s

4、删除后测试

[root@ip-10-10-240-20 vhost]# ll /usr/local/
total 40
drwxr-xr-x. 2 root   root   4096 Sep 23  2011 bin
drwxr-xr-x. 2 root   root   4096 Sep 23  2011 etc
drwxr-xr-x. 2 root   root   4096 Sep 23  2011 games
drwxr-xr-x. 2 root   root   4096 Sep 23  2011 include
drwxr-xr-x. 2 root   root   4096 Sep 23  2011 lib64
drwxr-xr-x. 2 root   root   4096 Sep 23  2011 libexec
drwxr-xr-x. 2 root   root   4096 Sep 23  2011 sbin
drwxr-xr-x. 5 root   root   4096 May 12  2013 share
drwxr-xr-x. 3 root   root   4096 May 12  2013 src
drwxr-xr-x  5 zabbix zabbix 4096 Jul  8 02:17 zabbix
[root@ip-10-10-240-20 vhost]# ps -ef|grep php
root     10016  3527  0 22:13 pts/0    00:00:00 grep php
[root@ip-10-10-240-20 vhost]# ps -ef|grep mysql
root     10018  3527  0 22:13 pts/0    00:00:00 grep mysql
[root@ip-10-10-240-20 vhost]# ps -ef|grep nginx
root     10020  3527  0 22:13 pts/0    00:00:00 grep nginx
[root@ip-10-10-240-20 vhost]# id www
id: www: No such user
[root@ip-10-10-240-20 vhost]# id mysql
id: mysql: No such user

可与看到都删除了。

如果大家想使用我的例子,可以从github里下载(地址是https://github.com/dl528888/ansible-examples/tree/master/lnmp_install),然后放到/etc/ansible目录里

,

本文出自 “吟—技术交流” 博客,请务必保留此出处http://dl528888.blog.51cto.com/2382721/1440775

运维自动化之ansible playbook安装lnmp环境


推荐阅读
  • Framework7:构建跨平台移动应用的高效框架
    Framework7 是一个开源免费的框架,适用于开发混合移动应用(原生与HTML混合)或iOS&Android风格的Web应用。此外,它还可以作为原型开发工具,帮助开发者快速创建应用原型。 ... [详细]
  • 本文介绍了如何使用 CMD 批处理脚本进行文件操作,包括将指定目录下的 PHP 文件重命名为 HTML 文件,并将这些文件复制到另一个目录。 ... [详细]
  • 自动验证时页面显示问题的解决方法
    在使用自动验证功能时,页面未能正确显示错误信息。通过使用 `dump($info->getError())` 可以帮助诊断和解决问题。 ... [详细]
  • 本文详细介绍了如何解决DNS服务器配置转发无法解析的问题,包括编辑主配置文件和重启域名服务的具体步骤。 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 解决Parallels Desktop错误15265的方法
    本文详细介绍了在使用Parallels Desktop时遇到错误15265的多种解决方案,包括检查网络连接、关闭代理服务器和修改主机文件等步骤。 ... [详细]
  • 解决 Windows Server 2016 网络连接问题
    本文详细介绍了如何解决 Windows Server 2016 在使用无线网络 (WLAN) 和有线网络 (以太网) 时遇到的连接问题。包括添加必要的功能和安装正确的驱动程序。 ... [详细]
  • 使用Jsoup解析并遍历HTML文档时,该库能够高效地生成一个清晰、规范的解析树,即使源HTML文档存在格式问题。Jsoup具备强大的容错能力,能够处理多种异常情况,如未闭合的标签等,确保解析结果的准确性和完整性。 ... [详细]
  • CentOS 7 中 iptables 过滤表实例与 NAT 表应用详解
    在 CentOS 7 系统中,iptables 的过滤表和 NAT 表具有重要的应用价值。本文通过具体实例详细介绍了如何配置 iptables 的过滤表,包括编写脚本文件 `/usr/local/sbin/iptables.sh`,并使用 `iptables -F` 清空现有规则。此外,还深入探讨了 NAT 表的配置方法,帮助读者更好地理解和应用这些网络防火墙技术。 ... [详细]
  • 在使用Eclipse进行调试时,如果遇到未解析的断点(unresolved breakpoint)并显示“未加载符号表,请使用‘file’命令加载目标文件以进行调试”的错误提示,这通常是因为调试器未能正确加载符号表。解决此问题的方法是通过GDB的`file`命令手动加载目标文件,以便调试器能够识别和解析断点。具体操作为在GDB命令行中输入 `(gdb) file `。这一步骤确保了调试环境能够正确访问和解析程序中的符号信息,从而实现有效的调试。 ... [详细]
  • 在 LeetCode 的“有效回文串 II”问题中,给定一个非空字符串 `s`,允许删除最多一个字符。本篇深入解析了如何判断删除一个字符后,字符串是否能成为回文串,并提出了高效的优化算法。通过详细的分析和代码实现,本文提供了多种解决方案,帮助读者更好地理解和应用这一算法。 ... [详细]
  • 系统数据实体验证异常:多个实体验证失败的错误处理与分析
    在使用MVC和EF框架进行数据保存时,遇到了 `System.Data.Entity.Validation.DbEntityValidationException` 错误,表明存在一个或多个实体验证失败的情况。本文详细分析了该错误的成因,并提出了有效的处理方法,包括检查实体属性的约束条件、调试日志的使用以及优化数据验证逻辑,以确保数据的一致性和完整性。 ... [详细]
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • 装饰者模式(Decorator):一种灵活的对象结构设计模式
    装饰者模式(Decorator)是一种灵活的对象结构设计模式,旨在为单个对象动态地添加功能,而无需修改原有类的结构。通过封装对象并提供额外的行为,装饰者模式比传统的继承方式更加灵活和可扩展。例如,可以在运行时为特定对象添加边框或滚动条等特性,而不会影响其他对象。这种模式特别适用于需要在不同情况下动态组合功能的场景。 ... [详细]
  • 本项目通过Python编程实现了一个简单的汇率转换器v1.02。主要内容包括:1. Python的基本语法元素:(1)缩进:用于表示代码的层次结构,是Python中定义程序框架的唯一方式;(2)注释:提供开发者说明信息,不参与实际运行,通常每个代码块添加一个注释;(3)常量和变量:用于存储和操作数据,是程序执行过程中的重要组成部分。此外,项目还涉及了函数定义、用户输入处理和异常捕获等高级特性,以确保程序的健壮性和易用性。 ... [详细]
author-avatar
Sure张硕
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有