ansible初步

本文介绍了Ansible的自动化构建功能,如何通过SSH连接服务器,以及inventory文件的配置,包括hosts文件的不同写法和验证方法。重点讲解了Python基础和在RHEL8系统上的安装步骤,以及如何组织和管理inventory以提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是什么

ansible的用途是自动化构建,构建的对象包括服务器,操作系统,中间件等等。(实际上只要愿意,ansible中提供了面对亚马逊云,azure之类的模块,个人倾向于云服务构建时采用云服务商自己的工具比如cloudformation,而构建中间件等使用ansible)

手动架构的时候,要么重复性操作很多,架构不止一台服务器,全部使用手动架构的话真的很花时间,自动化构筑工具的用途就是让重复性的手动架构的工作只要写一次代码就能够自动完成,更重要的是可以无限复用,而且不止是工程师,不会写代码的人只要手上有剧本就能完成一样的构筑活动。

ansible实现原理

ansible主要分为控制端和被控制端,ansible使用的是ssh的方式从控制端连接到被控制端,并且不需要在被控制端安装任何软件。那么显然其原理是将本地的剧本转化为命令传送到被控制端上面。

在openssh可用的时候会默认使用openssh连接,如果遇到不支持sftp的设备的话可以改用scp模式连接

安装

ansible基于的是python的框架所以应该确保在安装之前已经拥有python环境。并且目前ansible只支持在类unix环境上使用,包括rh系,db系,osx

以RHEL8为例

sudo dnf install python3

安装后查看一下pip3版本确认是否成功

pip3 --version
pip 18.1 from /usr/lib/python3/dist-packages/pip (python 3.7)

用pip3安装ansible

sudo pip3 install ansible

如果想要最小化安装的话可以使用

sudo pip3 install ansible-core

安装结束后用使用命令 ansible确认

inventory配置

在ansible中有两大主角,一个是怎么构筑的剧本,一个是在哪里构筑的inventory

默认读取的inventory文件全部位于

`/etc/ansible/`文件夹中,其中默认inventory文件为 `hosts`,该文件通常不自带,但是可以自行创建

hosts格式(inventory文件格式)

每个hosts文件都有两种格式:ini和yml,不需要提供后缀名即可自动解析,以ini格式为例

我们有三种写法

1 最简单的写法,整个文件只有ip或者域名,称之为一个host,例如:

54.0.0.1

2 当这个host需要安全验证的时候,可以把一条记录直接写成参数形式


这里的ansible_ssh_private_key_file就是ssh key文件,这里用aws为例,用户是ec2-user
实际上ansible的身份验证也有很多可以说的东西,另外开一个文章讲

ansible_host=54.0.0.1 ansible_ssh_private_key_file=~/kyousei1.pem ansible_user=ec2-user

3 当host记录有多条的时候,可以给每一个host一个别称,写在参数的最前面
 

alias ansible_host=54.0.0.1 ansible_ssh_private_key_file=~/kyousei1.pem ansible_user=ec2-user

alias2 ansible_host=54.0.0.2 ansible_ssh_private_key_file=~/kyousei1.pem ansible_user=ec2-user

alias3 ansible_host=54.0.0.3 ansible_ssh_private_key_file=~/kyousei1.pem ansible_user=ec2-user

4 可以将host分组
 

[group1]
alias ansible_host=54.0.0.1 ansible_ssh_private_key_file=~/kyousei1.pem ansible_user=ec2-user

alias2 ansible_host=54.0.0.2 ansible_ssh_private_key_file=~/kyousei1.pem ansible_user=ec2-user

[group2]
alias ansible_host=54.0.0.3 ansible_ssh_private_key_file=~/kyousei1.pem ansible_user=ec2-user

alias2 ansible_host=54.0.0.4 ansible_ssh_private_key_file=~/kyousei1.pem ansible_user=ec2-user

5 可以将host的地址和参数拆开写,降低耦合度

[ec2]
54.0.0.1
54.0.0.2

[ec2:vars]
ansible_ssh_private_key_file=~/kyousei1.pem
ansible_user=ec2-user

其中ec2是组名,可以任意设置,在组里面是host的ip地址,参数组在组名后面增加 `:vars`不难理解

hosts 通信验证

为了验证inventory文件的正确性,可以使用ping命令,即

ansible all -m ping

上文中已经提到过,默认的inventory文件就是这个所谓的hosts,他位于 /etc/ansible/hosts这个位置,但是实际上根据需求,inventory文件不一定位于一个文件夹,也不一定叫做hosts

那么如果inventory文件不是默认路径的话,就要使用 -i 这个flag

如果具体到使用里面的某一个组,或者某一个主机的时候,写法相应地有如下几种

ansible all -m ping
ansible name_of_group_or_host -m ping
ansible -i path_of_inventory all -m ping
ansible -i path_of_inventory name_of_group_or_host -m ping

由上写法可见groupname和hostname不可以重复

并且除了默认的hosts文件以外,其他的inventory文件就算放在 `/etc/ansible`目录中也必须写上路径才行

比如在 `/`位置启动ansible命令使用host2,就应该写 `ansible -i /etc/ansible/host2 all -m ping`

或者 `ansible -i etc/ansible/host2 all -m ping`也就是说相对于使用了ansible这个命令的位置,inventory的路径是怎么样的那就怎么写

而在 `/etc` 中启动命令就应该写 `ansible -i /etc/ansible/host2 all -m ping` 

或者 `ansible -i ansible/host2 all -m ping`

**以上格式非常重要 没有写过剧本的人根据格式可以避免大量debug时间**

如果是使用密码的形式的话,只需要把

ansible_ssh_private_key_pair 改成 ansible_password 就可以了

### Ansible 项目介绍及使用 #### 1. Ansible 简介 Ansible 是一种简单而强大的自动化工具,主要用于配置管理、应用部署以及任务编排。它无需代理即可工作,并通过 SSH 进行通信[^1]。 #### 2. Ansible 基本架构 Ansible 的核心组件包括控制节点和受管主机。控制节点负责发送指令到远程服务器(即受管主机),并通过插件扩展功能。其架构设计使得操作更加灵活高效。 #### 3. Ansible 的优点 - **无客户端需求**:不需要在目标机器上安装额外软件。 - **易学易用**:基于 YAML 文件编写 playbook,语法简洁明了。 - **模块化设计**:提供了丰富的内置模块支持多种操作系统和服务管理。 #### 4. 安装 Ansible ##### 控制节点准备 确保控制系统已更新并具备必要的依赖项。 ##### 受管主机设置 需开放特定端口供 SSH 使用,默认情况下为22号端口;还需保证 Python 巎境存在于被控设备之上。 ##### 实际安装过程 可以通过包管理器如 `yum` 或者 `apt-get` 来完成安装: ```bash sudo yum install ansible -y # 对于 CentOS/RHEL 用户 sudo apt update && sudo apt install ansible -y # 针对 Ubuntu 发行版 ``` ##### 初步体验 一旦成功部署好环境之后就可以尝试一些简单的命令来验证是否正常运作了。比如查看当前能够连接上的所有节点状态信息: ```bash ansible all --list-hosts ``` 或者向它们推送一条测试消息: ```bash ansible all -m ping ``` #### 5. Ansible 和其他同类产品的对比分析 相较于 SaltStack 和 Puppet ,Ansible 更加轻量级且易于维护,在中小型企业场景下表现尤为突出。 #### 6. K3s-Ansible 项目概述 k3s-ansible 提供了一套完整的解决方案用来简化 Kubernetes 分布式集群搭建流程。该项目位于 https://gitcode.com/gh_mirrors/k3sa/k3s-ansible 地址处可供下载查阅[^2]。 #### 7. 主要命令行工具说明 bin/ansible-playbook 是执行复杂多步骤工作的主要入口点之一,允许我们将一系列相互关联的操作封装成剧本形式保存下来重复利用[^3]。 #### 8. 自定义动作组生成方法 generate_action_groups.py 是一段专门为此目的开发出来的辅助程序脚本。只需按照如下所示启动就能获得所需的结果: ```python python generate_action_groups.py ``` 这一步骤有助于构建个性化的动作集合以满足特殊业务逻辑的需求[^4]。 #### 9. Playbook 构造指南 Playbooks 是由一个个具体的小型作业串联起来形成的大型方案文档。每一个这样的单元都可以独立运行也可以联合其它部分共同发挥作用从而实现更复杂的整体效果呈现出来给最终使用者看到[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值