Ansible 编码最佳实践与高级应用
1. 处理操作系统和发行版差异
在自动化编码中,我们的目标是尽可能广泛地使用相同的自动化代码。然而,尽管我们努力标准化技术环境,但差异总是会出现。例如,不可能一次性对所有服务器进行重大升级,当新的操作系统版本发布时,必然会有部分机器仍使用旧版本。同样,原本标准化使用 Ubuntu 的环境,可能会引入仅支持在 CentOS 上运行的应用程序。
在编写 Ansible playbooks 时,尤其是角色,应使其尽可能广泛适用于整个环境。以安装 Apache 2 网络服务器为例,如果要同时支持 Ubuntu 和 CentOS,不仅要处理不同的包管理器(yum 和 apt),还要处理不同的包名(httpd 和 apache2)。
下面通过一个实际例子来展示如何根据 Ansible 事实对不同的 play 进行分组,使操作系统发行版决定 playbook 中哪个 play 会被运行:
1. 创建新的 playbook :创建一个名为 osvariants.yml 的 playbook,内容如下:
---
- name: Play to demonstrate group_by module
hosts: all
tasks:
- name: Create inventory groups based on host facts
group_by:
key: os_{
{ ansible_facts['distribution'] }}
超级会员免费看
订阅专栏 解锁全文
26

被折叠的 条评论
为什么被折叠?



