Ansible,如果用户存在,如何将用户添加到组

Tuo*_*nen 5 virtual-machine configuration-management ansible docker ansible-playbook

我正在编写一本手册来设置开发环境并为项目构建管道.我希望尽可能地将playbook与实际基础设施分离,并且只依赖于组,因此我可以使用相同的命令在本地VM和裸硬件中设置管道,只需使用不同的组限制器.

现在的问题是,使用本地Vagrant盒子我需要将用户流浪者添加到docker组,而裸机服务器则需要一些任意用户.在剧本中处理这些变化的最佳做法是什么,尽可能保持抽象?我应该使用行为参数,主机变量,组变量,条件或事实收集这类东西吗?

是否有可能或合理地保持剧本完全抽象,没有任何硬编码的价值和对任何环境的适应性?

use*_*522 1

回答您的具体问题:

使用 Vagrantfile 覆盖的用户变量。例如,ubuntu如果在 aws 中或vagrant如果您在 vagrant 中,则会出现这种情况。


更理论的答案:

我对 vagrant 构建也有同样的问题,我决定在某个地方保留一个 ansible 剧本,以便所有 vagrant 构建都可以拾取它并执行它来设置服务器。

例如,剧本如下所示:

 - hosts: all
   tasks:
     - name: remove apparmor
       apt: name=apparmor purge=true state=absent
Run Code Online (Sandbox Code Playgroud)

然后我的每个流浪存储库都得到它并运行它

box.vm.provision :ansible do |ansible|
    ansible.playbook = 'vagrant_extra.yml'
    ansible.sudo = true
    ansible.limit = 'all'
end
Run Code Online (Sandbox Code Playgroud)

我认为最好的解决方案是使用打包程序来提供您自己的流浪图像,该图像中预先支持了所有这些内容,以便

  1. 您不需要浪费时间自己设置图像,并且
  2. 您的盒子与“prod”盒子相同。