博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ansible 角色:安装mysql(简易版)
阅读量:3926 次
发布时间:2019-05-23

本文共 3658 字,大约阅读时间需要 12 分钟。

Ansible 角色:安装mysql(简易版)

基于ansible一键部署mysql的角色,自动安装mysql-python 方便后期使用mysql相关模块便于操作,并且设置默认root账号登录密码


一、版本要求

被控节点:Centos7

控制节点:Ansible2.9
(控制节点其他版本的Ansible没有测试过)
mysql 版本:mysql57-community-release-el7-9


二、如何使用

1、进入ansible默认角色目录

cd /etc/ansible/roles

如果在ansible.cfg中更改了默认的角色目录,根据你自己角色目录进行更改


2、创建一个角色

ansible-galaxy init mysql_install

3、下载


4、解压

tar zxvf mysql_install.tar.gz

5、主机清单

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


2、任务

主任务

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

3、变量

---# 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

4、脚本

更改密码脚本

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/

你可能感兴趣的文章
组织级项目管理与大型项目管理
查看>>
战略管理概述
查看>>
业务流程管理和重组
查看>>
知识管理
查看>>
项目整体绩效评估
查看>>
信息安全系统和安全体系
查看>>
信息系统安全风险识别与评估
查看>>
安全策略
查看>>
信息安全技术基础
查看>>
PKI公开密钥基础设施
查看>>
PMI权限(授权)管理基础设施
查看>>
信息安全审计系统S-Audit
查看>>
技术解读第一章
查看>>
信息安全系统的组织管理
查看>>
信息安全系统
查看>>
技术解读第二章
查看>>
技术解读第三章
查看>>
Linux磁盘分区基础
查看>>
系统无处不在
查看>>
一般系统论的含义
查看>>