Ansible,只有在用户存在的情况下才能将用户添加到组中

我正在编写一个剧本来设置开发环境并为项目build立pipe道。 我希望尽可能保持playbook与实际基础设施的分离,并且只依赖组,所以我可以使用不同的组限制器,在相同的命令下在本地虚拟机和裸机上设置pipe道。

现在的问题是,用本地的stream浪者箱子,我需要添加用户stream浪者docker组,在那里裸机服务器一些任意的用户。 在剧本中处理这种变化的最佳做法是什么,尽量保持抽象? 我应该使用行为参数,主机variables,组variables,条件或事实收集这种东西?

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

要回答你的具体问题:

使用Vagrantfile覆盖的用户variables。 例如,如果你在stream浪汉中,那么将会是ubuntu或stream浪汉。


更理论的答案是:

我和stream浪汉的构build有着同样的问题,我决定在某个地方保留一本完整的剧本,这样所有的stream浪者队伍都会select并执行它来安装服务器。

例如,剧本看起来像这样:

  - hosts: all tasks: - name: remove apparmor apt: name=apparmor purge=true state=absent 

然后我的每一个stream浪者的仓库wget它和运行

 box.vm.provision :ansible do |ansible| ansible.playbook = 'vagrant_extra.yml' ansible.sudo = true ansible.limit = 'all' end 

我认为最好的解决办法是使用打包机来提供你自己的stream浪汉形象,所有这些东西预先支持在那里,以便

  1. 你不需要浪费时间自己设置图像,而且
  2. 你的盒子和“prod”盒子一样。