Ansible的介绍与安装

文章目录

  • Ansible的介绍与安装
    • 一、什么是ansible
    • 二、ansible优点
    • 三、ansible管理方式
    • 四、ansible系统架构
    • 五、ansible任务执行模式
    • 六、ansible工作流程
    • 七、Ansible的部署

一、什么是ansible


Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
Ansible是一款开源自动化平台,它是一种简单的自动化语言,能够在ansible playbook中完美地描述IT应用基础架构。它也是一个自动化引擎,可运行ansible playbook。
Ansible功能很强大,可以利用ansible部署应用,也可将它用于配置管理、工作流自动化和网络自动化。Ansible可以用于编排整个应用生命周期。
Ansible围绕无代理架构构建。通常而言,ansible通过OpenSSH或WinRM连接它所管理的主机并且运行任务,方法通常是(但不总是)将称为ansible模块的小程序推送至这些主机。这些程序用于将系统置于需要的特定状态。在ansible运行完其任务后,推送的所有模块都会被删除。
Ansible是基于 paramiko 开发的,并且基于模块化工作,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。ansible目前已经已经被红帽官方收购

二、ansible优点


1、跨平台支持:ansible提供Linux、windows、unix和网络设备的无代理支持,适用于物理、虚拟、云和容器环境。
2、人类可读的自动化:ansible playbook采用YAML文本文件编写,易于阅读,有助于确保所有人都能理解它们的用途。
3、完美描述应用:可以通过ansible playbook进行每一种更改,并描述和记录应用环境的每一个方面。
4、轻松管理版本控制:ansible playbook和项目是纯文本,它们可以视作源代码,放在您的现有版本控制系统中。
5、支持动态清单:可以从外部来源动态更新ansible管理的计算机的列表,随时获取所有受管服务器的当前正确列表,不受基础架构或位置的影响。
6、编排可与其他系统轻松集成:能够利用环境中现有的HP SA、Puppet、Jenkins、红帽卫星和其他系统,并且集成到您的ansible工作中。

三、ansible管理方式


Ansible是一个模型驱动的配置管理器,支持多节点发布、远程任务执行。默认使用SSH进行远程连接。无需在被管节点上安装附加软件,可使用各种编程语言进行扩展。Ansible管理系统由控制主机和一组被管节点组成。控制主机直接通过SSH控制被管节点,被管节点通过 Ansible的资源清单 (inventory)来进行分组管理。

四、ansible系统架构


在控制主机时,ansible是如何知道哪些主机是被自己控制的呢?
这就需要一个Host Inventory(主机清单),用于记录ansible可以控制网络中的哪些主机。另外,要配置和管理这些主机,可以采用两种方式,一种是单一的命令实现,另外一种也可以使用palybook实现。单一的命令模式是采用不同的模块进行管理,一个模块类似于一些管理的命令,如top,ls,ping等等,适用于临时性的操作任务。如果需要执行一些例行性或经常性的操作,则需要采用playbook的方式,playbook类似于一个脚本,将多个模块按一定的逻辑关系进行组合,然后执行。ansible还支持一些插件,如邮件、日志等,在和远程主机通信时,也会采用类似的连接插件,这里使用则是SSH协议的插件进行通信。
核心: ansible
Core Modules: ansible自带的模块
Custom Modules: 核心模块功能不足时,用户可以添加扩展模块
Plugins: 通过插件来实现记录日志,发送邮件或其他功能
Playbooks: 剧本,YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能
Connection Plugins: ansible基于连接插件连接到各个主机上,默认是使用ssh
Host Inventory: 记录由Ansible管理的主机信息,包括端口、密码、ip等

五、ansible任务执行模式


Ansible系统由控制主机对被管节点的操作方式可分为两类,即ad-hoc和playbook:
ad-hoc模式(点对点模式)
使用单个模块,支持批量执行单条命令。ad-hoc 命令是一种可以快速输入的命令,而且不需要保存起来的命令。就相当于bash中的一句话shell。
playbook模式(剧本模式)
是Ansible主要管理方式,也是Ansible功能强大的关键所在。playbook通过多个task集合完成一类功能,如Web服务的安装部署、数据库服务器的批量备份等。可以简单地把playbook理解为通过组合多条ad-hoc操作的配置文件。

六、ansible工作流程


七、Ansible的部署


主机 IP 节点
ansible.example.com 192.168.89.40 ansible
node1.example.com 192.168.89.10 node1
node2.example.com 192.168.89.20 node2
node3.example.com 192.168.89.150 node3
//在ansible上安装yum源
[root@ansible ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100  2495  100  2495    0     0  14763      0 --:--:-- --:--:-- --:--:-- 14763
[root@ansible ~]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
[root@ansible ~]# dnf -y install centos-release-ansible-29-1-2.el8.noarch//安装ansible
[root@ansible ~]# dnf -y install ansible//查看ansible版本
[root@ansible ~]# ansible --version
ansible 2.9.27config file = /etc/ansible/ansible.cfgconfigured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']ansible python module location = /usr/lib/python3.6/site-packages/ansibleexecutable location = /usr/bin/ansiblepython version = 3.6.8 (default, Jan 19 2022, 23:28:49) [GCC 8.5.0 20210514 (Red Hat 8.5.0-7)]
[root@ansible ~]#//在ansible上配置/etc/hosts
[root@ansible ~]# vim /etc/hosts
192.168.89.40 ansible.example.com  ansible
192.168.89.10 node1.example.com  node1
192.168.89.20 node2.example.com  node2
192.168.89.150 node3.example.com  node3//将hosts文件复制给其他受管节点
[root@ansible ~]# scp /etc/hosts root@192.168.89.10:/etc/hosts
[root@ansible ~]# scp /etc/hosts root@192.168.89.20:/etc/hosts
[root@ansible ~]# scp /etc/hosts root@192.168.89.150:/etc/hosts//配置ssh的基于密钥认证
[root@ansible ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):        //回车即可
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:BvezBrPFaam1tCZ4qvQyGulVjP0R3NM5j+JJn7ZlR6U root@ansible.example.com
The key's randomart image is:
+---[RSA 3072]----+
|                 |
|       . . . .   |
|      . + o +   .|
|     + o + + + ..|
|    . + S & . E .|
|   . . + & O . . |
|  o o . * O + o .|
| . +o. o + . + . |
|  o..+o     .    |
+----[SHA256]-----+
[root@ansible ~]#
[root@ansible ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node1
[root@ansible ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node2
[root@ansible ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node3//在ansible主机和所有受控主机中创建student用户,并设置密码为123
[root@ansible ~]# useradd student
[root@ansible ~]# echo 123 |passwd --stdin student
Changing password for user student.
passwd: all authentication tokens updated successfully.
[root@ansible ~]#[root@node1 ~]#  useradd student
[root@node1 ~]# echo 123 |passwd --stdin student
Changing password for user student.
passwd: all authentication tokens updated successfully.
[root@node1 ~]#[root@node2 ~]#  useradd student
[root@node2 ~]# echo 123 |passwd --stdin student
Changing password for user student.
passwd: all authentication tokens updated successfully.
[root@node2 ~]#[root@node3 ~]#  useradd student
[root@node3 ~]# echo 123 |passwd --stdin student
Changing password for user student.
passwd: all authentication tokens updated successfully.
[root@node3 ~]#//使用student用户创建基于密钥认证
[root@ansible ~]# su - student
[student@ansible ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/student/.ssh/id_rsa):
Created directory '/home/student/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/student/.ssh/id_rsa.
Your public key has been saved in /home/student/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:2yAmussU45lTfjZso7pWK5hO6SJtaveSrzx9a4EM2bI student@ansible.example.com
The key's randomart image is:
+---[RSA 3072]----+
|                 |
|                 |
|    o            |
|   + .           |
|  o B + S        |
| ..E.* o +       |
| *B.+.B o .      |
|B+*B.* =         |
|**BBBoo..        |
+----[SHA256]-----+
[student@ansible ~]$ ssh-copy-id  -i  ~/.ssh/id_rsa.pub  root@node1
[student@ansible ~]$ ssh-copy-id  -i  ~/.ssh/id_rsa.pub  root@node2
[student@ansible ~]$ ssh-copy-id  -i  ~/.ssh/id_rsa.pub  root@node3
[student@ansible ~]$ ssh-copy-id  -i  ~/.ssh/id_rsa.pub  student@node1
[student@ansible ~]$ ssh-copy-id  -i  ~/.ssh/id_rsa.pub  student@node2
[student@ansible ~]$ ssh-copy-id  -i  ~/.ssh/id_rsa.pub  student@node3//测试
[student@ansible ~]$ mkdir ansible
[student@ansible ~]$ cd ansible/
[student@ansible ansible]$ pwd
/home/student/ansible
[student@ansible ansible]$ cp /etc/ansible/ansible.cfg .
[student@ansible ansible]$ vim ansible.cfg
inventory      = /home/student/ansible/inventory[student@ansible ansible]$ vim inventory
node1
node2
node3
[student@ansible ansible]$ ansible all -m ping
node2 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false,"ping": "pong"
}
node1 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false,"ping": "pong"
}
node3 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false,"ping": "pong"
}
[student@ansible ansible]$

ansible的介绍与安装相关推荐

  1. Ansible简单介绍及安装部署详解

    ansible简单介绍 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置. ...

  2. Ansible架构介绍与安装

    Ansible介绍与安装 一.介绍 Ansible 什么是 Ansible? Ansible是一款自动化运维工具,其主要功能是帮助运维实现IT工作的自动化.降低人为操作失误.提高业务自动化率.提升运维 ...

  3. Ansible介绍与安装

    Ansible介绍与安装 文章目录 Ansible介绍与安装 介绍 Ansible 什么是 Ansible? Ansible 无需代理 Ansible方式 ansible工作模式 Ansible的作用 ...

  4. 第一章、Ansible的详细介绍与安装

    文章目录 一.自动化与linux系统管理(为什么要学习自动化运维) 二.什么是ansible 三.ansible优点 四.ansible管理方式 五.ansible系统架构 六.openssh连接原理 ...

  5. python介绍与安装(一)

    python介绍与安装(一) 1.python语言介绍 1.1 介绍 编程语言的分类主要有一下几个维度,编译型和解释性:静态语言和动态语言:强类型语言和弱类型语言. Python 是一个高层次的结合了 ...

  6. Python 、 PyCharm 、 Anaconda 介绍及安装

    Python . PyCharm . Anaconda介绍及安装 1. Python介绍及安装 1.1 Python介绍 1.2 python安装 1.3 pip工具 2 PyCharm介绍及安装 2 ...

  7. Scrapy-Splash的介绍、安装以及实例

    scrapy-splash的介绍   在前面的博客中,我们已经见识到了Scrapy的强大之处.但是,Scrapy也有其不足之处,即Scrapy没有JS engine, 因此它无法爬取JavaScrip ...

  8. Springlake-01 介绍功能安装

    Springlake-01 介绍&功能&安装 1. 简介与功能 1)Springlake 是一个企业内容平台SECP 2)是一个可配置的系统,80%内容可以配置 3)允许建立和配置垂直 ...

  9. Kafka系列一之架构介绍和安装

    Kafka架构介绍和安装 写在前面 还是那句话,当你学习一个新的东西之前,你总得知道这个东西是什么?这个东西可以用来做什么?然后你才会去学习它,使用它.简单来说,kafka既是一个消息队列,如今,它也 ...

最新文章

  1. 实用ISA Server 2006之一: 简介
  2. python异步写文件_结合异步http请求将数据写入文件
  3. Spring @Import注解配置类方法内部调用没有注入属性值的坑
  4. 最新Jmeter版本常用技巧集锦
  5. JavaScript 中 Property 和 Attribute 的区别
  6. 一个磁性窗体VCL组件的具体实现
  7. [unity3d]插件2d toolskit
  8. 我为什么要翻译ES6官方文档
  9. 两波形相位差的计算值_变压器损耗计算公式
  10. 手把手教你ZPanelX 10.0.0在window下的汉化
  11. 2018年成功IPO的科技独角兽里,你最看好哪家?
  12. Java学习十四,JDBC,反射
  13. 盒式交换机S5750系列指示灯含义
  14. 合成大西瓜?不如写个可以一起聊天吃瓜放烟花的聊天室
  15. BlueStacks不仅支持x86和ARM处理器,新版BlueStacks并不是单纯的实现虚拟化,而是运行整个Android系统
  16. 广西大学“中国东信杯”第三届程序设计竞赛-新生组-部分题解
  17. Android 动态加载多版本SDK之DexClassLoader实践
  18. linux 图标显示 异常,在Ubuntu 18.04系统中VSCode图标显示异常的解决方法
  19. python基础学习之空气质量可视化(三)数据库的操作
  20. CnOpenData政府采购数据

热门文章

  1. Android本地音乐播放
  2. vb 获取计算机序列号,在VB中如何获取电脑主板序列号,请指导。听说A...-卓优商学问答...
  3. 九款酷炫基于jquery实现的应用及源码
  4. Ds1302时钟+独立按键校正时间
  5. 解决 strict-origin-when-cross-origin 问题
  6. JS快速获取当前时间减一小时、一天及日期格式处理
  7. java获得当前时间一小时前的时间
  8. mysql 5.1选择_mysql 5中的多列子选择(5.1.42)
  9. watchfit鸿蒙,使用华为WATCH FIT一周,发现去健身房办卡完全是冤枉钱
  10. Python 数据分析 数据挖掘 学习路径图