Ansible playbook面试题及参考答案(Ansible常见面试题)

下面是不念整理出来的一些 Ansible Playbook 面试问题及参考答案。

图片[1]-Ansible playbook面试题及参考答案(Ansible常见面试题)-不念博客

什么是 Ansible 和 Ansible Playbook?

Ansible 是一种开源的自动化配置管理和部署工具,可以帮助管理员在多台服务器上自动执行任务。

Ansible Playbook 是用 YAML 语言编写的脚本,描述了一系列任务,用于自动配置管理、应用部署和任务执行。

请解释 Ansible 的工作原理。

Ansible 通过 SSH 协议与目标主机通信,不需要在目标主机上安装代理。

Ansible 使用 Python 编写,管理节点需要安装 Python。

在执行 Playbook 时,Ansible 会将任务推送到目标主机并执行。

请解释以下术语:task、play、handler 和 role

  • Task:在 Ansible Playbook 中定义的单个操作,例如安装软件、启动服务等。
  • Play:一个 Play 包含一组针对特定主机组的任务。
  • Handler:在 Playbook 中定义的特殊任务,通常在其他任务发生更改时触发执行,例如重启服务。
  • Role:是一种组织 Playbook 的方法,将复杂的 Playbook 分解为可重用的部分,方便共享和维护。

如何在 Ansible Playbook 中定义和使用变量?

在 Playbook、inventory 文件、vars 文件中定义变量,或者使用 -e 参数在命令行中定义。

变量可以在任务、模板、条件语句等地方使用。

例如:

- name: Set up web server
  hosts: webservers
  vars:
    http_port: 80
    max_clients: 200

如何使用条件判断(when)和循环(loop)来控制任务的执行?

在任务中使用 when 关键字定义条件判断。

例如:

- name: Install package only on CentOS
  ansible.builtin.yum:
    name: some_package
    state: present
  when: ansible_facts['os_family'] == 'RedHat'

在任务中使用 loop 关键字执行循环。

例如:

- name: Create multiple users
  ansible.builtin.user:
    name: "{{ item }}"
    state: present
  loop:
    - user1
    - user2
    - user3

请解释 Ansible Playbook 的任务执行顺序。

Ansible Playbook 按照任务在 YAML 文件中的顺序执行。在一个 play 中,所有任务按照定义顺序执行。

在多个 play 中,按照 play 顺序执行。

如何在 Ansible Playbook 中使用模板(Jinja2)?

使用 template 模块将 Jinja2 模板文件渲染成目标文件。

例如:

- name: Configure nginx
  ansible.builtin.template:
    src: nginx.conf.j2
    dest: /etc/nginx
© 版权声明
THE END