Ansible-Galaxy 角色中的基本文件(目录和常规文件)是什么?

Ansible-Galaxy 角色中的基本文件(目录和常规文件)是什么?

我有一个 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,您会发现这个特定角色处理的案例比您自己的剧本要多得多。这并不意味着您自己的策略不够“足够”;而是意味着您的策略不够。它解释了为什么结构化方法很有用。

相关内容