首页 > 数据库 >ansible 部署mysql 5.7

ansible 部署mysql 5.7

时间:2023-04-03 18:58:18浏览次数:39  
标签:tasks name 5.7 apps ansible mysql data yml

准备工作

创建roles目录

# mkdir -pv  /data/apps/ansible/roles/mysql-5.7/{files,tasks,handlers,templates,vars}

hosts

[ubuntu]
172.16.18.31 ansible_ssh_port=22  ansible_ssh_user=ubuntu hostname=app-01

测试连通性

# ansible ubuntu -m ping
172.16.18.247 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    }, 
    "changed": false, 
    "ping": "pong"
}

创建角色相关文件

tasks/main.yml

- include: user.yml
- include: install_deps.yml
- include: config.yml
- include: unarchive.yml
- include: init.yml
- include: service.yml
- include: secure.yml

tasks/user.yml

- name: create mysql group
  group: 
    name: mysql
    state: present
    gid: 227
- name: create mysql user
  user: 
    name: mysql  
    group: mysql 
    shell: /bin/false 
    system: yes
    comment: Mysql Server
    uid: 227
    home: /data/apps/mysql

tasks/install_deps.yml

- name: upgrade os software
  apt: upgrade=yes update_cache=yes cache_valid_time=3600
- name: install packages for ubuntu22.04
  apt:
    name: libncurses-dev,libncurses5,expect

tasks/config.yml

- name: mkdir conf
  file: 
    path: /data/apps/mysql/{{ item }} 
    state: directory 
    owner: mysql 
    group: mysql
  with_items:
    - data
    - logs
    - tmp

- name: my.cnf
  template: 
    src: my.cnf.j2  
    dest: /data/apps/mysql/my.cnf
    owner: mysql
    group: mysql 

tasks/unarchive.yml

- name: copy tar to remote host and file mode
  unarchive: 
    src: mysql-5.7.40-linux-glibc2.12-x86_64.tar.gz 
    dest: /usr/local/ 
    owner: mysql 
    group: mysql
- name: mkdir /usr/local/mysql
  file: 
    src: mysql-5.7.40-linux-glibc2.12-x86_64 
    dest: /usr/local/mysql 
    state: link

tasks/init.yml

- name: init mysql
  shell: /usr/local/mysql/bin/mysqld --defaults-file=/data/apps/mysql/my.cnf   --user=mysql  --datadir=/data/apps/mysql/data  --initialize

tasks/service.yml

- name: service script
  copy: 
    src: mysqld.service  
    dest: /lib/systemd/system/mysqld.service
- name: start service
  service: 
    name: mysqld 
    state: started 
    enabled: yes

tasks/secure.yml

- name: link mysql.socke
  file: src=/data/apps/mysql/mysql.sock dest=/tmp/mysql.sock state=link
- name: secure script
  script: secure_mysql.sh

files/secure_mysql.sh

#!/bin/bash

init_passwd=`grep "temporary password is generated for root@localhost" /data/apps/mysql/logs/error.log | awk  '{print $NF}'`

SQL_SECURE () {
/usr/bin/expect<<EOF
set time 5
spawn /usr/local/mysql/bin/mysql_secure_installation -S /data/apps/mysql/mysql.sock
expect {
"Enter password for user root: " { send "${init_passwd}\r"; exp_continue }
"New password:" { send "12345678\r"; exp_continue }
"Re-enter new password" { send "12345678\r"; exp_continue }
"Press y|Y for Yes, any other key for No)" { send "n\r"; exp_continue }
"Remove anonymous users" { send "y\r"; exp_continue }
"Disallow root login remotely" { send "y\r"; exp_continue }
"Remove test database and access to it" { send "y\r"; exp_continue }
"Reload privilege tables now" { send "y\r"; exp_continue }
}
EOF
}
SQL_SECURE

templates/my.cnf.j2

server-id={{ server_id }}

查看相关文件

# tree /data/apps/ansible/roles/mysql-5.7/
/data/apps/ansible/roles/mysql-5.7/
├── files
│   ├── mysql-5.7.40-linux-glibc2.12-x86_64.tar.gz
│   ├── mysqld.service
│   └── secure_mysql.sh
├── handlers
├── tasks
│   ├── config.yml
│   ├── init.yml
│   ├── install_deps.yml
│   ├── main.yml
│   ├── secure.yml
│   ├── service.yml
│   ├── unarchive.yml
│   └── user.yml
├── templates
│   └── my.cnf.j2
└── vars

5 directories, 12 files

playbook调用角色

mysql_roles.yml

- hosts: ubuntu
  remote_user: ubuntu
  become: yes
  roles:
   - role: mysql-5.7
     server_id: 100

运行playbook

# ansible-playbook mysql_roles.yml

标签:tasks,name,5.7,apps,ansible,mysql,data,yml
From: https://www.cnblogs.com/wangguishe/p/17283477.html

相关文章

  • MySQL 关闭 binlog 日志
    【关闭binlog日志】1、vim/etc/my.cnf注释如下内容:#log-bin=mysql-bin#binlog_format=mixed#server-id=1#expire_logs_days=102、重启mysql服务/etc/init.d/mysqlrestart......
  • MySQL实现over partition by(分组后对组内数据排序)
     开发中遇到了这样一个需求:统计商品库存,产品ID+子产品名称都相同时,可以确定是同一款商品。当商品来自不同的渠道时,我们要统计每个渠道中最大的那一个。如果在Oracle中可以通过分析函数OVER(PARTITIONBY…ORDERBY…)来实现。在MySQL中应该怎么来实现呢。现在通过两种......
  • YUM安装MySQL 8.0
     安装官方yumrpm-ivhhttps://repo.mysql.com//mysql57-community-release-el7-9.noarch.rpm 调试yum关闭旧版本yum-config-manager--disablemysql57-community开启新版本yum-config-manager--enablemysql80-community安装mysql8.0yuminstallmysql-co......
  • 阿里云RDS与ECS自建mysql数据库主从同步(GTID方式)
      1、GTID的概念全局事务标识:globaltransactionidentifiers;GTID是一个事务一一对应,并且全局唯一ID;一个GTID在一个服务器上只执行一次,避免重复执行导致数据混乱或者主从不一致;GTID用来代替传统复制方法,不再使用MASTER_LOG_FILE+MASTER_LOG_POS开启复制。而是使用MASTER_AUT......
  • MySQL使用DROP TABLE命令删除表怎么恢复?
    前言今天同事勿删除了一个测试环境表,因为刚好在跑重要的数据,重新跑又比较麻烦,所以尝试看能不能通过恢复数据的方式进行数据恢复,如果你也是重要数据一定要切记“不要慌,慌也没用”。百度过一些例子,哪些例子比较适合表刚刚创建后被删除,就能完全恢复,本篇文章适合那种创建很长时间,表......
  • 本地Navicat 连接阿里云esc上mysql
     登陆esc服务器上的mysql选择mysql  查看user表中的两个关键参数selectuser,hostfromuser; localhost代表本地访问。这个字段host代表访问ip限制updateusersethost="%"whereuser="root";systemctlrestartmysqld重启mysql。使权限生效......
  • mysql解锁
    概述有时候会遇到数据库死锁问题,报错锁等待超时:Lockwaittimeoutexceeded解决查看锁情况查询锁--mysql8.0--查看当前锁select*fromperformance_schema.data_locks;--锁关系select*fromperformance_schema.data_lock_waits;--mysql6select*frominforma......
  • 安装mysql.so
     1、----  cd/usr/local/src/php-5.5.34/ext/mysql/2、---- /usr/local/php5/bin/phpize3、----./configure--with-php-config=/usr/local/php5/bin/php-config--with-mysql=/usr/local/mysql4、----make&&makeinstall会生成如下内容:Installingsharedexten......
  • linux使用php动态安装模块mysqli.so(ext/mysqlnd/mysqlnd.h: 没有那个文件或目录)
     由于我先安装的php,再安装的mysql!正常过程: 1、安装mysql 2、安装phpconfigure时带–with-mysql参数现在我不想重装,因此使用phpize动态安装mysqli,php版本为php-7.2.13 1先查看php下phpize路径  得知路劲为/usr/local/php/bin/phpize2切换到php源码包目录php-7......
  • 如何在PHP7中扩展mysql,先安装php7.2。后安装mysql
     相对与PHP5,PHP7的最大变化之一是移除了mysql扩展,推荐使用mysqli或者pdo_mysql,实际上在PHP5.5开始,PHP就着手开始准备弃用mysql扩展,如果你使用mysql扩展,可能看到过这样的提示”Deprecated:mysql_connect():Themysqlextensionisdeprecatedandwillberemovedinthefu......