Ansible包安装作为元依赖项或任务

Ansible包安装作为元依赖项或任务,ansible,architecture,ansible-role,Ansible,Architecture,Ansible Role,这是一个设计/架构问题,可以解决我混乱的大脑:) 使用ansible,我希望通过角色在我的系统上安装软件包 在此讨论中有两种方式: 在meta/main.yml --- dependencies: - role: 'custom-apt-wrapper' pkg_name: 'my-awesome-package' --- - name: Install package 'my-awesome-package' apt: name: my-awsome-package

这是一个设计/架构问题,可以解决我混乱的大脑:)

使用ansible,我希望通过角色在我的系统上安装软件包

在此讨论中有两种方式:

  • meta/main.yml

    ---
    dependencies:
      - role: 'custom-apt-wrapper'
        pkg_name: 'my-awesome-package'
    
    ---
    - name: Install package 'my-awesome-package'
      apt:
        name: my-awsome-package
        state: present
    
  • tasks/main.yml

    ---
    dependencies:
      - role: 'custom-apt-wrapper'
        pkg_name: 'my-awesome-package'
    
    ---
    - name: Install package 'my-awesome-package'
      apt:
        name: my-awsome-package
        state: present
    
  • 这两个选项都是功能性的,但问题是:

    • 以下哪个选项是ansible设计的正确方式
    • 有更好的解决办法吗
    • 当继续使用其中一个时,是否会遇到任何隐藏的问题
    我的理解是:

    如果我想管理我的角色不负责的事情,我应该并且会将其作为依赖项。如果没有,我将安装带有任务的包

    让我们举个例子:

    Python包应该存在于系统中,但只能通过pip获得

  • 具有依赖关系的解决方案:
    • 通过
      meta/main.yml
      dependencies数组中的pip包装器角色安装pip包
  • 任务解决方案:
    • 我的角色将依赖于pip角色,以确保系统上存在pip
    • 然后我将在
      tasks/main.yml
      中管理(安装)pip包
  • 对我来说是2。解决方案更容易理解和灵活。只需考虑按条件设置安装包或按条件包含其他任务文件即可。在元依赖数组中,它将是一个大数组


    如果有人有这方面的经验,我真的很想听听你对这方面的看法!谢谢

    您也可以考虑不自动管理任何依赖项,而只是用一个有意义的消息来破坏您的角色,要求用户安装所需的包。当有多种方法/角色/解决方案来安装某些东西,并且您不想强迫用户按您的方式进行安装时,这一点非常有用。同时,上述问题没有一个好的答案,你可能会得到很多不同的情况和观点,这使得你的问题很难回答。你认为在依赖项下使用“pkg_name”是有效的吗?pkg_name是自定义apt包装角色中的一个变量。Hrm,大多数文档都让您将规则的任何变量放在“vars”部分下。哦,谢谢你!您也可以考虑不自动管理任何依赖项,而只是用一个有意义的消息来破坏您的角色,要求用户安装所需的包。当有多种方法/角色/解决方案来安装某些东西,并且您不想强迫用户按您的方式进行安装时,这一点非常有用。同时,上述问题没有一个好的答案,你可能会得到很多不同的情况和观点,这使得你的问题很难回答。你认为在依赖项下使用“pkg_name”是有效的吗?pkg_name是自定义apt包装角色中的一个变量。Hrm,大多数文档都让您将规则的任何变量放在“vars”部分下。哦,谢谢你!