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

时间:2016-11-04 07:54:30

标签: docker ansible virtual-machine ansible-playbook configuration-management

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

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

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

1 个答案:

答案 0 :(得分:1)

回答您的具体问题:

使用Vagrantfile覆盖的用户变量。 例如,如果在aws中,则为ubuntu;如果您在流浪汉中,则为vagrant

更理论的答案:

我遇到了与vagrant构建相同的问题,我决定在某个地方保留一个ansible playbook,以便所有的vagrant构建器都会接收它并执行它来设置服务器。

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

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

然后我的每个流浪资源库都会使用

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

我认为最好的解决方案是使用打包器来配置您自己的流浪者图像,其中包含所有这些预先备份的内容,以便

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