如何使用Ansible替换证书并修改证书文件名
解决方案
你可以利用Ansible内置的主机变量动态生成目标文件名,核心是用{{ inventory_hostname }}(或其他主机相关变量)获取目标主机名称,直接在复制或重命名步骤中拼接文件名。
方法一:复制时直接重命名(推荐)
如果还没完成复制,或者想一步到位覆盖并命名,用copy模块直接指定带主机名的目标路径:
- name: 复制并重命名证书到目标主机 hosts: all tasks: - name: 复制证书文件(重命名为主机名-cert.pem) ansible.builtin.copy: src: /本地路径/原始证书.pem dest: /远程目标路径/{{ inventory_hostname }}-cert.pem mode: '0644' force: yes # 强制覆盖已存在的文件 - name: 复制密钥文件(重命名为主机名-key.pem) ansible.builtin.copy: src: /本地路径/原始密钥.pem dest: /远程目标路径/{{ inventory_hostname }}-key.pem mode: '0600' # 密钥文件建议设置严格权限 force: yes
方法二:已复制后重命名
如果已经把证书复制到远程主机,现在需要重命名,用command模块执行mv命令:
- name: 重命名已存在的证书文件 hosts: all tasks: - name: 重命名证书 ansible.builtin.command: mv /远程路径/旧证书名.pem /远程路径/{{ inventory_hostname }}-cert.pem args: creates: /远程路径/{{ inventory_hostname }}-cert.pem # 避免重复执行重命名 - name: 重命名密钥 ansible.builtin.command: mv /远程路径/旧密钥名.pem /远程路径/{{ inventory_hostname }}-key.pem args: creates: /远程路径/{{ inventory_hostname }}-key.pem
变量选择说明
inventory_hostname:对应你Ansible inventory文件中定义的主机名(比如myserver.datacenter.com),最常用。ansible_fqdn:目标主机的系统完全限定域名(需要Ansible收集facts,默认开启),如果inventory里是短名但你需要FQDN,用这个。ansible_hostname:目标主机的短主机名,不带域名后缀。
内容的提问来源于stack exchange,提问作者Rick van Oosterhout
相关产品推荐
相关产品推荐

