ANSIBLE 第一天
本文最后更新于 253 天前,其中的信息可能已经有所发展或是发生改变。

1.Ansible是干啥的

它是一个基于python开发的开源自动化运维工具。

  • 它可以用来
  1. 批量配置管理部署(如通过ssh批量初始化机房里的几十台电脑,拷贝复制文件等)
  2. 任务自动化,消除重复并简化工作流程(类似devops的CI/CD)
  3. 持续部署复杂的软件(如:docker,nginx的自动部署)

它本身提供一种框架,没有主从架构(没有客户端和服务端之分),开箱即用功能的实现是依靠其模块完成的。

所以,掌握这个工具可以提高效率。

2.Ansible的官网是多少

官网:https://www.redhat.com/

社区文档:Ansible 文档

3.Ansible是什么语言开发的

它基于 Python 语言开发,核心模块和插件均用 Python 实现。

此外:

  • 依赖 Paramiko实现SSH 协议
  • PyYAML提供YAML 解析

4.有哪些其他服务可以代替Ansible

  1. Puppet – C/S结构,使用ruby语言编写的IT基础设施自动化管理工具
  2. SaltStack – C/S结构,使用server-agent通信模型,安全性较高的自动化运维工具
  3. Terraform – IAC工具,能够进行状态监测

5.Ansible的最新版本是多少

截止2025.6.22,Ansible的最新版本是2.9

6.Ansible有哪些安装方式

  • 源码安装git clone git://github.com/ansible/ansible.git –recursive
    cd ./ansible
    source ./hacking/env-setup -q这个方式,记得先安装对应python版本的pip,python的一些模块也要安装sudo easy_install pip
    sudo pip install paramiko PyYAML Jinja2 httplib2 six
  • 不同操作系统各自的下载命令直接下载
    • Centos、Redheat :Yum
    • Ubuntu: Apt

-PIP安装 pip install ansible

7.Ansible是如何操作其他被控节点的,被控节点需要满足什么条件

Ansible 通过ssh协议操作其他节点。所以被控节点需要满足:

  • 安装ssh服务
  • 安装python环境

8.Ansible中的模块是什么

模块是ansible的核心功能单元,也是最小执行单位。由Python,shell等语言编写,用于执行具体任务。

ansible常用模块:

  • ping-用于检测网络是否通畅,是否能联通
  • setup- 用于获取主机信息
  • group/user-用于增删查改用户/用户组的模块
  • command/shell-用于对目标机器使用远程命令的模块,shell更适用于复杂命令
  • copy/fetch-复制模块,copy是将本地文件复制到远程机器,fetch则反之,将远程文件复制到本地文件
  • script- 将本地脚本复制到远程主机的模块
  • yum – 类似centos,用于在目标主机上对软件安装、卸载、管理的模块

9.什么是命令式

它是:命令式是一种编程范式,也称为指令式编程,具体是什么可以参考其定义:

  • 强调怎么做:描述操作步骤+状态变化实现目标
    • 举例:去博物馆
      • 命令式:向西出发500米,进入十字路口左转,再直走200米就可以到
    • 有目标,且包含具体的步骤
    • 具有显式性(因为我们可以看到实现的目标,思路,步骤)

适用场景:命令式比较复杂(描述多,代码也多)适用于在小型且精确的任务中使用。

主要特点

  • 顺序 – 按照程序员定义的顺序逐条执行
  • 可变性 – 变量可以在整个执行过程中改变值,反应程序状态变化
  • 流感控制 – 使用语句根据算法的逻辑改变执行顺序(如if/else)
  • 作业 – 大多数指令涉及到数量或数据结构的变化
  • 副作用 – 会影响系统的其他部分

mv aaa.txt bbb.txt为例,该语句是命令式编程。理由如下:

  • 显著描述了把aaa.txt变成bbb.txt的过程(显式性)
  • 按照定义的顺序执行,改变了变量名,影响了操作系统,体现了命令式(顺序,可变,作业,副作用)

10.什么是声明式

它是: 它也是一种编程范式,只不过他只需要声明想要的结果,无需把操作过程写出来

强调做什么:结果

  • 举例:去博物馆
    • 声明式:说一声“我要去博物馆”,然后你就到了
  • 只有目标
  • 具有隐式性(因为我们只需要说出需求,看不出操作的全过程,像黑箱一样)

适用场景:命令式简介抽象,中大型场景(数据代码简洁),介绍数据结构

主要特点:

  • 无副作用 – 不会改变程序状态或外部环境(不会把变量名给改了)

以sql语句为例:

SELECT * from user
WHERE user_name = Ben

他就是声明编程语言。命令简洁抽象,没有指定具体过程,也没有副作用

11.Ansible是声明式还是命令式

Ansible是声明式也是命令式,根据使用场景的不同,所采取的方式也不一样。

编写yaml文件时基本采用声明式,实现对远程主机的单次临时操作时则用命令式。

12.什么是幂等

它是:在同一个环境下进行多次操作,最后得到的都是一样的结果,不会因为多次点击产生副作用。

就像在重复请求调用的场景时,要确保每次调用的结果都一致。核心价值在于简化重试逻辑、保障数据一致性。

感谢大家参观我的毛坯房。
暂无评论

发送评�? 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇