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

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDSClaw,2核4GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介:

下面介绍使用ansible playbook安装lamp环境

下面是apache的安装信息:

1
2
3
4
5
6
7
8
9
10
apr_version: 1.5.0
apr_util_version: 1.5.3
libiconv_version: 1.14
apache_version: 2.4.7
apache_web_dir:  /data/webroot/apache
apache_log:  /data/webroot/apache/logs
apache_vhost:  /data/webroot/apache/vhost
apache_port: 80
apache_user: www
serveradmin: denglei@chukong-inc.com

下面是php的安装信息:

1
2
3
4
5
php_user: www
php_port: 9000
php_dir:  /usr/local
php_version: 5.3.10
mysql_basedir:  /data/mysql/basedir

下面是mysql的安装信息:

1
2
3
4
5
6
7
8
9
10
mysql_basedir:  /data/mysql/basedir
mysql_datadir:  /data/mysql/datadir
mysql_user: mysql
mysql_database_user: root
mysql_passwd:  'E4yR3WnoluSFTCBAI'
mysql_port: 3306
mysql_sock:  /data/mysql/datadir/mysql .sock
mysql_charset: utf8
mysql_collation: utf8_general_ci
mysql_version: Percona-Server-5.5.21-rel25.1. tar .gz

下面是lamp的playbook的结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
09:09:17  # tree apache_* mysql_* php_*
apache_delete
├── files
├── handlers
├── meta
│   └── main.yml
├── tasks
│   ├── delete.yml
│   └── main.yml
├── templates
└── vars
     └── main.yml
apache_install
├── files
│   ├── httpd-2.4.7. tar .gz
│   └── libiconv. tar .gz
├── handlers
├── meta
│   └── main.yml
├── tasks
│   ├── copy.yml
│   ├── delete.yml
│   ├──  install .yml
│   └── main.yml
├── templates
│   ├── httpd
│   ├── httpd.conf
│   ├── index.html
│   ├── index.php
│   └── 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的lamp安装内容是:

1
2
3
4
5
6
7
8
9
10
11
09:10:15  # cat lamp_install.yml 
---
- hosts:  "`host`"
   remote_user:  "`user`"
   gather_facts: True
   roles:
     - common
     - pcre_install
     - apache_install
     - mysql_install
     - php_install

playbook的lamp删除的内容是:

1
2
3
4
5
6
7
8
9
10
09:10:58  # cat lamp_delete.yml 
---
- hosts:  "`host`"
   remote_user:  "`user`"
   gather_facts: True
   roles:
     - mysql_delete
     - apache_delete
     - php_delete
     - pcre_delete

1、安装lamp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
09:27:09  # time ansible-playbook lamp_install.yml --extra-vars "host=192.168.240.11 user=root" --private-key=/root/test.pem
 
PLAY [192.168.240.11] ********************************************************* 
 
GATHERING FACTS *************************************************************** 
ok: [192.168.240.11]
 
TASK: [common | Install initializtion require software] *********************** 
changed: [192.168.240.11]
 
TASK: [pcre_install | Copy Pcre Software To Redhat Client] ******************** 
changed: [192.168.240.11]
 
TASK: [pcre_install | Uncompression Pcre Software In Redhat Client] *********** 
changed: [192.168.240.11]
 
TASK: [pcre_install | Delete Pcre Software In Redhat Client] ****************** 
changed: [192.168.240.11]
 
TASK: [apache_install | Copy Apache Software To Redhat Client] **************** 
changed: [192.168.240.11] => (item=httpd-2.4.7. tar .gz)
changed: [192.168.240.11] => (item=libiconv. tar .gz)
 
TASK: [apache_install | Create Apache User In Redhat Client] ****************** 
changed: [192.168.240.11]
 
TASK: [apache_install | Uncompression Apache Software To Redhat Client] ******* 
changed: [192.168.240.11]
 
TASK: [apache_install | Copy Apache Config To Redhat Client] ****************** 
changed: [192.168.240.11]
 
TASK: [apache_install | Copy Apache Vhost Config To Redhat Client] ************ 
changed: [192.168.240.11]
 
TASK: [apache_install | Copy Apache Start Service Script  To Redhat Client] *** 
changed: [192.168.240.11]
 
TASK: [apache_install | Create Lib Install Dir] ******************************* 
ok: [192.168.240.11]
 
TASK: [apache_install | Check Apache Iconv In Redhat Client] ****************** 
changed: [192.168.240.11]
 
TASK: [apache_install | Install Apache Iconv In Redhat Client] **************** 
changed: [192.168.240.11]
 
TASK: [apache_install | Check Lib In Config In Redhat Client] ***************** 
failed: [192.168.240.11] => { "changed" true "cmd" "grep -c /usr/local/lib/ /etc/ld.so.conf " "delta" "0:00:00.006510" "end" "2014-07-30 21:45:19.036594" "item" "" "rc" : 1,  "start" "2014-07-30 21:45:19.030084" }
stdout: 0
...ignoring
 
TASK: [apache_install | Install Apache Iconv In Redhat Client] **************** 
changed: [192.168.240.11]
 
TASK: [apache_install | Create Apache Dir] ************************************ 
changed: [192.168.240.11] => (item= /data/webroot/apache )
changed: [192.168.240.11] => (item= /data/webroot/apache/logs )
changed: [192.168.240.11] => (item= /data/webroot/apache/vhost )
 
TASK: [apache_install | Install Check Script In Redhat Client] **************** 
changed: [192.168.240.11]
 
TASK: [apache_install | Create Index Html To Redhat Client] ******************* 
changed: [192.168.240.11]
 
TASK: [apache_install | Start Apache Service In Redhat Client] **************** 
changed: [192.168.240.11]
 
TASK: [apache_install | Add Boot Start Apache Service In Redhat Client] ******* 
changed: [192.168.240.11]
 
TASK: [apache_install | Delete Apache compression Software In Redhat Client] *** 
changed: [192.168.240.11]
 
TASK: [mysql_install | Copy Mysql Software To Redhat Client] ****************** 
changed: [192.168.240.11]
 
TASK: [mysql_install | Create Mysql User In Redhat Client] ******************** 
changed: [192.168.240.11]
 
TASK: [mysql_install | Copy Mysql Start Script To Redhat Client] ************** 
changed: [192.168.240.11]
 
TASK: [mysql_install | Copy Install Mysql Script  To Redhat Client] *********** 
changed: [192.168.240.11]
 
TASK: [mysql_install | Copy Mysql Config To Redhat Client] ******************** 
changed: [192.168.240.11]
 
TASK: [mysql_install | Copy Mysql Security Script To Redhat Client] *********** 
changed: [192.168.240.11]
 
TASK: [mysql_install | Create Mysql Install Dir] ****************************** 
ok: [192.168.240.11]
 
TASK: [mysql_install | Uncompression Mysql Software To Redhat Client] ********* 
changed: [192.168.240.11]
 
TASK: [mysql_install | Modify Mysql Dir Permission In Redhat Client] ********** 
ok: [192.168.240.11] => (item= /data/mysql/datadir )
ok: [192.168.240.11] => (item= /data/mysql/basedir )
 
TASK: [mysql_install | Install Mysql Script In Redhat Client] ***************** 
changed: [192.168.240.11]
 
TASK: [mysql_install | Start Myql Security Script In Redhat Client] *********** 
changed: [192.168.240.11]
 
TASK: [mysql_install | Add Boot Start Mysql Service In Redhat Client] ********* 
changed: [192.168.240.11]
 
TASK: [mysql_install | Delete Mysql compression Software In Redhat Client] **** 
changed: [192.168.240.11]
 
TASK: [php_install | Copy Php Software To Redhat Client] ********************** 
changed: [192.168.240.11]
 
TASK: [php_install | Uncompression Php Software To Redhat Client] ************* 
changed: [192.168.240.11]
 
TASK: [php_install | Copy Php Start Script To Redhat Client] ****************** 
changed: [192.168.240.11]
 
TASK: [php_install | Copy Php Config To Redhat Client] ************************ 
changed: [192.168.240.11]
 
TASK: [php_install | Copy Php Install Script To Redhat Client] **************** 
changed: [192.168.240.11]
 
TASK: [php_install | Create Php User In Redhat Client] ************************ 
ok: [192.168.240.11]
 
TASK: [php_install | Install Php Script In Redhat Client] ********************* 
changed: [192.168.240.11]
 
TASK: [php_install | Start Php Service In Redhat Client] ********************** 
changed: [192.168.240.11]
 
TASK: [php_install | Add Boot Start Php Service In Redhat Client] ************* 
changed: [192.168.240.11]
 
TASK: [php_install | Delete Php compression Software In Redhat Client] ******** 
changed: [192.168.240.11]
 
PLAY RECAP ******************************************************************** 
192.168.240.11             : ok=45   changed=40   unreachable=0    failed=0   
 
 
real    4m42.365s
user    0m39.984s
sys 0m2.872s

2、安装后测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[root@ip-10-10-240-14 tmp] # ps -ef|grep mysql|wc -l
3
[root@ip-10-10-240-14 tmp] # ps -ef|grep http|wc -l
6
[root@ip-10-10-240-14 tmp] # ps -ef|grep php|wc -l
130
[root@ip-10-10-240-14 tmp] # ll /data/webroot/apache/
logs/  vhost/ 
[root@ip-10-10-240-14 tmp] # ll /data/webroot/apache/vhost/
total 8
-rw-r--r-- 1 www www  42 Jul 30 21:45 index.html
-rw-r--r-- 1 www www 174 Jul 30 21:45 index.php
[root@ip-10-10-240-14 tmp] # cat /data/webroot/apache/
logs/  vhost/ 
[root@ip-10-10-240-14 tmp] # cat /data/webroot/apache/
logs/  vhost/ 
[root@ip-10-10-240-14 tmp] # cat /data/webroot/apache/vhost/index.html 
Apache 2.4.7  in  10.10.240.14  is success!
[root@ip-10-10-240-14 tmp] # cat /data/webroot/apache/vhost/index.php 
<?php
$link = mysql_connect( '10.10.240.14' , 'zabbix' , 'zabbix' );
if  ($link)
echo  "Successs!!!Php install success!\n" ;
else
echo  "Fail!!!Php install fail!\n" ;
mysql_close();
?>
[root@ip-10-10-240-14 tmp] # curl 10.10.240.14/index.html
Apache 2.4.7  in  10.10.240.14  is success!
[root@ip-10-10-240-14 tmp] # curl 10.10.240.14/index.php
Successs!!!Php  install  success!

可以看到安装没问题

3、删除

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
09:49:03  # time ansible-playbook lamp_delete.yml --extra-vars "host=192.168.240.11 user=root" --private-key=/root/test.pem
 
PLAY [192.168.240.11] ********************************************************* 
 
GATHERING FACTS *************************************************************** 
ok: [192.168.240.11]
 
TASK: [mysql_delete | Stop Mysql Service] ************************************* 
changed: [192.168.240.11]
 
TASK: [mysql_delete | Delete Mysql Boot Start Script] ************************* 
changed: [192.168.240.11]
 
TASK: [mysql_delete | Delete Mysql Dir And Socket] **************************** 
changed: [192.168.240.11]
 
TASK: [mysql_delete | Delete Mysql User] ************************************** 
changed: [192.168.240.11]
 
TASK: [mysql_delete | Delete Mysql Service Start Script] ********************** 
changed: [192.168.240.11]
 
TASK: [apache_delete | Stop Httpd Service In RedHat Client] ******************* 
changed: [192.168.240.11]
 
TASK: [apache_delete | Delete Boot Start In RedHat Client] ******************** 
changed: [192.168.240.11]
 
TASK: [apache_delete | Delete Apache Dir In RedHat Client] ******************** 
changed: [192.168.240.11]
 
TASK: [apache_delete | Delete Apache Service Script In RedHat Client] ********* 
changed: [192.168.240.11]
 
TASK: [apache_delete | Delete Apache User] ************************************ 
failed: [192.168.240.11] => { "changed" true "cmd" "userdel www " "delta" "0:00:00.013968" "end" "2014-07-30 22:00:24.245309" "item" "" "rc" : 8,  "start" "2014-07-30 22:00:24.231341" }
stderr: userdel: user www is currently logged  in
...ignoring
 
TASK: [php_delete | Copy Delete Php Script To RedHat Client] ****************** 
changed: [192.168.240.11]
 
TASK: [php_delete | Run Delete Php Script In RedHat Client] ******************* 
changed: [192.168.240.11]
 
TASK: [php_delete | Delete Php User In Redhat Client] ************************* 
changed: [192.168.240.11]
 
TASK: [php_delete | Delete Php Script] **************************************** 
changed: [192.168.240.11]
 
TASK: [pcre_delete | Delete Pcre] ********************************************* 
changed: [192.168.240.11]
 
PLAY RECAP ******************************************************************** 
192.168.240.11             : ok=16   changed=15   unreachable=0    failed=0   
 
 
real    0m23.096s
user    0m3.943s
sys 0m0.516s

4、删除后测试

1
2
3
4
5
6
7
8
[root@ip-10-10-240-14 tmp] # ps -ef|grep http
root      7491  1259  0 22:02 pts /0     00:00:00  grep  http
[root@ip-10-10-240-14 tmp] # ps -ef|grep mysql
root      7493  1259  0 22:03 pts /0     00:00:00  grep  mysql
[root@ip-10-10-240-14 tmp] # ps -ef|grep php
root      7495  1259  0 22:03 pts /0     00:00:00  grep  php
[root@ip-10-10-240-14 tmp] # curl 10.10.240.14
curl: (7) couldn't connect to host

可与看到都删除了。

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

wKioL1PZpeayFuPXAAGZcVlnikI726.jpg




 本文转自 reinxu 51CTO博客,原文链接:http://blog.51cto.com/dl528888/1533086,如需转载请自行联系原作者




相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
6月前
|
安全 Linux iOS开发
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
449 6
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
|
6月前
|
Ubuntu 安全 iOS开发
Nessus Professional 10.10 Auto Installer for Ubuntu 24.04 - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for Ubuntu 24.04 - Nessus 自动化安装程序
820 5
|
6月前
|
安全 Ubuntu iOS开发
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
266 3
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
|
6月前
|
安全 Ubuntu iOS开发
Nessus Professional 10.10 Auto Installer for macOS Tahoe - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for macOS Tahoe - Nessus 自动化安装程序
190 5
|
弹性计算 Ubuntu Linux
阿里云系统运维管理OOS一键安装宝塔面板,这个功能太牛了!
宝塔面板是实用的服务器管理工具,支持多种操作系统(如Ubuntu、CentOS等)。通过阿里云OOS可一键安装。安装前提包括ECS实例运行中且有公网,安全组需开放8888端口。安装步骤简单,进入ECS控制台选择预装应用并确认下单,完成后在控制台查看详情和登录信息。最后验证安装结果,确保能成功访问宝塔面板URL。
669 82
|
弹性计算 Ubuntu Linux
阿里云服务器一键安装Docker社区版教程,基于系统运维管理OOS
阿里云服务器一键安装Docker社区版教程,基于系统运维管理OOS自动化部署。支持Ubuntu 22.04/20.04、CentOS 7.7-7.9及Alibaba Cloud Linux 3.2104 LTS。前提条件:ECS实例需运行中且有公网。步骤:选择Docker扩展并安装,验证成功通过命令`docker -v`查看版本号。
1094 79
|
存储 人工智能 自然语言处理
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
ChatMCP 是一款基于模型上下文协议(MCP)的 AI 聊天客户端,支持多语言和自动化安装。它能够与多种大型语言模型(LLM)如 OpenAI、Claude 和 OLLama 等进行交互,具备自动化安装 MCP 服务器、SSE 传输支持、自动选择服务器、聊天记录管理等功能。
2899 16
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
|
运维 监控 安全
云计算环境下的运维挑战与解决方案
本文探讨了云计算环境中运维面临的主要挑战,包括资源管理、自动化部署、安全性问题等,并提出了相应的解决策略。通过案例分析和最佳实践,为云环境下的运维工作提供了指导和参考。
804 28
|
运维 Ubuntu 应用服务中间件
自动化运维之路:使用Ansible进行服务器管理
在现代IT基础设施中,自动化运维已成为提高效率和可靠性的关键。本文将引导您通过使用Ansible这一强大的自动化工具来简化日常的服务器管理任务。我们将一起探索如何配置Ansible、编写Playbook以及执行自动化任务,旨在为读者提供一条清晰的路径,从而步入自动化运维的世界。
331 11
|
运维 网络安全 Python
自动化运维:使用Ansible实现批量服务器配置
在快速迭代的IT环境中,高效、可靠的服务器管理变得至关重要。本文将介绍如何使用Ansible这一强大的自动化工具,来简化和加速批量服务器配置过程。我们将从基础开始,逐步深入到更复杂的应用场景,确保即使是新手也能跟上节奏。文章将不包含代码示例,而是通过清晰的步骤和逻辑结构,引导读者理解自动化运维的核心概念及其在实际操作中的应用。

热门文章

最新文章