在私人团队中分享完美剧本的最佳做法?
我正在研究将我们现在的基于厨师的configurationpipe理迁移到合理的。
我们构build了许多具有类似依赖关系的rails应用程序(ruby,unicorn,nginx,monit,MySQL等)。
所以目前我们正在使用图书pipe理员厨师和私人github回购在不同的项目之间分享我们的共同食谱。
我是一个新人,我发现的最接近的事实是一个天才的星系,但这似乎是一个“开放式”的东西。
在私人环境中,这是什么常见/最佳做法?
Git子模块是唯一可以想到的答案,但是如果我们习惯了在厨师世界中使用某种更自动化的东西,那就太棒了。
两个主要的解决scheme: roles_path
和roles_path
ansible-galaxy
。
roles_path
首先configurationroles_path
的ansible.cfg
:
在Ansible 1.4及更高版本中,您可以configuration一个roles_path来searchangular色。 使用此function可以将所有常见angular色检查到一个位置,并在多个Playbook项目之间轻松共享。 有关如何在ansible.cfg中设置的详细信息,请参阅Ansibleconfiguration文件。
所以你必须把你的共享angular色放在一些文件夹中,例如:
roles_path = /opt/ansible/common_roles/:/opt/ansible/other_roles/
来自: http : //docs.ansible.com/playbooks_roles.html#introduction
ansible星系
其次,你可以使用ansible-galaxy
命令行:
ansible-galaxy install -r requirements.yml
有以下requirements.yml:
# from github, overriding the name and specifying a specific tag - src: https://github.com/bennojoy/nginx version: master name: nginx_role # from a webserver, where the role is packaged in a tar.gz - src: https://some.webserver.example.com/files/master.tar.gz name: http-role
所以你可以通过zip文件托pipe你的共享angular色。
来自: http : //docs.ansible.com/galaxy.html#the-ansible-galaxy-command-line-tool
就社区支持而言,Ansible比厨师,Puppet和其他工具要早一些。
所以,我相信你现在运气不好。 与librarian-chef
最接近的是Ansible Galaxy
,这仍然是一个正在进行的工作(Beta)。 就像你说的那样公开 话虽如此,但这并不意味着Ansible本身或者第三方开发者就不会再像Ansible这样的playbook team packager。
现在,我们只是坚持一个普通的git仓库,将不同目录或不同angular色的剧本分开。 毕竟,git被devise为与多个开发人员一起使用。 我猜你可以使用多个git子库来完成一个私有的Ansible Galaxy,但是pipe理git sub-repos并不是一个简单的任务,特别是如果你有很多的git sub-repos。