本文共 3658 字,大约阅读时间需要 12 分钟。
基于ansible一键部署mysql的角色,自动安装mysql-python 方便后期使用mysql相关模块便于操作,并且设置默认root账号登录密码
被控节点:Centos7
控制节点:Ansible2.9 (控制节点其他版本的Ansible没有测试过) mysql 版本:mysql57-community-release-el7-9cd /etc/ansible/roles
如果在ansible.cfg中更改了默认的角色目录,根据你自己角色目录进行更改
ansible-galaxy init mysql_install
tar zxvf mysql_install.tar.gz
vim /etc/ansible/hosts
ansible_ssh_host 填写被控主机地址
ansible_ssh_user 填写被控主机用户 ansible_ssh_pass 填写被控主机登录密码[CentOS]host_A ansible_ssh_host= [CentOS:vars]ansible_ssh_user= ansible_ssh_pass= ansible_ssh_port= 22
---- hosts: CentOS remote_user: root roles: - mysql_install vars: #一键部署,设置登录root密码 mysql_passwd: "123456"
defaults
└─main.yml files ├─change_root_passwd.sh └─mysql57-community-release-el7-9.noarch.rpm handlers meta tasks ├─change_root_password.yml ├─install.yml ├─main.yml └─mysql-py_install.yml templates tests └─test.yml vars主任务
main.yml
---# tasks file for mysql_install#剧本执行顺序- include: install.yml- include: mysql-py_install.yml- include: change_root_password.yml
安装任务
install.yml
--- #创建临时文件夹任务 - name: create directory file: path: "{ {mysql_temp_path}}" state: directory #复制rpm安装包任务 - name: copy rpm package copy: src: "{ {rpm_package_name}}" dest: "{ {mysql_temp_path}}" #安装本地rpm安装包 - name: install rpm yum: name: "{ {rpm_package_location}}" state: present #安装mysql-server - name: install mysql server yum: name: mysql-server state: present #启动mysql - name: start mysql service: name: mysqld state: started
远程主机安装mysql-python模块任务
mysql-oy_install.yml
--- #安装epel扩展源任务 - name: install Extended source yum: name: epel-release state: present #安装依赖包 - name: install mysql-python dependency packages yum: name: "{ {dependency_packages}}" state: present #安装mysql模块 - name: install mysql-python module pip: name: mysql-python
更改root密码任务
change_root_password.yml
--- #找到安装完成之后的临时密码任务 - name: find temp passwd shell: "{ {find_temp_passwd_code}}" register: results tags: passwd #复制脚本文件任务 - name: copy script file copy: src: change_root_passwd.sh dest: "{ {change_passwd_sh}}" tags: passwd #为什么不直接使用script模块: # 脚本中有变量,如果使用script模块,参数不可以在ansible服务器上传入脚本 #所以使用copy模块复制脚本到远程主机之后,使用lineinfile模块替换掉脚本中的 #变量。 #用临时密码的变量替换脚本中的临时密码变量任务 - name: send temp root password to shell file lineinfile: path: "{ {change_passwd_sh}}" regexp: '^PASSWORD=' line: "PASSWORD={ {temp_password}}" tags: passwd #用主任务定义的新密码的变量替换脚本中的新密码变量任务 - name: send new root password to shell file lineinfile: path: "{ {change_passwd_sh}}" regexp: '^New_Pass=' line: "New_Pass={ {new_pass}}" tags: passwd #跑脚本任务 - name: change root password shell: "sh { {change_passwd_sh}}" tags: passwd
---# defaults file for mysql_install#剧本变量#mysql临时文件夹mysql_temp_path: "/etc/tmp/mysql"#rpm包名称rpm_package_name: "mysql57-community-release-el7-9.noarch.rpm"#rpm包位置rpm_package_location: "{ {mysql_temp_path}}/{ {rpm_package_name}}"#找到临时文件的命令find_temp_passwd_code: "grep 'temporary password' /var/log/mysqld.log"#更换root密码脚本change_passwd_sh: "{ {mysql_temp_path}}/change_root_passwd.sh"#临时密码,取值为找到临时文件命令输出切片temp_password: "{ {results.stdout[-12:]}}"#新密码,在主任务do.yml中定义new_pass: "{ {mysql_passwd}}"#依赖包dependency_packages: - mysql - mysql-devel - python-devel - python-pip
更改密码脚本
change_root_passwd.sh
#!/bin/bashHost=127.0.0.1User=rootPASSWORD=PORT=3306New_Pass=mysql -u$User -p$PASSWORD --connect-expired-password <
转载地址:http://yqugn.baihongyu.com/