我有一个 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 目前不在身边 - 比如说,去夏威夷度假或其他什么地方,将会有许多社区成员来解决问题)问题并确保稳定性。
使用这个也会缩短我已经很长的剧本。
我的问题
为什么我们心爱的 Geerling 的 Ansible-Galaxy 角色(以及其他一些类似的角色)都包含在 GitHub 中的目录defaults/
、meta/
和templates
文件.travis.yml
?换句话说,为什么像我写的那样一本剧本还不够?
答案1
meta
包含用于 Galaxy 注册表的元数据。.travis.yml
包含配置特拉维斯·西尔,这确保了项目的持续集成。其他目录体现了 Ansible 角色的典型结构:defaults
包含默认设置、tasks
包含 playbook 以及templates
包含生成文件的模板。
ansible-galaxy init
将为您创建默认结构;看文档了解详情。目前,这是
README.md
.travis.yml
defaults/
main.yml
files/
handlers/
main.yml
meta/
main.yml
templates/
tests/
inventory
test.yml
vars/
main.yml
但您不会在所有角色中看到所有这些,因为很少有角色需要此处列出的每个文件和目录。
如果您查看 中的文件tasks
,您会发现这个特定角色处理的案例比您自己的剧本要多得多。这并不意味着您自己的策略不够“足够”;而是意味着您的策略不够。它解释了为什么结构化方法很有用。