因此,我们在项目中遇到的一件事是,我们不希望将我们的大文件存储在我们的git repo中以用于我们的ansible角色,因为它减慢了克隆速度(并且git将文件限制为100 mb)。
我们所做的是将我们的文件存储在一个单独的内部位置,我们的文件可以静态放置,没有大小限制。编写我们的角色,以便他们首先将这些静态文件拉到其本地文件夹,然后像往常一样继续。
即。 角色/富/任务/ main.yml
- name: Create role's files directory
file:
path: "{{roles_files_directory}}"
state: directory
- name: Copy static foo to local
get_url:
url: "{{foo_static_gz}}"
dest: "{{roles_files_directory}}/{{foo_gz}}"
#....Do rest of the tasks...
角色/富/瓦尔/ main.yml
roles_files_directory: "/some/path/roles/foo/files"
foo_static_gz: "https://internal.foo.tar.gz"
foo_gz: "foo.tar.gz"
我找不到真正合理的主要内容是角色文件目录的硬编码路径。我最好在运行ansible时动态查找路径,但我还没有找到相关文档。可能会出现此问题,因为不同的用户可能会将角色检查到不同的根路径。有没有人知道如何动态地知道角色路径,或者有其他模式来解决整体问题?
编辑:
我发现实际上有{{playbook_dir}}变量会返回" / some / path&#34 ;,在这种情况下可能足够动态。对于角色名称可能会发生变化的情况仍然不安全,但这种情况很少发生,可以通过版本控制来处理。
答案 0 :(得分:0)
如何从命令行传递值?
---
- hosts: '{{ hosts }}'
remote_user: '{{ user }}'
tasks:
- ...
ansible-playbook release.yml --extra-vars "hosts=vipers user=starbuck"
http://docs.ansible.com/playbooks_variables.html#passing-variables-on-the-command-line
答案 1 :(得分:0)
我只想添加另一种可能的解决方案:您可以尝试添加自定义“facter”。
以下是官方文档的链接:http://docs.ansible.com/setup_module.html
我发现这篇文章可能很有用:http://serverascode.com/2015/01/27/ansible-custom-facts.html