51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

解决 ansible mysql 安装 重复执行 错误的问题

问题描述: 用 ansible 安装 mysql 的时候 在db1 装mariadb 后,

后期还要在 db01 上装 redis 做会话保持,发现 db01上 mysql 倒库的时候报错,也手动的去解决过这个问题,比较麻烦: https://www.baimeidashu.com/8192.html

后来发现 ,当task失败时,ansible会停止执行失败的那台主机上的任务,但是继续对其他 主机执行 。

所以 当 db01 上前边的 Mysql 安装报错的时候, 后边的任务 配置 redis 就不会执行。 被中断了。

下边是我的解决思路:

我之前的程序是这样写的:

[root@m01 /etc/ansible/roles/mysqlserver/tasks]#cat main.yml.bac 
- name: Install MariaDb-Server
  yum:
    name: 
      - mariadb-server
      - MySQL-python
    state: present

- name: Start Mariadb Server
  systemd: 
    name: mariadb
    state: started
    enabled: yes
- name: configure login passwd
  shell:
    cmd: mysqladmin password '123456' 

- name: copy all.sql to Db01
  copy: 
      src: all.sql
      dest: /root/all.sql
- name: Import all.sql to Myariadb
  mysql_db:
      login_host: 172.16.1.51
      login_port: 3306
      login_user: root
      name: all
      state: import
      target: /root/all.sql
- name: Restart Mariadb Server
  systemd:
      name: mariadb
      state: restarted 

解决思路:

在handler中监听 ,把其他 初始化 后操作 1次 任务,全部放到 handler中

[root@m01 /etc/ansible/roles/mysqlserver/tasks]#cat main.yml
- name: Install MariaDb-Server
  yum:
    name: 
      - mariadb-server
      - MySQL-python
    state: present
  notify: mariadb group1

handler:

[root@m01 /etc/ansible/roles/mysqlserver/handlers]#cat main.yml 
- name: Start Mariadb Server
  listen: mariadb group1
  systemd: 
    name: mariadb
    state: started
    enabled: yes
- name: configure login passwd
  listen: mariadb group1
  shell:
    cmd: mysqladmin password '123456' 

- name: copy all.sql to Db01
  listen: mariadb group1
  copy: 
      src: all.sql
      dest: /root/all.sql
- name: Import all.sql to Myariadb
  listen: mariadb group1
  mysql_db:
      login_host: 172.16.1.51
      login_port: 3306
      login_user: root
      name: all
      state: import
      target: /root/all.sql
- name: Restart Mariadb Server
  listen: mariadb group1
  systemd:
      name: mariadb
      state: restarted

这样操作后, 后期配置 admin 会话保持 的时候 就不会被中断了。

赞(8)
未经允许不得转载:工具盒子 » 解决 ansible mysql 安装 重复执行 错误的问题