问题描述: 用 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 会话保持 的时候 就不会被中断了。