首页 > 数据库 >厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql

厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql

时间:2022-11-17 11:31:56浏览次数:42  
标签:web Ansible 运维 主机 etc ansible yum mysql mariadb


厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_ansible

理论讲解

step 1

为什么用它?提高效率。ansible可为多台服务器进行管理,自动部署服务,专为Unix系统开发的自由开源的配置和自动化工具。

step 2

温馨提示:优点太多,就不一 一介绍完啦!

1、 部署简单 基于Python开发,进行二次开发相对较易,类似于saltstack和Puppet,但无需安装客户端程序。

2、 管理模式简单、功能强、高扩展性 使用SSH和节点通信。无需客户端,轻量级,更强的远程命令执行操作。


工具集

ansible是基于模块工作,本身没有批量部署的能力。批量部署的是ansible所运行的模块,或第三方程序通过API接口调用,ansible提供一种框架。主要包括:

(1)、plugins:连接插件,模块功能补充,负责和被监控端实现通信;
(2)、host inventory:指定管理的主机;
(3)、modules:执行命令的模块,核心模块、自定义模块;
(4)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务
(5)、API:供第三方程序通过API接口调用(进行二次开发,扩展新功能)

ansible的工作机制

Ansible 在管理端将 Ansible 模块通过 SSH 协议送到被管理端执行。

ansible的命令参数

anisble命令语法: ansible [-i 主机文件] [-f 批次] [组名] [-m 模块名称] [-a 模块参数]

参数 功能
-v: 详细模式,如果执行成功,输出详细结果
-i :指定host文件路径,默认在/etc/ansible/hosts
-f:-forks=NUM NUM默认是整数5,指定fork开启同步进程的个数
-m: 指定使用的module名称,默认command模块
-a: 指定模块的参数
-k: 提示输入SSH密码,而不是使用基于ssh密钥认证
-sudo: 指定使用sudo获取root权限
-K: 提示输入sudo密码
-u: 指定移动端的执行用户
-C: 测试命令执行会改变什么内容,不会真正的去执行


Ansible安装

安装

1)通过yum安装Ansible

创建yum仓库文件(可以手动编辑,我习惯脚本的方式编辑)

cat >inventory.repo    <<E
[inventory]
name=inventory
baseurl=file:///mnt
gpgcheck=0
E
挂载ansible镜像
执行安装:yum -y install ansible

2)验证安装

厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_云计算_02


3) 创建SSH免交互登录

创建密钥对
ssh-keygen -t rsa
上传公钥到服务端
ssh-copy-id 192.168.8.20
ssh-copy-id 192.168.8.30

验证免密登录:

厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_ansible_03

Ansible案例一:

厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_服务器_04

要求:使用 Ansible对两台节点服务器完成以下任务:

  1. Ansible本地服务器创建YUM仓库文件,使用Ansible命令复制仓库文件到节点服务器
    先在ansible文件创建主机组
    vim /etc/ansible/hosts
    编辑-行尾添加如下内容:

厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_云计算_05

  1. 安装Apache并启动服务
    安装命令:
  2. 厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_ansible_06


  3. 厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_ansible_07

  4. 启动:
  5. 厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_服务器_08


  6. 厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_ansible_09

  7. 查看Apache的状态
  8. 厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_linux_10

  9. 更改主机192.168.8.20的主机名为shuai
  10. 厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_运维_11

  11. 查看所有节点服务器是否能ping通
  12. 厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_云计算_12

  13. 创建zhangsan用户,密码123456(其他选项可根据需要添加)
  14. 厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_服务器_13

  15. 总结,有三种颜色:红、黄、绿,分别代表:异常;执行命令正常,对目标主机状态有改变;执行命令正常,对目标主机状态无改变
    因为,目标主机没有/aaa目录,所以返回异常提示信息failed(失败),异常颜色
  16. 厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_运维_14

Ansible案例二:

厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_云计算_15


要求:

(1)使用playbook更改web服务器的默认端口为8080
(2)通过角色为192.168.8.139主机安装mariadb

推荐步骤:

一、使用playbook更改web服务器的默认端口为8080。

1)用yum模块安装httpd服务(被管理主机必须挂载系统镜像,有yum仓库)

如果管理特定主机,参数输入特定主机ip地址。

[root@localhost yum.repos.d]# ansible 192.168.8.136 -m yum -a “name=httpd state=present”

2)编辑ansible的playbook文件,并检查语法,内容如下:

注意:“-”代表项;通过冒号“:”分隔键和值;文件整体以“—”开始“…”结尾;所有“-”和“:”后面均空格,而且缩进必须对齐。

厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_服务器_16


厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_ansible_17


无错误输出,证明语法正确。预测试:以下是测试成功提示

[root@localhost yum.repos.d]# ansible-playbook -C /etc/ansible/httpd.yml

厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_运维_18


执行:

厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_云计算_19


验证:远程登录web服务器,查看端口已被改为8080

厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_linux_20


二、通过角色为192.168.8.139主机安装mariadb

(1) 被管理主机配置yum源(方法同上,略)

(2) 配置数据库角色

 创建角色目录

厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_服务器_21


 进入mariadb角色文件夹的tasks

cd /etc/ansible/roles/mariadb/tasks

vim main.yml

厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_ansible_22


 进入mariadb角色文件夹的handlers

cd /etc/ansible/roles/mariadb/handlers

vim main.yml

厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_ansible_23


 进入mariadb角色文件夹的files,确保其下有my.cnf配置文件(ansible本地安装完mariadb,复制my.cnf到此目录)

#cp /etc/my.cnf /etc/ansible/roles/mariadb/files

 进入/etc/ansible目录创建.yml配置文件

厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_服务器_24


预测试:以下是测试成功提示

厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_运维_25


(3) 执行配置文件

[root@localhost ansible]# ansible-playbook /etc/ansible/mariadb.yml

厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_云计算_26

(4) 在管理端上验证,使用test数据库用户能否登录mariadb,数据库是否存在

厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_linux_27


厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_运维_28

报错解决:

1)Ansible安装httpd提示如下:

厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_运维_29


不能打开,yum 仓库文件,经查,发现被管理端没有挂载光盘。

解决方案:挂载光盘,清理缓存,重试

2)使用playbook更改web服务器的默认端口为8080。语法检查报错

厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_linux_30


解决方案:“-”代表项;通过冒号“:”分隔键和值;文件整体以“—”开始“…”结尾;所有“-”和“:”后面均空格,而且缩进必须对齐。发现handlers的左边空格没对齐3)使用playbook更改web服务器的默认端口为8080,报错

厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql_服务器_31


翻译:192 . 168 . 8 . 136

“已更改”:否,

“消息”:“无法通过ssh连接到主机:代理承认使用密钥签名失败。\ r \拒绝授权(publickey,gssapi-keyex,gssapi-with-mic,password)。\r\n ",

“不可达”:真的

解决方案:先查看ssh是否可以远程登录被管理端,发现没有问题,也未检查出其他相关问题,重试一次,成功!是不是很奇怪,确实出现了这种问题,重试就解决。


标签:web,Ansible,运维,主机,etc,ansible,yum,mysql,mariadb
From: https://blog.51cto.com/u_15815722/5860498

相关文章