服务器环境:
10.211.55.7 – CentOS
10.211.55.13 – Ubuntu
mkdir -pv ./mysql/{templates,tasks,files,vars,handlers}
[root@ansible roles]# tree mysqld/
mysqld/
├── files
│ ├── mysql-community.repo
│ └── mysql-community-source.repo
├── handlers
├── mysql.yaml
├── tasks
└── vars
方法二:
[root@ansible ansible]# ansible-galaxy init ~/.ansible/roles/mysql
- Role /root/.ansible/roles/mysql was created successfully
/root/.ansible/roles/mysqcd
├── defaults
│ └── main.yml
├── files
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── README.md
├── tasks
│ └── main.yml
├── templates
├── tests
│ ├── inventory
│ └── test.yml
└── vars
└── main.yml
[root@ansible roles]# touch mysqld/{handlers,tasks,vars}/main.yaml
编写安装MySQL服务的yaml文件
vim mysqld/tasks/install.yaml
---
- name: 安装MySQL Yum源
yum:
name: https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
state: present
when:
- ansible_os_family == "ReHat"
- name: CenOS配置MySQL YUM源
copy:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
with_items:
- { src: 'mysql-community-source.repo', dest: '/etc/yum.repos.d/mysql-community-source.repo' }
- { src: 'mysql-community.repo', dest: '/etc/yum.repos.d/mysql-community.repo' }
when:
- ansible_os_family == "RedHat"
- name: Ubuntu配置MySQL Yum源
copy:
src: 'mysql-apt-config_0.7.3-1_all.deb'
dest: '/file/mysql-apt-config_0.7.3-1_all.deb'
when:
- ansible_os_family == "Debian"
- name: 安装MySQL-Server服务
yum:
name: mysql-server
state: present
when:
- ansible_os_family == "RedHat"
notify:
- Start Mysql
- name: Ubuntu 安装MySQL-Server服务
script: Ubuntu_install_mysql.sh
when:
- ansible_os_family == 'Debian'
notify:
- Start Mysql
编辑tasks/main.yaml文件
# 使用Ansible playbook 安装MySQL-Server
---
- include:
install.yaml
编写handlers目录下的main.yaml文件
---
# handlers file for /root/.ansible/roles/mysql
# 说明:因Ubuntu系统中mysql服务名为:mysql,故此处Mysql服务管理仅供CentOS调用
- name: Start Mysql
service:
name: mysqld
state: started
enabled: yes
tags: StartMysql
- name: Reload Mysql
service:
name: mysqld
state: restarted
tags: ReloadMysql
- name: Stop Mysql
service:
name: mysqld
state: stopped
tags: StopMysql
编写Ubuntu系统的MySQL5.7 安装脚本:Ubuntu_install_mysql.sh
#! /bin/bash
DEBIAN_FRONTEND=noninteractive dpkg -i /file/mysql-apt-config_0.7.3-1_all.deb
apt update
apt install libtinfo5 libmecab2 -y
apt install -y -f mysql-client=5.7.22-1debian7
apt install -y -f mysql-community-server=5.7.22-1debian7
apt install -y -f mysql-server=5.7.22-1debian
# DEBIAN_FRONTEND=noninteractive 跳过系统交互模式直接确认跳过
编辑roles/roles.yaml文件
---
- hosts: "linuxserver"
remote_user: root
roles:
- { role: mysql }
准备CentOS 及 Ubuntu 系统的MySQL的yum源文件
[root@ansible roles]# tree mysql/files/
mysql/files/
├── mysql-apt-config_0.7.3-1_all.deb -- Ubuntu
├── mysql-community.repo
└── mysql-community-source.repo
mysqld文件目录结构
[root@ansible roles]# tree mysql
mysql
├── defaults
│ └── main.yml
├── files
│ ├── mysql-apt-config_0.7.3-1_all.deb
│ ├── mysql-community.repo
│ ├── mysql-community-source.repo
│ └── Ubuntu_install_mysql.sh
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── README.md
├── tasks
│ ├── install.yaml
│ └── main.yml
├── templates
├── tests
│ ├── inventory
│ └── test.yml
└── vars
└── main.yml
8 directories, 13 files
[root@ansible roles]# ansible-playbook roles.yaml -C
PLAY [linuxserver] *****************************************************************************************************************************
TASK [Gathering Facts] *************************************************************************************************************************
ok: [10.211.55.13]
ok: [10.211.55.7]
TASK [mysql : 安装MySQL Yum源] ********************************************************************************************************************
skipping: [10.211.55.7]
skipping: [10.211.55.13]
TASK [mysql : CenOS配置MySQL YUM源] ***************************************************************************************************************
skipping: [10.211.55.13] => (item={u'dest': u'/etc/yum.repos.d/mysql-community-source.repo', u'src': u'mysql-community-source.repo'})
skipping: [10.211.55.13] => (item={u'dest': u'/etc/yum.repos.d/mysql-community.repo', u'src': u'mysql-community.repo'})
ok: [10.211.55.7] => (item={u'dest': u'/etc/yum.repos.d/mysql-community-source.repo', u'src': u'mysql-community-source.repo'})
ok: [10.211.55.7] => (item={u'dest': u'/etc/yum.repos.d/mysql-community.repo', u'src': u'mysql-community.repo'})
TASK [mysql : Ubuntu配置MySQL Yum源] **************************************************************************************************************
skipping: [10.211.55.7]
ok: [10.211.55.13]
TASK [mysql : 安装MySQL-Server服务] ****************************************************************************************************************
skipping: [10.211.55.13]
ok: [10.211.55.7]
TASK [mysql : Ubuntu 安装MySQL-Server服务] *********************************************************************************************************
skipping: [10.211.55.7]
changed: [10.211.55.13]
RUNNING HANDLER [mysql : Start Mysql] **********************************************************************************************************
changed: [10.211.55.13]
PLAY RECAP *************************************************************************************************************************************
10.211.55.13 : ok=4 changed=2 unreachable=0 failed=0 skipped=3 rescued=0 ignored=0
10.211.55.7 : ok=3 changed=0 unreachable=0 failed=0 skipped=3 rescued=0 ignored=0
ansible-playbook roles/roles.yaml
[root@ansible roles]# ansible-playbook roles.yaml
PLAY [linuxserver] *****************************************************************************************************************************
TASK [Gathering Facts] *************************************************************************************************************************
ok: [10.211.55.13]
ok: [10.211.55.7]
TASK [mysql : 安装MySQL Yum源] ********************************************************************************************************************
skipping: [10.211.55.7]
skipping: [10.211.55.13]
TASK [mysql : CenOS配置MySQL YUM源] ***************************************************************************************************************
skipping: [10.211.55.13] => (item={u'dest': u'/etc/yum.repos.d/mysql-community-source.repo', u'src': u'mysql-community-source.repo'})
skipping: [10.211.55.13] => (item={u'dest': u'/etc/yum.repos.d/mysql-community.repo', u'src': u'mysql-community.repo'})
ok: [10.211.55.7] => (item={u'dest': u'/etc/yum.repos.d/mysql-community-source.repo', u'src': u'mysql-community-source.repo'})
ok: [10.211.55.7] => (item={u'dest': u'/etc/yum.repos.d/mysql-community.repo', u'src': u'mysql-community.repo'})
TASK [mysql : Ubuntu配置MySQL Yum源] **************************************************************************************************************
skipping: [10.211.55.7]
ok: [10.211.55.13]
TASK [mysql : 安装MySQL-Server服务] ****************************************************************************************************************
skipping: [10.211.55.13]
ok: [10.211.55.7]
TASK [mysql : Ubuntu 安装MySQL-Server服务] *********************************************************************************************************
skipping: [10.211.55.7]
changed: [10.211.55.13]
RUNNING HANDLER [mysql : Start Mysql] **********************************************************************************************************
fatal: [10.211.55.13]: FAILED! => {"changed": false, "msg": "Unsupported parameters for (systemd) module: enable Supported parameters include: daemon_reexec, daemon_reload, enabled, force, masked, name, no_block, scope, state, user"}
PLAY RECAP *************************************************************************************************************************************
10.211.55.13 : ok=3 changed=1 unreachable=0 failed=1 skipped=3 rescued=0 ignored=0
10.211.55.7 : ok=3 changed=0 unreachable=0 failed=0 skipped=3 rescued=0 ignored=0
[root@ansible roles]# ansible-playbook roles.yaml
PLAY [linuxserver] *****************************************************************************************************************************
TASK [Gathering Facts] *************************************************************************************************************************
ok: [10.211.55.13]
ok: [10.211.55.7]
TASK [mysql : 安装MySQL Yum源] ********************************************************************************************************************
skipping: [10.211.55.7]
skipping: [10.211.55.13]
TASK [mysql : CenOS配置MySQL YUM源] ***************************************************************************************************************
skipping: [10.211.55.13] => (item={u'dest': u'/etc/yum.repos.d/mysql-community-source.repo', u'src': u'mysql-community-source.repo'})
skipping: [10.211.55.13] => (item={u'dest': u'/etc/yum.repos.d/mysql-community.repo', u'src': u'mysql-community.repo'})
ok: [10.211.55.7] => (item={u'dest': u'/etc/yum.repos.d/mysql-community-source.repo', u'src': u'mysql-community-source.repo'})
ok: [10.211.55.7] => (item={u'dest': u'/etc/yum.repos.d/mysql-community.repo', u'src': u'mysql-community.repo'})
TASK [mysql : Ubuntu配置MySQL Yum源] **************************************************************************************************************
skipping: [10.211.55.7]
ok: [10.211.55.13]
TASK [mysql : 安装MySQL-Server服务] ****************************************************************************************************************
skipping: [10.211.55.13]
ok: [10.211.55.7]
TASK [mysql : Ubuntu 安装MySQL-Server服务] *********************************************************************************************************
skipping: [10.211.55.7]
changed: [10.211.55.13]
RUNNING HANDLER [mysql : Start Mysql] **********************************************************************************************************
fatal: [10.211.55.13]: FAILED! => {"changed": false, "msg": "Could not find the requested service mysqld: host"}
# Ubuntu 系统中Mysql服务名为:mysql
PLAY RECAP *************************************************************************************************************************************
10.211.55.13 : ok=3 changed=1 unreachable=0 failed=1 skipped=3 rescued=0 ignored=0
10.211.55.7 : ok=3 changed=0 unreachable=0 failed=0 skipped=3 rescued=0 ignored=0