运维自动化之ansible playbook安装mysql

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

上次介绍了如何使用ansible playbook安装zabbix客户端(http://dl528888.blog.51cto.com/2382721/1436745),这次介绍一下如何使用playbook安装mysql。

下面是安装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用户
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版本

下面是安装mysql的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
10:24:06  # tree mysql_*
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
 
12 directories, 15 files

playbook的mysql安装的是

1
2
3
4
5
6
7
8
10:32:06  # cat mysql_install.yml 
---
- hosts:  "`host`"
   remote_user:  "`user`"
   gather_facts: True
   roles:
     - common
     - mysql_install

playbook的mysql协助的是

1
2
3
4
5
6
7
10:32:44  # cat mysql_delete.yml 
---
- hosts:  "`host`"
   remote_user:  "`user`"
   gather_facts: True
   roles:
     - mysql_delete

由于在上篇安装zabbix客户端已经介绍了结构,所以现在不介绍了。

1、安装mysql

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
10:26:00  #  time ansible-playbook mysql_install.yml --extra-vars "host=192.168.240.17 user=root" --private-key=/root/test.pem 
 
PLAY [192.168.240.17] ********************************************************* 
 
GATHERING FACTS *************************************************************** 
ok: [192.168.240.17]
 
TASK: [common | Install initializtion require software] *********************** 
changed: [192.168.240.17]
 
TASK: [mysql_install | Copy Mysql Software To Redhat Client] ****************** 
changed: [192.168.240.17]
 
TASK: [mysql_install | Create Mysql User In Redhat Client] ******************** 
changed: [192.168.240.17]
 
TASK: [mysql_install | Copy Mysql Start Script To Redhat Client] ************** 
changed: [192.168.240.17]
 
TASK: [mysql_install | Copy Install Mysql Script  To Redhat Client] *********** 
changed: [192.168.240.17]
 
TASK: [mysql_install | Copy Mysql Config To Redhat Client] ******************** 
changed: [192.168.240.17]
 
TASK: [mysql_install | Copy Mysql Security Script To Redhat Client] *********** 
changed: [192.168.240.17]
 
TASK: [mysql_install | Create Mysql Install Dir] ****************************** 
ok: [192.168.240.17]
 
TASK: [mysql_install | Uncompression Mysql Software To Redhat Client] ********* 
changed: [192.168.240.17]
 
TASK: [mysql_install | Modify Mysql Dir Permission In Redhat Client] ********** 
ok: [192.168.240.17] => (item= /data/mysql/datadir )
ok: [192.168.240.17] => (item= /data/mysql/basedir )
 
TASK: [mysql_install | Install Mysql Script In Redhat Client] ***************** 
changed: [192.168.240.17]
 
TASK: [mysql_install | Start Myql Security Script In Redhat Client] *********** 
changed: [192.168.240.17]
 
TASK: [mysql_install | Add Boot Start Mysql Service In Redhat Client] ********* 
changed: [192.168.240.17]
 
TASK: [mysql_install | Delete Mysql compression Software In Redhat Client] **** 
changed: [192.168.240.17]
 
PLAY RECAP ******************************************************************** 
192.168.240.17             : ok=15   changed=12   unreachable=0    failed=0   
 
 
real    2m1.596s
user    0m8.815s
sys 0m0.848s

2、安装后测试

登陆192.168.240.17的测试机查看mysql安装情况

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
[root@ip-10-10-240-21 tmp] # ll
total 16
lrwxrwxrwx 1 root   root    30 Jul 13 22:27 mysql.sock ->  /data/mysql/datadir/mysql .sock
-rw------- 1 root   root   256 Jul 10 06:07 tmp.0PLkgCq81n
-rw------- 1 root   root   197 Jul  9 05:35 yum_save_tx-2014-07-09-09-35ibcBiO.yumtx
-rw-rw-r-- 1 zabbix zabbix 320 Jul 10 21:39 zabbix_agentd.log
-rw-rw-r-- 1 zabbix zabbix   5 Jul 10 21:39 zabbix_agentd.pid
[root@ip-10-10-240-21 tmp] # ps -ef|grep mysql
root     21333     1  0 22:27 ?        00:00:00  /bin/sh  /data/mysql/basedir/bin/mysqld_safe  --defaults- file = /data/mysql/datadir/my .cnf --datadir= /data/mysql/datadir  --pid- file = /data/mysql/datadir/mysql .pid
mysql    22156 21333  2 22:27 ?        00:00:08  /data/mysql/basedir/bin/mysqld  --defaults- file = /data/mysql/datadir/my .cnf --basedir= /data/mysql/basedir  --datadir= /data/mysql/datadir  --plugin- dir = /data/mysql/basedir/lib/plugin  --user=mysql --log-error= /data/mysql/datadir/mysql-error .log -- open -files-limit=10240 --pid- file = /data/mysql/datadir/mysql .pid --socket= /data/mysql/datadir/mysql .sock --port=3306
root     22440 20233  0 22:33 pts /0     00:00:00  grep  mysql
[root@ip-10-10-240-21 tmp] # ll /data/mysql/
total 8
drwxr-xr-x 13 mysql mysql 4096 Jun 26 03:59 basedir
drwxr-xr-x  4 mysql mysql 4096 Jul 13 22:28 datadir
[root@ip-10-10-240-21 tmp] # ll /etc/init.d/mysqld 
-rwxr-xr-x 1 root root 10905 Jul 13 22:27  /etc/init .d /mysqld
[root@ip-10-10-240-21 tmp] # /etc/init.d/mysqld status
MySQL (Percona Server) running (22156)                     [  OK  ]
[root@ip-10-10-240-21 tmp] # chkconfig --list|grep mysql
mysqld             0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@ip-10-10-240-21 tmp] # mysql -h 192.168.240.17 -u root -pE4yR3WnoluSFTCBAI
ERROR 1045 (28000): Access denied  for  user  'root' @ '192.168.240.17'  (using password: YES)
[root@ip-10-10-240-21 tmp] # mysql -h 10.10.240.21 -u root -pE4yR3WnoluSFTCBAI
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection  id  is 8
Server version: 5.5.21-log Source distribution
 
Copyright (c) 2000, 2011, Oracle and /or  its affiliates. All rights reserved.
 
Oracle is a registered trademark of Oracle Corporation and /or  its
affiliates. Other names may be trademarks of their respective
owners.
 
Type  'help;'  or  '\h'  for  help. Type  '\c'  to  clear  the current input statement.
 
 
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows  in  set  (0.00 sec)
 
mysql> use mysql
Reading table information  for  completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
mysql>  select  host,user,password from user;
+--------------+--------+-------------------------------------------+
| host         | user   | password                                  |
+--------------+--------+-------------------------------------------+
| 10.10.240.21 | root   | *BE78618CBAFFF409CE17D81579C1678B94439BE1 |
| %            | zabbix | *DEEF4D7D88CD046ECA02A80393B7780A63E7E789 |
+--------------+--------+-------------------------------------------+
2 rows  in  set  (0.00 sec)

可以看到已经按照我的要求安装完成,下面在进行删除测试。

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
10:49:18  #  time ansible-playbook mysql_delete.yml --extra-vars "host=192.168.240.17 user=root" --private-key=/root/test.pem 
 
PLAY [192.168.240.17] ********************************************************* 
 
GATHERING FACTS *************************************************************** 
ok: [192.168.240.17]
 
TASK: [mysql_delete | Stop Mysql Service] ************************************* 
changed: [192.168.240.17]
 
TASK: [mysql_delete | Delete Mysql Boot Start Script] ************************* 
changed: [192.168.240.17]
 
TASK: [mysql_delete | Delete Mysql Dir And Socket] **************************** 
changed: [192.168.240.17]
 
TASK: [mysql_delete | Delete Mysql User] ************************************** 
changed: [192.168.240.17]
 
TASK: [mysql_delete | Delete Mysql Service Start Script] ********************** 
changed: [192.168.240.17]
 
PLAY RECAP ******************************************************************** 
192.168.240.17             : ok=6    changed=5    unreachable=0    failed=0   
 
 
real    0m25.248s
user    0m0.632s
sys 0m0.102s

4、删除后测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@ip-10-10-240-21 tmp] # ll /tmp/
total 16
-rw------- 1 root   root   256 Jul 10 06:07 tmp.0PLkgCq81n
-rw------- 1 root   root   197 Jul  9 05:35 yum_save_tx-2014-07-09-09-35ibcBiO.yumtx
-rw-rw-r-- 1 zabbix zabbix 320 Jul 10 21:39 zabbix_agentd.log
-rw-rw-r-- 1 zabbix zabbix   5 Jul 10 21:39 zabbix_agentd.pid
[root@ip-10-10-240-21 tmp] # ll /data/
total 4
drwxr-xr-x 3 root root 4096 Jul 10 22:11 webroot
[root@ip-10-10-240-21 tmp] # ps -ef|grep mysql
root     22955 20233  0 22:50 pts /0     00:00:00  grep  mysql
[root@ip-10-10-240-21 tmp] # ll /etc/init.d/mysql
ls : cannot access  /etc/init .d /mysql : No such  file  or directory
[root@ip-10-10-240-21 tmp] # chkconfig --list|grep mysql
[root@ip-10-10-240-21 tmp] #

可以看到都删除完成。

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

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
11:20:08  # unzip -v mysql_install.zip 
Archive:  mysql_install.zip
  Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
      113  Defl:N       89  21% 07-14-2014 10:32 aaed0763  mysql_install.yml
       99  Defl:N       82  17% 07-14-2014 10:32 70c2a028  mysql_delete.yml
        0  Stored        0   0% 07-03-2014 17:29 00000000  roles /common/
        0  Stored        0   0% 06-30-2014 15:58 00000000  roles /common/meta/
      267  Defl:N      178  33% 06-30-2014 15:58 31ee20ec  roles /common/meta/main .yml
        0  Stored        0   0% 07-11-2014 09:31 00000000  roles /common/tasks/
      586  Defl:N      268  54% 07-08-2014 10:18 1c0af2a1  roles /common/tasks/main .yml
        0  Stored        0   0% 06-19-2014 13:43 00000000  roles /common/handlers/
       58  Defl:N       48  17% 06-19-2014 13:43 8d058053  roles /common/handlers/main .yml
        0  Stored        0   0% 06-19-2014 13:30 00000000  roles /common/vars/
        0  Stored        0   0% 06-19-2014 13:30 00000000  roles /common/templates/
        0  Stored        0   0% 06-19-2014 13:30 00000000  roles /common/files/
        0  Stored        0   0% 06-24-2014 11:27 00000000  roles /mysql_install/
        0  Stored        0   0% 07-08-2014 14:12 00000000  roles /mysql_install/meta/
      198  Defl:N      149  25% 07-08-2014 14:12 b03e00eb  roles /mysql_install/meta/main .yml
        0  Stored        0   0% 07-14-2014 09:27 00000000  roles /mysql_install/tasks/
      201  Defl:N      153  24% 07-14-2014 09:27 51de730b  roles /mysql_install/tasks/delete .yml
       65  Defl:N       41  37% 07-14-2014 09:27 a3197ca7  roles /mysql_install/tasks/main .yml
     1281  Defl:N      329  74% 07-14-2014 09:27 73d60454  roles /mysql_install/tasks/copy .yml
     1162  Defl:N      375  68% 07-14-2014 09:27 e5a7341c  roles /mysql_install/tasks/install .yml
        0  Stored        0   0% 06-19-2014 13:30 00000000  roles /mysql_install/handlers/
        0  Stored        0   0% 07-14-2014 09:51 00000000  roles /mysql_install/vars/
      313  Defl:N      177  44% 07-14-2014 09:51 bf4476a7  roles /mysql_install/vars/main .yml
        0  Stored        0   0% 07-14-2014 11:11 00000000  roles /mysql_install/templates/
      518  Defl:N      241  54% 07-14-2014 09:15 529052bf  roles /mysql_install/templates/install_mysql .sh
    10905  Defl:N     3765  66% 06-26-2014 14:06 e35e7b82  roles /mysql_install/templates/mysqld
     2122  Defl:N      823  61% 07-14-2014 09:49 f91c74ab  roles /mysql_install/templates/my .cnf
      794  Defl:N      275  65% 07-03-2014 13:15 560ee63e  roles /mysql_install/templates/mysql_security .sh
        0  Stored        0   0% 06-26-2014 13:59 00000000  roles /mysql_install/files/
61805835  Defl:N 60413846   2% 06-26-2014 16:18 f61e317d  roles /mysql_install/files/mysql . tar .gz
        0  Stored        0   0% 06-24-2014 11:27 00000000  roles /mysql_delete/
        0  Stored        0   0% 07-08-2014 14:12 00000000  roles /mysql_delete/meta/
      197  Defl:N      147  25% 07-08-2014 14:12 fe6b0ef8  roles /mysql_delete/meta/main .yml
        0  Stored        0   0% 07-14-2014 09:39 00000000  roles /mysql_delete/tasks/
      692  Defl:N      245  65% 07-14-2014 09:39 dccd57b4  roles /mysql_delete/tasks/delete .yml
       22  Stored       22   0% 06-27-2014 13:30 728ce4aa  roles /mysql_delete/tasks/main .yml
        0  Stored        0   0% 06-19-2014 13:30 00000000  roles /mysql_delete/handlers/
        0  Stored        0   0% 07-03-2014 13:16 00000000  roles /mysql_delete/vars/
      313  Defl:N      177  44% 07-14-2014 10:56 bf4476a7  roles /mysql_delete/vars/main .yml
        0  Stored        0   0% 06-27-2014 13:30 00000000  roles /mysql_delete/templates/
        0  Stored        0   0% 06-27-2014 13:30 00000000  roles /mysql_delete/files/
--------          -------  ---                            -------
61825741         60421430   2%                            41 files

如果觉得好,给个赞并多评论,谢谢。




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

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
348
分享
相关文章
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
ChatMCP 是一款基于模型上下文协议(MCP)的 AI 聊天客户端,支持多语言和自动化安装。它能够与多种大型语言模型(LLM)如 OpenAI、Claude 和 OLLama 等进行交互,具备自动化安装 MCP 服务器、SSE 传输支持、自动选择服务器、聊天记录管理等功能。
1246 16
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
自动化运维之路:使用Ansible进行服务器管理
在现代IT基础设施中,自动化运维已成为提高效率和可靠性的关键。本文将引导您通过使用Ansible这一强大的自动化工具来简化日常的服务器管理任务。我们将一起探索如何配置Ansible、编写Playbook以及执行自动化任务,旨在为读者提供一条清晰的路径,从而步入自动化运维的世界。
自动化运维:使用Ansible实现批量服务器配置
在快速迭代的IT环境中,高效、可靠的服务器管理变得至关重要。本文将介绍如何使用Ansible这一强大的自动化工具,来简化和加速批量服务器配置过程。我们将从基础开始,逐步深入到更复杂的应用场景,确保即使是新手也能跟上节奏。文章将不包含代码示例,而是通过清晰的步骤和逻辑结构,引导读者理解自动化运维的核心概念及其在实际操作中的应用。
自动化运维:使用Ansible进行服务器配置管理
在现代IT架构中,自动化运维已成为提升效率、减少人为错误的关键。本文将介绍如何使用Ansible这一强大的自动化工具来简化和标准化服务器的配置管理过程。通过具体的代码示例和操作步骤,我们将展示如何快速部署应用、管理配置以及自动化日常任务,从而确保环境的一致性和可靠性。
|
5月前
|
自动化运维:使用Ansible进行服务器配置管理
在现代IT基础设施中,自动化运维是确保高效、稳定和安全服务的关键。本文将深入介绍如何使用Ansible这一开源工具来简化服务器配置管理工作,从基础安装到高级应用,我们将一步步展示如何通过Ansible Playbooks实现自动化部署和维护,旨在帮助读者构建更加灵活和可扩展的运维体系。
83 7
自动化运维:使用Ansible简化日常任务
在快节奏的IT世界中,时间就是一切。本文将揭示如何通过Ansible这一强大的自动化工具来节省宝贵的时间,从而提高效率和减少人为错误。我们将深入探讨Ansible的核心概念、安装过程以及如何编写简单的playbook来自动执行常见运维任务。无论你是新手还是有经验的系统管理员,这篇文章都将为你提供实用的知识和技能,让你能够更好地控制你的服务器环境。
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
docker拉取MySQL后数据库连接失败解决方案
通过以上方法,可以解决Docker中拉取MySQL镜像后数据库连接失败的常见问题。关键步骤包括确保容器正确启动、配置正确的环境变量、合理设置网络和权限,以及检查主机防火墙设置等。通过逐步排查,可以快速定位并解决连接问题,确保MySQL服务的正常使用。
151 82
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)

推荐镜像

更多