Ansible

Posted 奋斗的蜗牛灬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible相关的知识,希望对你有一定的参考价值。

目录


前言:代码管理知识点

企业中代码管理流程:

  • 程序员会把编写好的代码通过 SVN、Git (GitLab(可本地化)、GitHub(网站,服务器收费)) 工具上传到代码版本管理系统中。

  • 运维人员可以通过 SVN、Git 下载指定版本的代码,对代码封装打包构建镜像,在Docker 容器中运行。

  • Jenkins 通过一整套流水线自动进行持续的集成和构建,将镜像放到私有仓库中。

管理容器有以下几种方式:

单机编排工具:

  • Docker compose

多机编排工具:

  • Docker swarm + machine (Docker 自己的工具)
  • K8s
  • Ansible 应用级别的多机编排工具

比如通过初始化服务端服务器,再将初始化脚本传到各个服务器,再分别执行脚本。
服务器 同时/分批 对多台主机 进行自动化操作(比如 docker run 运行容器)。

一、Ansible 工具

  • Ansible是一个开源IT引擎, 可自动执行应用程序部署, 云配置, 内部服务编排和其他IT工具。
  • Ansible非常易于部署, 因为它在客户端不使用任何代理程序或自定义安全基础结构, 也不通过将模块推送到客户端。这些模块在客户端本地执行, 并将输出推回Ansible服务器。它可以使用SSH密钥轻松连接到客户端。
  • Ansible 是一个基于 Python 开发的 配置管理 和 应用部署工具,在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点,Pabbet 和 saltstack 能实现的功能,Ansible基本上都可以实现。
  • Ansible 能 批量配置、部署、管理上千台主机。比如以前需要切换到每个主机上执行的一或多个操作,使用 Ansible 只需在固定的一台 Ansible 控制节点上去完成所有主机的操作。
  • Ansible 是基于模块工作的,它只是提供了一种运行框架,它本身没有完成任务的能力,真正执行操作的是 Ansible 的模块,比如:
    • copy 模块 :用于拷贝文件到远程主机上;
    • service 模块 :用于管理服务的启动、停止、重启等。
  • Ansible 其中一个比较鲜明的特性是 Agentless,即无 Agent 的存在,它就像普通命令一样,并非 c/s 软件,也只需在某个作为控制节点的主机上安装一次 Ansible 即可,通常它基于 SSH 连接来控制远程主机,远程主机上不需要安装 Ansible 或其它额外的服务。
  • 使用者在使用时,在服务器终端输入命令 或者 playbooks(剧本),会通过预定好的规则将 playbook 拆解为 play,再组织成 ansible 可以识别的任务,调用模块和插件,根据主机清单通过 SSH 将临时文件发给远程的客户端执行并返回结果,执行结束后自动删除。
  • Ansible 的另一个比较鲜明的特性是它的 绝大多数模块都具备幂等性(idempotence)。所谓幂等性,指的是多次操作或多次执行对系统资源的影响是一致的。比如执行 systemctl stop xxx 命令来停止服务,当发现要停止的目标服务已经处于停止状态,它什么也不会做,所以多次停止的结果仍然是停止,不会改变结果,它是幂等的,而 systemctl restart xxx 是非幂等的。
  • Ansible的很多模块在执行时都会先判断目标节点是否要执行任务,所以,可以放心大胆地让ansible去执行任务,重复执行某个任务绝大多数时候不会产生任何副作用。

特点:
Ansible 是基于模块工作的
客户端不需要安装配置Ansible 服务
绝大多数模块都具备幂等性

二、Ansible 环境部署

环境准备

准备三台机器

角色服务器所需服务
管理端192.168.10.50ansible
被管理端192.168.10.60
被管理端192.168.10.70

7-0 80.10 管理端
7-1 80.11 被管理端
7-2 80.12 被管理端

修改主机名好区分

192.168.10.50
hostnamectl set-hostname centos0
192.168.10.60
hostnamectl set-hostname centos1
192.168.10.70
hostnamectl set-hostname centos2

都关闭防火墙

使用在线yum源进行安装 Ansible 服务

//管理端安装ansible
yum install -y epel-release

//先安装epel源
yum install -y ansible


ansible 目录结构

  • ls /etc/ansible/
    • ansible.cfg #ansible的配置文件,一般无需修改
    • hosts #ansible的主机清单,用于存储需要管理的远程主机的相关信息
    • roles/ #公共角色目录

配置主机清单hosts 文件:

cd /etc/ansible
vim hosts

[webservers]    #配置组名1
192.168.10.60     #组1里包含的被管理的主机IP地址或主机名
[dbservers]     #配置组名2
192.168.10.70     #组名2里包含的主机IP

注:(主机名需要先修改/etc/hosts文件)

设置SSH免密登录

//配置密钥对验证,执行ssh 加密类型为 rsa
ssh-keygen -t rsa
#一路回车

#使用免密登录
#指定客户服务器的验证密码
cd ~/.ssh/
sshpass -p '123456' ssh-copy-id root@192.168.10.60
sshpass -p '123456' ssh-copy-id root@192.168.10.70

再用 ssh root@192.168.80.12 就不用输入密码就能远程连接了。

因为 Ansiable 是基于SSH 连接到客户端,上面是为了之后免密登录。

到这基本配置好了。

以上是关于Ansible的主要内容,如果未能解决你的问题,请参考以下文章

ansible + jenkins + 邮件 ---转

Ansible------Ansible概述,搭建,用法

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

解析自动化运维工具---Ansible运行原理

Ansible——自动化运维工具的模块部署

Ansible 自动化运维工具