ansible部署

.Ansible 简介

Ansible 是一款开源的 IT 自动化引擎,它能帮助你自动化执行云资源管理、配置系统、部署应用、编排复杂的工作流等重复性任务。它的目标是让你用"声明式"的简单语法,来描述系统的"最终状态",然后把具体执行过程交给 Ansible 去完成。

那么Ansible有什么优势呢?

首先Ansible不用部署代理架构,Ansible 通过 SSH(Linux/Unix 系统)或 WinRM(Windows 系统)与目标服务器建立连接。我们不需要在被管理的服务器上安装任何 Ansible 客户端或后台进程,在Ansible 执行任务时,会将 Python 脚本通过 SSH 拷贝到远端执行,执行完毕后自动删除脚本,不留任何痕迹。

同时Ansible是有幂等性的,意思就是同一个操作执行一次和执行 N 次,最终的结果是一样的。

具体场景就是批量部署nginx服务,需要对nginx进行文件配置,那么如果此时使用ansible自动化,只需要写上一个剧本,准备一下模板,ansible就会自动在所有指定了的机器上面执行nginx部署与配置了。

.Ansible 安装与清单部署

我们刚刚谈到,Ansible是去中心化以及no agent的。Ansible不需要像 C/S 架构(客户端/服务器架构)那样,在后台运行一个常驻的、持续监听的服务端进程(如守护进程 daemon)来等待客户端的连接请求。对于受管节点,是不需要安装什么agent端的,直接通过ssh来连接执行脚本,而在控制节点,我们也只需要安装一个Ansible的命令行工具,在执行Ansible指令的时候,这个进程才会启动。

所以我们只需要在控制节点安装即可。

注意,ansible依赖于python3,我们需要保证python的版本。

安装完之后,我们可能会想控制节点是怎么知道要对那些主机进行操作的呢?这就涉及到Ansible的清单inventory,这个文件的位置默认是在/etc/ansible/hosts的,在ansible的主配置文件中/etc/ansible/ansible.cfg中是指明了位置的。当我们执行ansible的指令的时候,ansible先会去读清单,知道哪些主机是受控节点,以及哪些节点是在哪一个组里面。

比如我们在文件中,这样配置了三个语句,第一条语句是设置了一个单机,告诉这个机器是受控制的。然后下面两个都是组的设置,这里一个\[\]就是一个组的意思,一个组里面是可以写多个ip的,意思就是多个主机。这样可以同时对多台主机进行操作,这里也是把功能类似的主机放在一个组中。

当然,清单不仅可以定义主机,还可以给每台主机或每个组定义连接参数,让Ansible知道如何连接。不过我们这里就先不加参数,简单的加几个组就可以了,此时用的是默认参数。

另外,组还是可以嵌套的,将不同的组归纳于一个大组里面。

附加:(一些清单配置参数)

.ansible ad-hok

Ad-hoc 这个词来自拉丁语,意思是"临时的、专门的"。在 Ansible 中,Ad-hoc 指的是:一条快速执行、用完即走、不需要保存的 Ansible 命令。

当你需要执行一系列操作(比如:安装 Nginx → 修改配置文件 → 启动服务 → 设置开机自启),或者这个操作需要反复执行时,就应该写 Playbook(剧本),而我们只是执行一条指令,而且是临时性的话,就使用ad-hok就可以了。

ad-hok的语法如下:

其中-m接的是模块名称,默认是command模块。-a指的是传递给这个模块的参数。这里还可以接上-i指定清单文件的位置,以及-k表示询问密码,这里建议生成密钥对,然后拷贝给对方,此时就不用加上-k了。

比如我们刚才的web组,虽然我们的web组只有一个机器,但是也是可以使用hd-hok的。

相关推荐
-今昭-1 天前
Ansible
linux·运维·ansible
众人皆醒我独醉1 天前
GPU 集群 IaC:Terraform + Ansible 部署自动化
面试·ansible·gpu
酷可达拉斯3 天前
自动化运维-Ansible任务控制与流程控制
运维·自动化·ansible
秦渝兴3 天前
Ansible 自动化部署 K8s 三节点集群(完整教程)
kubernetes·自动化·ansible
酷可达拉斯5 天前
自动化运维-Ansible触发器与变量
运维·服务器·自动化·ansible
独隅13 天前
Cursor+GitOps 自动化运维实战:智能编写 Ansible 与 Terraform
运维·自动化·ansible
酷可达拉斯16 天前
自动化运维-ansible配置文件与主机清单
linux·运维·自动化·ansible
杜子不疼.17 天前
Ansible定时清空日志实战:Playbook、Cron与远程主机接入
ansible
布鲁飞丝17 天前
vivo Pulsar 万亿级消息处理实践()-Ansible运维部署
运维·ansible