我有一个 Ansible 手册,用于在远程计算机上建立 LAMP 环境。
本手册的一部分涉及安装 Composer:
- name: Install Composer
get_url:
url: https://getcomposer.org/installer
dest: /tmp/composer-setup.php
command: php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer
我的考虑
相反,我考虑ansible-galaxy
在剧本中使用以下 5 行结构:
ansible-galaxy install geerlingguy.composer
geerlingguy.composer
是最受社区支持的 AG 角色,拥有超过 100 万用户(所以我假设如果出现问题并且 Jeff 目前不在身边 - 比如说,去夏威夷度假或其他什么地方,将会有许多社区成员来解决问题)问题并确保稳定性。
使用这个也会缩短我已经很长的剧本。
我的问题
一般来说,最好的做法是在 Ansible 剧本中使用 Ansible-Galaxy 角色来执行任务和测试,而不是在剧本中使用一组 ansible 模块,这些模块显然应该实现相同的目标(也许一些多余的额外内容可能不重要并且不会)不要打扰作为 AG 角色的一部分)?我认为是的,因为它更公共、更稳定。
答案1
是否使用 Galaxy 提供的角色是您需要根据您的特定环境(对于您正在考虑的每个角色)进行评估的决定。
Galaxy 上的好角色通常会处理比您的特定角色更多的情况(与您的剧本相比,看看这里的内容tasks
),但这些功能是有代价的:您正在向系统添加外部依赖项,并依赖于一个满足您需求的社区。
您需要考虑评估 Galaxy 角色与开发剧本(或您自己的 Galaxy 角色)的成本;无论是现在,还是将来。没有硬性规定。