3rw2 发表于 2014-8-1 09:01:52

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

下面介绍使用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 *********************************************************

GATHERING FACTS ***************************************************************
ok:

TASK: ***********************
changed:

TASK: ********************
changed:

TASK: ***********
changed:

TASK: ******************
changed:

TASK: ****************
changed: => (item=httpd-2.4.7.tar.gz)
changed: => (item=libiconv.tar.gz)

TASK: ******************
changed:

TASK: *******
changed:

TASK: ******************
changed:

TASK: ************
changed:

TASK: ***
changed:

TASK: *******************************
ok:

TASK: ******************
changed:

TASK: ****************
changed:

TASK: *****************
failed: => {"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: ****************
changed:

TASK: ************************************
changed: => (item=/data/webroot/apache)
changed: => (item=/data/webroot/apache/logs)
changed: => (item=/data/webroot/apache/vhost)

TASK: ****************
changed:

TASK: *******************
changed:

TASK: ****************
changed:

TASK: *******
changed:

TASK: ***
changed:

TASK: ******************
changed:

TASK: ********************
changed:

TASK: **************
changed:

TASK: ***********
changed:

TASK: ********************
changed:

TASK: ***********
changed:

TASK: ******************************
ok:

TASK: *********
changed:

TASK: **********
ok: => (item=/data/mysql/datadir)
ok: => (item=/data/mysql/basedir)

TASK: *****************
changed:

TASK: ***********
changed:

TASK: *********
changed:

TASK: ****
changed:

TASK: **********************
changed:

TASK: *************
changed:

TASK: ******************
changed:

TASK: ************************
changed:

TASK: ****************
changed:

TASK: ************************
ok:

TASK: *********************
changed:

TASK: **********************
changed:

TASK: *************
changed:

TASK: ********
changed:

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
# ps -ef|grep mysql|wc -l
3
# ps -ef|grep http|wc -l
6
# ps -ef|grep php|wc -l
130
# ll /data/webroot/apache/
logs/vhost/
# ll /data/webroot/apache/vhost/
total 8
-rw-r--r-- 1 www www42 Jul 30 21:45 index.html
-rw-r--r-- 1 www www 174 Jul 30 21:45 index.php
# cat /data/webroot/apache/
logs/vhost/
# cat /data/webroot/apache/
logs/vhost/
# cat /data/webroot/apache/vhost/index.html
Apache 2.4.7 in 10.10.240.14is success!
# 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();
?>
# curl 10.10.240.14/index.html
Apache 2.4.7 in 10.10.240.14is success!
# 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 *********************************************************

GATHERING FACTS ***************************************************************
ok:

TASK: *************************************
changed:

TASK: *************************
changed:

TASK: ****************************
changed:

TASK: **************************************
changed:

TASK: **********************
changed:

TASK: *******************
changed:

TASK: ********************
changed:

TASK: ********************
changed:

TASK: *********
changed:

TASK: ************************************
failed: => {"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: ******************
changed:

TASK: *******************
changed:

TASK: *************************
changed:

TASK: ****************************************
changed:

TASK: *********************************************
changed:

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
# ps -ef|grep http
root      749112590 22:02 pts/0    00:00:00 grep http
# ps -ef|grep mysql
root      749312590 22:03 pts/0    00:00:00 grep mysql
# ps -ef|grep php
root      749512590 22:03 pts/0    00:00:00 grep php
# 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目录里


页: [1]
查看完整版本: 运维自动化之ansible playbook安装lamp环境