厉害了!我的哥!不懂自动化运维ansible你就out啦!

Posted Friends of the wind

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了厉害了!我的哥!不懂自动化运维ansible你就out啦!相关的知识,希望对你有一定的参考价值。

在这里插入图片描述

理论讲解

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)验证安装
在这里插入图片描述
3) 创建SSH免交互登录

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

验证免密登录:
在这里插入图片描述

Ansible案例一:

在这里插入图片描述

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

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

在这里插入图片描述

  1. 安装Apache并启动服务
    安装命令:
    在这里插入图片描述
    在这里插入图片描述
    启动:
    在这里插入图片描述
    在这里插入图片描述

  2. 查看Apache的状态
    在这里插入图片描述

  3. 更改主机192.168.8.20的主机名为shuai
    在这里插入图片描述

  4. 查看所有节点服务器是否能ping通
    在这里插入图片描述

  5. 创建zhangsan用户,密码123456(其他选项可根据需要添加)
    在这里插入图片描述
    总结,有三种颜色:红、黄、绿,分别代表:异常;执行命令正常,对目标主机状态有改变;执行命令正常,对目标主机状态无改变
    因为,目标主机没有/aaa目录,所以返回异常提示信息failed(失败),异常颜色
    在这里插入图片描述

Ansible案例二:

在这里插入图片描述
要求:

(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文件,并检查语法,内容如下:

注意:“-”代表项;通过冒号“:”分隔键和值;文件整体以“—”开始“…”结尾;所有“-”和“:”后面均空格,而且缩进必须对齐。
在这里插入图片描述
在这里插入图片描述
无错误输出,证明语法正确。

预测试:以下是测试成功提示
[root@localhost yum.repos.d]# ansible-playbook -C /etc/ansible/httpd.yml
在这里插入图片描述
执行:
在这里插入图片描述
验证:远程登录web服务器,查看端口已被改为8080
在这里插入图片描述
二、通过角色为192.168.8.139主机安装mariadb

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

(2) 配置数据库角色

 创建角色目录
在这里插入图片描述
 进入mariadb角色文件夹的tasks
cd /etc/ansible/roles/mariadb/tasks
vim main.yml
在这里插入图片描述
 进入mariadb角色文件夹的handlers
cd /etc/ansible/roles/mariadb/handlers
vim main.yml
在这里插入图片描述
 进入mariadb角色文件夹的files,确保其下有my.cnf配置文件(ansible本地安装完mariadb,复制my.cnf到此目录)

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

 进入/etc/ansible目录创建.yml配置文件
在这里插入图片描述
预测试:以下是测试成功提示
在这里插入图片描述
(3) 执行配置文件
[root@localhost ansible]# ansible-playbook /etc/ansible/mariadb.yml
在这里插入图片描述

(4) 在管理端上验证,使用test数据库用户能否登录mariadb,数据库是否存在
在这里插入图片描述
在这里插入图片描述

报错解决:

1)Ansible安装httpd提示如下:
在这里插入图片描述
不能打开,yum 仓库文件,经查,发现被管理端没有挂载光盘。

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

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

3)使用playbook更改web服务器的默认端口为8080,报错
在这里插入图片描述
翻译:192 . 168 . 8 . 136
“已更改”:否,
“消息”:“无法通过ssh连接到主机:代理承认使用密钥签名失败。\\ r \\拒绝授权(publickey,gssapi-keyex,gssapi-with-mic,password)。\\r\\n ",
“不可达”:真的

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

以上是关于厉害了!我的哥!不懂自动化运维ansible你就out啦!的主要内容,如果未能解决你的问题,请参考以下文章

mysql查询怎样智能分割字符串?

厉害了我的哥,美国LA站群全新ip让收录更靠前

自动化运维利器 Ansible 和企业级 Ansible 应用解读

自动化运维工具——ansible详解

自动化运维工具Ansible-基础介绍

ansible自动化运维工具使用详解