📅  最后修改于: 2020-12-26 12:44:21             🧑  作者: Mango
下面列出了一些常见的Ansible面试问题和答案。
Ansible是一个开源IT引擎,可自动执行应用程序部署,云供应,内部服务编排和其他IT工具。
Ansible非常易于部署,因为它在客户端不使用任何代理程序或自定义安全基础结构,也不通过将模块推送到客户端。这些模块在客户端本地执行,并将输出推回Ansible服务器。它可以使用SSH-Keys轻松连接到客户端。
在更多企业级别,Ansible塔就像Ansible。它是基于Web的解决方案,用于通过简单的用户界面管理组织,该界面提供了包含所有主机的所有状态摘要的仪表板。并允许快速部署,并监视所有配置。
Ansible Galaxy是一个银河网站,用户可以在其中共享角色,并可以使用命令行工具来安装,创建和管理角色。
Ansible Galaxy为Ansible最令人兴奋的功能之一提供了更大的可见性,例如应用程序安装或服务器配置的可重用角色。许多人在Ansible Galaxy中扮演角色。
Ansible模块是离散的代码单元,可以从命令行或在剧本任务中使用。
这些模块在Ansible中也称为任务插件或库插件。
Ansible附带了几个称为模块库的模块,这些模块可以直接执行,也可以通过剧本远程主机执行。
用户还可以编写他们的模块。这些模块可以控制服务,系统资源,文件或包等,并处理执行的系统命令。
Ansible通过连接到节点并向它们推出一个名为Ansible模块的小程序来工作。然后,Ansible执行了这些模块,并在完成后将其删除。模块的库可以驻留在任何计算机上,并且不需要守护程序,服务器或数据库。
管理节点是控制剧本整个执行的控制节点。清单文件提供了需要运行Ansible模块的主机列表。管理节点建立SSH连接,并在主机计算机上执行小模块并安装软件。
变量与在编程语言中使用变量非常相似。它可以帮助您为变量分配值,并在剧本中的任何位置使用它。您可以将条件放在变量的值周围,并相应地在剧本中使用它们。
Ansible Task使我们能够将配置策略的各个部分分解为较小的文件。这些是可用于自动执行任何过程的代码块。
Ansible中常用的一些基本术语,例如:
即席命令是简单的单行命令,用于执行特定任务。您可以将临时命令视为编写剧本的替代方法。一个临时命令的示例,如下所示:
ansible host -m netscaler -a "nsc_host=nsc.example.com user=ansiuser password=ansipass"
上面的Ad-hoc命令访问NetScaler模块以禁用服务器。
执行以下命令以访问组中第一台主机的变量:
{{ hostvars[groups['webservers'][0]]['ansible_eth0']['ipv4']['address'] }}
该命令正在访问webservers组中第一台计算机的主机名。如果通过模板执行此操作,请使用jinja2'#set',也可以使用set_fact。
以下命令用于保留详细的输出,但对希望看到输出的其他人隐藏敏感信息。
- name: secrete task
shell: /user/bin/do_somthing -value={{secrete value}}
no_log: True
另外,no_log属性可以应用于整个播放。
- hosts: all
no_log: True
Ansible Vault是一项功能,可确保您所有秘密的安全。它可以加密整个文件,YAML剧本,甚至几个变量。它提供了一种工具,您还可以将敏感数据集成到您的剧本中。
保管库以文件级粒度实施,其中文件完全加密或未加密。它使用相同的密码来加密和解密数据,从而使Ansible Vault易于使用。
在Ansible中,如果要访问现有变量,则需要使用“ env ”查找插件。
例如,您要访问管理机上Office环境的值,如以下命令所示,例如:
---
# ...
vars:
local_home: "{{ lookup('env','Office') }}"
I
{{ ansible_env.SOME_VARIABLE }}
“复制”模块具有递归参数。因此,如果要对大量文件执行更高效的操作,则“同步”模块是执行此任务的最佳选择。
可以使用“ environment”关键字设置环境变量。可以为任务或整个剧本设置它。请按照以下代码查看如何设置路径,例如:
environment:
PATH: "{{ansible_env.PATH}}:/thingy/bin"
SOME: value
您可以使用主机variant变量查看所有变量。它以主机名作为键存储主机变量。例如,要查看为localhost定义的变量,可以运行以下命令,例如:
ansible -m debug -a "var=hostvars[inventory_hostname]"
Variable Name | Environment Variable |
---|---|
You need to add strings to create variable names. | You need existing variables to access environment variables. |
You can easily create multiple variable names by adding strings. | To create environment variables, you must refer to the advanced Ansible playbook. |
Use the IPV4 address for variable names. | Use {{ansible_env.SOME_VARIABLE}} for remote environment variables. |
Red Hat的Ansible和Ansible Tower都是端到端的完整自动化平台,能够提供以下功能部件:
所有这些活动都与Ansible合作,可在其中帮助企业解决实时业务问题。