如何相对于角色复制带有ansible的文件?
Posted
技术标签:
【中文标题】如何相对于角色复制带有ansible的文件?【英文标题】:How to copy files with ansible relatively to the role? 【发布时间】:2016-05-30 23:46:03 【问题描述】:我在角色中有一个复制任务,我希望 src
位置与角色本身相关,而不是调用角色的剧本。
如何完成这项工作并使用来自myrole/tasks
内的任务的来自myfrole/files
的文件,我不想将角色名称包含在路径中,因为它没有多大意义。如果我这样做,如果我复制角色,它就会中断。
【问题讨论】:
【参考方案1】:如果你根本不提供任何路径,只提供文件名,Ansible 会自动从角色的files
目录中选择它。
- copy:
src: foo.conf
dest: /etc/foo.conf
此外,从 Ansible 1.8 开始,您可以在 copy 任务中使用变量 role_path
。
- copy:
src: " role_path /files/foo.conf"
dest: /etc/foo.conf
【讨论】:
如果您不使用角色怎么办? (你应该总是使用角色吗?) @alex 你可以使用 playbook_dir
。如果你应该使用角色,取决于你的项目的大小以及你的剧本是否应该只做一件小事或更多。就个人而言,除了快速测试某些东西之外,我还没有看到不使用角色的有效案例。【参考方案2】:
您不需要指定要复制的文件的路径,只要它存储在files
目录中即可。
你的角色应该是这样的:
my-awesome-role
├───files
│ my-awesome-file
└───tasks
main.yml
这是在tasks/main.yml
中调用copy的方法:
- copy:
src: my-awesome-file
dest: ' some_destination '
【讨论】:
以上是关于如何相对于角色复制带有ansible的文件?的主要内容,如果未能解决你的问题,请参考以下文章