具有文件夹“文件”的 Ansible 角色

Posted

技术标签:

【中文标题】具有文件夹“文件”的 Ansible 角色【英文标题】:Ansible roles with folder "files" 【发布时间】:2021-12-16 23:32:09 【问题描述】:

我有一个角色 Jitsi。我想从文件夹logo 复制文件logo.png,还有js.name.com.crt 和js.name.com.key 到远程主机

/etc/ansible/roles/Jitsi/files#树

.
├── logo
│   └── logo.png
└── ssl
    ├── js.name.com.crt
    └── js.name.com.key

我有一个徽标任务:

- name: Copy files logo.png
  copy:
    src: /etc/ansible/roles/Jitsi/files/logo/logo.png
    dest: /usr/share/jitsi-meet/images/watermark.png
    remote_src: true

还有 ssl 的任务:

- name: Copy cert file js.name.com.crt
  copy:
    src: /etc/ansible/roles/Jitsi/files/ssl/js.name.com.crt
    dest: /etc/ssl/js.name.com.crt
    remote_src: true

- name: Copy  key file js.name.com.key
  copy:
    src: /etc/ansible/roles/Jitsi/files/ssl/js.name.com.key
    dest: /etc/ssl/js.name.com.key
    remote_src: true

但是当我执行我的剧本时,我得到了错误:

TASK [Copy cert file js.name.com.crt] ***************************************************************************************
fatal: [jitsi]: FAILED! => "changed": false, "msg": "Source /etc/ansible/roles/Jitsi/files/ssl/js.name.com.crt not found"

附:也许我可以为此使用一些变量?

【问题讨论】:

除了答案,copy 模块自动搜索files/ 目录毫无价值,因此您的src 可以只是src: 'logo/logo.png' 【参考方案1】:

复制模块将文件从本地远程机器复制到远程机器上的某个位置。本地或远程取决于参数remote_src的值

remote_src 如果没有,它会在控制器节点上搜索 src。 如果是,它将在托管(远程)节点上搜索 src。

所以按照你在 src 参数中定义的文件名,我想你的文件在控制器节点(localhost)上,所以我建议你设置 no remote_src

【讨论】:

你是绝对正确的。它适用于remote_src: false 谢谢!!

以上是关于具有文件夹“文件”的 Ansible 角色的主要内容,如果未能解决你的问题,请参考以下文章

如何相对于角色复制带有ansible的文件?

Ansible角色

Ansible使用不同的变量文件多次运行相同的角色

ansible角色roles

Linux之ansible的角色基本使用

Ansible10:Playbook的角色与包含