ansible的介绍与安装
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的介绍与安装相关推荐
- Ansible简单介绍及安装部署详解
ansible简单介绍 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置. ...
- Ansible架构介绍与安装
Ansible介绍与安装 一.介绍 Ansible 什么是 Ansible? Ansible是一款自动化运维工具,其主要功能是帮助运维实现IT工作的自动化.降低人为操作失误.提高业务自动化率.提升运维 ...
- Ansible介绍与安装
Ansible介绍与安装 文章目录 Ansible介绍与安装 介绍 Ansible 什么是 Ansible? Ansible 无需代理 Ansible方式 ansible工作模式 Ansible的作用 ...
- 第一章、Ansible的详细介绍与安装
文章目录 一.自动化与linux系统管理(为什么要学习自动化运维) 二.什么是ansible 三.ansible优点 四.ansible管理方式 五.ansible系统架构 六.openssh连接原理 ...
- python介绍与安装(一)
python介绍与安装(一) 1.python语言介绍 1.1 介绍 编程语言的分类主要有一下几个维度,编译型和解释性:静态语言和动态语言:强类型语言和弱类型语言. Python 是一个高层次的结合了 ...
- Python 、 PyCharm 、 Anaconda 介绍及安装
Python . PyCharm . Anaconda介绍及安装 1. Python介绍及安装 1.1 Python介绍 1.2 python安装 1.3 pip工具 2 PyCharm介绍及安装 2 ...
- Scrapy-Splash的介绍、安装以及实例
scrapy-splash的介绍 在前面的博客中,我们已经见识到了Scrapy的强大之处.但是,Scrapy也有其不足之处,即Scrapy没有JS engine, 因此它无法爬取JavaScrip ...
- Springlake-01 介绍功能安装
Springlake-01 介绍&功能&安装 1. 简介与功能 1)Springlake 是一个企业内容平台SECP 2)是一个可配置的系统,80%内容可以配置 3)允许建立和配置垂直 ...
- Kafka系列一之架构介绍和安装
Kafka架构介绍和安装 写在前面 还是那句话,当你学习一个新的东西之前,你总得知道这个东西是什么?这个东西可以用来做什么?然后你才会去学习它,使用它.简单来说,kafka既是一个消息队列,如今,它也 ...
最新文章
- 实用ISA Server 2006之一: 简介
- python异步写文件_结合异步http请求将数据写入文件
- Spring @Import注解配置类方法内部调用没有注入属性值的坑
- 最新Jmeter版本常用技巧集锦
- JavaScript 中 Property 和 Attribute 的区别
- 一个磁性窗体VCL组件的具体实现
- [unity3d]插件2d toolskit
- 我为什么要翻译ES6官方文档
- 两波形相位差的计算值_变压器损耗计算公式
- 手把手教你ZPanelX 10.0.0在window下的汉化
- 2018年成功IPO的科技独角兽里,你最看好哪家?
- Java学习十四,JDBC,反射
- 盒式交换机S5750系列指示灯含义
- 合成大西瓜?不如写个可以一起聊天吃瓜放烟花的聊天室
- BlueStacks不仅支持x86和ARM处理器,新版BlueStacks并不是单纯的实现虚拟化,而是运行整个Android系统
- 广西大学“中国东信杯”第三届程序设计竞赛-新生组-部分题解
- Android 动态加载多版本SDK之DexClassLoader实践
- linux 图标显示 异常,在Ubuntu 18.04系统中VSCode图标显示异常的解决方法
- python基础学习之空气质量可视化(三)数据库的操作
- CnOpenData政府采购数据
热门文章
- Android本地音乐播放
- vb 获取计算机序列号,在VB中如何获取电脑主板序列号,请指导。听说A...-卓优商学问答...
- 九款酷炫基于jquery实现的应用及源码
- Ds1302时钟+独立按键校正时间
- 解决 strict-origin-when-cross-origin 问题
- JS快速获取当前时间减一小时、一天及日期格式处理
- java获得当前时间一小时前的时间
- mysql 5.1选择_mysql 5中的多列子选择(5.1.42)
- watchfit鸿蒙,使用华为WATCH FIT一周,发现去健身房办卡完全是冤枉钱
- Python 数据分析 数据挖掘 学习路径图