面向 Devops 的 Ansible 面试问答

37 篇文章 0 订阅

在本指南中,我们将了解面向 DevOps 工程师的 Ansible 面试问题和答案。这旨在帮助您准备 Ansible Devops 面试并检查您的技能。在过去的一年里,Ansible 得到了广泛的采用。它现在是最常用的软件之一,可在从单台服务器到多台服务器集群的基础设施上自动执行软件供应、配置管理和应用程序部署。

如果您正在阅读本指南,我相信您已经了解了 Ansible 的基础知识——它的工作原理、要求以及与 PuppetChef 等类似工具相比的优势......

1) 什么是 Ansible

Ansible 是一个用 Python 编写的开源 IT 自动化工具,现在由 Redhat 提供支持。它可以配置系统、部署软件、配置系统和协调高级 IT 任务,例如零停机时间的持续部署。

2) Ansible 与其他自动化工具相比有哪些优势?

  • Ansible 是无代理的 - 只需要在目标机器上启动 SSH 服务
  • 唯一需要的依赖项是 Python。大多数系统都预装了 Python
  • 它具有低开销 - 最小的资源利用率
  • Ansible 任务是用 YAML 语法编写的 - 易于学习和理解
  • Ansible 是声明式的 - 与其他主要是程序性的工具不同。您只需要定义所需的状态,Ansible 就会满足达到该状态的要求

3) 哪些选项可用于安装 Ansible

  • 从分发包存储库安装
  • 从源代码构建
  • 使用 pip Python 包管理工具安装

4) 解释 Ansible 的工作原理?

Ansible 由节点和控制机器组成。
Ansible 将安装在控制机器上,节点通过 SSH 在该控制机器内进行管理,无需任何停机。节点位置是通过通过其库存控制机器来指定的。
Ansible 使用 SSH 协议将模块部署到节点,这些模块仅临时存储在远程节点中,它们通过标准输出上的 JSON 连接与 Ansible 机器进行通信。

5) 描述 Ansible 的一种实际用途?

Ansible 用于管理 IT 基础架构并将软件应用程序部署到远程节点。
Ansible 可用于使用单个命令将许多软件应用程序部署到许多节点。假设您想使用单个命令将一个或多个应用程序部署到 100 多个节点,这就是 Ansible 可以帮助我们的。
以下是我们如何在所有机器上安装软件包zlibvim

- hosts: all

  vars:

      package_list:

        - 'zlib'

        - 'vim'

  tasks:

      - name: Install zlib and vim

        become: "yes"

        package:

            name:"{{ package_list }}"

            state: present

6) 如何保护 Ansible 中的密码?

Ansible 有一个称为 Vault 的功能,它允许您将敏感数据(例如密码或密钥)保存在加密文件中,而不是作为剧本或角色中的明文。它有一个名为 ansible-vault 的命令行工具,用于编辑文件。此命令行工具使用的常见标志是  --ask-vault-pass--vault-password-file  要运行包含 Vault 加密数据文件的 playbook,您必须传递两个标志之一。

7) 什么是 Ansible Inventory

Ansible /etc/ansible/hosts上有一个默认文件,其中包含目标系统的 IP 地址或主机名。您可以使用命令行上的-i <path>选项
指定不同的清单文件。Ansible 从这个文件中选择一部分主机来处理。文件格式可以是 INI YAML,默认类似于 INI。在 INI 格式中,括号中的标题是组名,用于对系统进行分类并决定您在什么时间和出于什么目的控制哪些系统。例如

[db-servers]

192.168.10.4

192.168.10.5

[应用服务器]

10.1.5.4 10.1.5.5

主机和组变量可以在清单文件中定义。将变量分配给稍后将在剧本中使用的主机很容易,例如

[web-servers:vars]

ntp_server=ntp.server.com

proxy=proxy.server.com

8) 什么是 Ansible 剧本?

Ansible Playbook Ansible 所有用例的构建块。不同的 YAML 标签分为四种类型,即声明、变量、任务和处理程序。
Playbooks 是一组可以执行多个任务的命令,它们以 YAML 文件格式编写。

9) 检查为主机定义的库存变量的方法是什么?

使用以下命令检查库存:

$ ansible -m debug -a "var=hostvars['hostname']" localhost

10) 什么是 Ansible Tower

Ansible Tower 是一个基于 Web 的解决方案,它使 Ansible 更易于各种 IT 团队使用。它旨在成为您所有自动化任务的中心。该塔最多可免费使用 10 个节点。

11) 什么是 Ansible 角色?

Ansible 角色是一种捆绑自动化内容并使其可重用的方式。
创建 Ansible 角色的第一步是创建它的目录结构。为了创建基本目录结构,我们使用了一个与 Ansible 捆绑在一起的工具,称为 Ansible Galaxy
此命令将创建 taoxc.packer 目录:

$ ansible-galaxy init taoxc.packer

- taoxc.packer was created successfully

这是在taoxc.packer目录中创建的目录结构:

$ ls

README.md      files          meta           templates      vars

defaults       handlers       tasks          tests

12) 什么是 Ansible Galaxy

Ansible galaxy 是一个与 Ansible 捆绑在一起的工具,用于创建基本目录结构。Ansible 使用 Ansible 命令与配置的客户端进行通信。您可以使用通过 ansible-playbook 命令运行的 playbook 自动配置。

13) 描述 Ansible 模块的类型。

Ansible 中的模块是幂等的。从 RESTful 服务的角度来看,为了使操作具有幂等性,客户端可以通过使用 Ansible 中的模块来执行相同的结果。多个相同的请求成为一个请求。
我们还可以在 Ansible 中创建自己的模块。
如果您知道如何使用 Python 进行编码,您可以在几个小时内从头开始创建自己的模块,并且您不需要任何相关的先验知识。

Ansible 中有两种不同类型的模块:

a) 核心模块
b) 附加模块

核心模块:

Ansible 团队维护这些类型的模块,并且它们将始终随 Ansible 软件一起提供。与附加存储库中的模块相比,他们还将给予这些模块更高的优先级。

附加模块:

这些模块目前与 Ansible 捆绑在一起,但将来可能会单独提供。它们也主要由 Ansible 社区维护。

14) 解释 Ansible 事实

您可以将 ansible 事实视为 ansible 获取有关主机的信息并将它们存储在变量中以便于访问的一种方式。存储在预定义变量中的这些信息可用于剧本。为了生成事实,ansible 运行 setup 模块。

$ ansible- m setup hostname

执行此语句后,它将打印出该特定主机可用的所有事实的字典。这是访问 Ansible_variables 列表的最佳方式。

您可以通过以下方式查看所有事实:

$ ansible all- m setup

因此,如果您只想提取信息的某些部分,那么您可以使用设置模块,您可以在其中选择过滤输出并掌握您需要的事实。

15)什么是临时命令?

Ad-hoc 命令是我们可以用来在节点上采取行动的方式,而无需编写新的剧本。如果您愿意,假设要重新启动特定组中的所有主机,您可以编写一个新的剧本,或者只是运行一次性的临时命令。

$ ansible servers -a "/sbin/reboot"

16) 如何访问 Shell 环境变量?

通过使用“env”查找插件来访问控制机器中的现有变量。
例如:
在管理机器上访问 Home 环境变量的值:

local_home:”{{lookup(‘env’,’HOME’)}}”

17) 编写一个任务来创建目录'/tmp/taoxc'

在节点上创建一个新目录是这样完成的:

- name: Create a new directory

  file:

      path: "/tmp/taoxc"

      state: directory

18) 我们如何测试基于 Ansible 的项目?

有几种方法可以测试我们的 Ansible 项目:

手动运行:我们可以简单地运行播放并检查系统是否处于所需状态——这是最简单和最懒惰的方法,但它也可能存在潜在危险,因为在测试环境和生产环境中的结果可能不是相同的。

检查模式:检查模式是测试 Ansible 项目的好方法,因为它会报告它所做的一切,就好像它在没有模拟的情况下运行一样。因此,您可以轻松查看 Ansible 运行行为是否如您所愿。但是检查模式不运行角色和剧本中使用的脚本和命令。要运行它们,您必须使用“check_mode: no”禁用特定任务的检查模式。

断言:断言作为一种测试方法非常棒,因为它也类似于您在其他语言(如 Python)中的测试方式,更重要的是,它确保您的系统达到所需的状态,而不是像检查模式那样作为模拟,而是作为实际验证任务将某些资源更改为所需状态。

您还可以查看诸如 Molecule Test Kitchen 之类的 Ansible 测试工具。

19) 解释什么是红帽 Ansible

红帽的 Ansible Ansible Tower 都是端到端的完整自动化平台,能够提供以下特性和功能:

  • 1. 供应

2. 部署应用

3. 编排工作流程

4. 管理 IT 系统

5. IT系统配置

6. 网络

7. 应用

20) 什么是持续交付?

持续交付是一种在软件提交了一些更改后立即交付软件的实践。使用这种方法,我们需要使用一些版本控制系统,比如 GitHub GitLab。该软件在现场制作系统中不断更新。

 

  • 0
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

太极淘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值