IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 2021-07-13 -> 正文阅读

[系统运维]2021-07-13

什么是ansible?

Ansible是一款自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

工作原理

Ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是Ansible所运行的模块,Ansible只是提供一种框架。主要包括:
(1) 连接插件connection plugins:负责和被监控端实现通信;
(2) host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3) 各种模块核心模块、command模块、自定义模块;
(4) 借助于插件完成记录日志邮件等功能;
(5) playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

Ansible 围绕无代理架构构建(由于没有代理,也不需要额外的自定义安全基础架构,)。通常而言,Ansible 通过 OpenSSH 或 WinRM 连接它所管理的主机并且运行任务,方法通常是将称为 Ansible 模块的小程序推送至这些主机。这些程序用于将系统置于需要的特定状态。在 Ansible 运行完其任务后,推送的所有模块都会被删除。

优点

  1. 部署简单:只需要在控制节点上配置ansible环境,被控制节点上只需安装ssh和Python2.6及以上版本

  2. 跨平台支持:Ansible 提供Linux、Windows、UNIX和网络设备的无代理支持,适用于物理、虚拟、云和容器环境。

  3. 人类可读的自动化:Ansible Playbook采用YAML文本文件编写,易于阅读,有助于确保所有人都能理解它们的用途。

  4. 完美描述应用:可以通过 Ansible Playbook进行每种更改,并描述和记录应用环境的每一个方面。

  5. 轻松管理版本控制:Ansible Playbook和项目是纯文本。它们可以视作源代码,放在现有版本控制系统中。

  6. 支持动态清单:可以从外部来源动态更新 Ansible 管理的计算机列表,随时获取所有受管服务器的当前正确列表,不受基础架构或位置的影响。

  7. 编排可与其他系统轻松集成:能够利用环境中现有的 HP SA、Puppet、Jenkins、红帽卫星和其他系统,并且集成到 Ansible 工作流中。

  8. 支持playbook编排任务

  9. 幂等性:一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况

  10. 可使用任何编程语言写模块

  11. YAML格式,编排任务,支持丰富的数据结构
    较强大的多层解决方案

Ansible 方式

Ansible 的设计宗旨是工具易用,自动化易写易读。所以在创建自动化时我们应追求简单化。

Ansible 自动化语言围绕简单易读的声明性文本文件来构建。正确编写的 Ansible Playbook可以清楚地记录你的工作自动化。

Ansible 是一种要求状态引擎。它通过表达你所希望系统处于何种状态来解决如何自动化IT部署的问题。Ansible 的目标是通过仅执行必要的更改,使系统处于所需的状态,Ansible区别于脚本语言

Ansible是基于模块工作的,本身是没有批量部署的能力,真正具有批量部署的是ansible所运行的模块。

Ansible架构

Ansible系统由控制节点和受控制节点两部分组成:

控制节点(即安装ansible的主机):
可以是一台或是多台,但是必须是Linux或者Unix系统,不能使Windows平台

受控制节点(即受管的主机):
在这里插入代码片可以是Linux、Unix、Windows

架构图示:
在这里插入图片描述
架构解析:

1.核心:ansible

2.核心模块(Core Modules):ansible自带的模块

3.扩展模块(Custom Modules):如果核心模块不足以完成某种功能,可以添加扩展模块

4.插件(Plugins):通过插件来实现记录日志,发送邮件或其他功能

5.剧本(Playbooks):YAML格式文件,多任务自定义在一个文件中,定义主机需要调用哪些模块来完成的功能。

6.连接插件(Connectior Plugins):ansible基于连接插件连接到每个主机上的,虽然ansible是使用ssh连接到每个主机上的,但是它还支持其他的连接方式。

7.主机群(Host Inventory):记录由Ansible管理的主机信息,包括端口、密码、ip等

##Ansible执行流程

1.读取配置

2.抓取全量机器&分组列表可从多个静态文件、文件夹、脚本中读取机器,分组及其变关联量信息。

3.使用host-pattern过滤机器列表

4.根据参数确定执行模块和配置
从modules目录动态读取,用户可以自行开发模块

5.Runner执行返回

6.输出结束

##Ansible执行状态

绿色:执行成功并且不需要做改变的操作
黄色:执行成功并且对目标主机做变更
红色:执行失败 

Ansible安装流程(以centos7为例)

直接利用自带源下载

[root@localhost ~]# yum install epel-release
[root@localhost ~]# yum -y install ansible

Loaded plugins: fastestmirror, langpacks
Existing lock /var/run/yum.pid: another copy is running as pid 11199.
Another app is currently holding the yum lock; waiting for it to exit...
  The other application is: PackageKit
    Memory : 313 M RSS (1.6 GB VSZ)
    Started: Tue Jul 13 08:24:10 2021 - 00:43 ago
    State  : Sleeping, pid: 11199

发现yum源被另一个程序锁定

利用pid直接终止该进程

[root@localhost ~]# kill -9 11199
[root@localhost ~]# yum -y install ansible

检查版本

[root@localhost ~]# ansible --versionansible 2.9.23
  config file(配置文件) = /etc/ansible/ansible.cfg
  configured module search path(已配置的模块搜索路径) = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location(Ansible python模块位置) = /usr/lib/python2.7/site-packages/ansible
  executable location(可执行文件的位置) = /usr/bin/ansible
  python version(python版本) = 2.7.5 (default, Apr 11 2018, 07:36:10) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]

##配置文件

/etc/ansible/ansible.cfg 主配置文件,配置ansible工作特性

/etc/ansible/hosts 主机清单

/etc/ansible/roles/ 存放角色的目录
[root@localhost ~]# ansible localhost -m ping
localhost | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
与主机联通性正常

显示当前主机时间

[root@localhost ~]# ansible localhost -a 'date'
localhost | CHANGED | rc=0 >>
Tue Jul 13 08:56:19 PDT 2021

匹配所有主机

[root@localhost ~]# ansible all -m ping
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit
localhost does not match 'all'
此时没有添加受管主机显示为空

去ansible主机清单配置文件添加受管主机地址

[root@localhost ~]#  vim /etc/ansible/hosts 

最下面即可

尝试ping

[root@localhost ~]# ansible 192.168.216.131 -m ping
192.168.216.131 | UNREACHABLE! => {
    "changed": false, 
    "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).", 
    "unreachable": true
}
访问被拒绝

添加-k 密匙验证

[root@localhost ~]# ansible 192.168.216.131 -m ping -k
SSH password: 
192.168.216.131 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    }, 
    "changed": false, 
    "ping": "pong"
}

成功

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 23:19:00  更:2021-07-14 23:19:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 17:48:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码