运维效率倍增!Ansible Copy 模块必知必会操作
创作时间:
作者:
@小白创作中心
运维效率倍增!Ansible Copy 模块必知必会操作
引用
CSDN
1.
https://m.blog.csdn.net/sinat_28521487/article/details/145126009
在自动化运维中,文件分发是一个高频需求场景,例如上传配置文件、分发脚本等。Ansible提供了强大的copy模块,帮助我们快速完成文件的分发任务。本文将结合实际案例,详细讲解copy模块的用法,助你在生产中得心应手。
Copy模块简介
copy模块用于从Ansible控制节点向目标主机上传文件或目录。支持文件权限设置、内容替换等功能,是实现文件管理的利器。
ansible <pattern> -m copy \
-a "src=<source_path> dest=<destination_path> [other options]"
模块参数:
<pattern>
:指定要操作的主机或主机组,例如all、webservers。-m copy
:指定使用copy模块。src
:源文件路径,必须是控制节点上的文件。dest
:目标路径,指定文件在目标主机上的存放位置。owner
:文件所有者。group
:文件所属组。mode
:文件权限。content
:直接指定文件内容。
基础用法示例
上传文件到远程主机
在控制节点的/etc/ansible/playbooks/
目录下,有一个config.txt
文件需要分发到所有目标主机的/etc/app/
目录。
- Playbook语法示例:
- name: 使用 copy 模块上传文件
hosts: test
tasks:
- name: 上传配置文件到目标主机
ansible.builtin.copy:
src: /etc/ansible/playbooks/config.txt
dest: /home/config.txt
owner: root
group: root
mode: '0644'
命令运行:
ansible-playbook -i hosts copy_example.yml
- ad-hoc语法示例:
ansible test -m copy \
-a "src=/etc/ansible/playbooks/config.txt dest=/home/config.txt owner=root group=root mode=0664"
结果:
文件
config.txt
被成功上传到目标主机的/etc/app/
目录,权限设置为0644
,并且把所有者和组设置为root。
多环境文件分发
在生产环境中,需要将不同的配置文件分发到开发、测试和生产环境。配置文件根据环境名称存储在控制节点的不同目录中:
/etc/ansible/configs/dev/config.txt
/etc/ansible/configs/test/config.txt
/etc/ansible/configs/prod/config.txt
动态路径分发
Playbook 示例:
- name: 多环境配置文件分发
hosts: all
vars:
env: "{{ inventory_hostname | regex_replace('(.*)-(.*)', '\\2') }}" # 提取环境名
tasks:
- name: 根据环境分发配置文件
ansible.builtin.copy:
src: "/etc/ansible/configs/{{ env }}/config.txt"
dest: "/etc/app/config.txt"
owner: root
group: root
mode: '0644'
hosts文件示例:
[dev]
dev-server-01 ansible_host=192.168.1.101
[test]
test-server-01 ansible_host=192.168.1.102
[prod]
prod-server-01 ansible_host=192.168.1.103
命令运行:
ansible-playbook -i hosts multi_env_copy.yml
结果:
每个环境的主机接收到对应的配置文件:
dev-server-01
:收到dev/config.txt
。test-server-01
:收到test/config.txt
。prod-server-01
:收到prod/config.txt
。
替换目标文件内容
在上传文件时,需要动态替换其中的占位符,例如替换为主机名或IP地址。
使用content
参数
Playbook 示例:
- name: 动态生成配置文件
hosts: all
tasks:
- name: 根据模板生成配置文件
ansible.builtin.copy:
dest: /etc/app/config.txt
content: |
主机名:{{ inventory_hostname }}
IP地址:{{ ansible_default_ipv4.address }}
owner: root
group: root
mode: '0644'
命令运行:
ansible-playbook -i hosts dynamic_content.yml
结果:
目标主机/etc/app/config.txt
的内容如下:
主机名:dev-server-01
IP地址:192.168.1.101
copy
模块 vs template
模块
copy
模块虽然简单高效,但在处理动态内容时需要通过content
参数显式定义。而template
模块专为动态内容设计,结合Jinja2
模板更灵活。
总结
copy
模块是Ansible文件分发的基础工具,无论是单文件上传、多环境管理,还是动态内容生成,它都能快速满足需求。在实际运维中,根据场景选择适当的方法,搭配其他模块使用,可以大大提高自动化效率。快用copy
模块在你的工作中试一试吧!
热门推荐
【唐诗小学堂】李白《月下独酌》
从平面晶体管到FinFET的演变
进口电磁流量计与国产电磁流量计:性能对比及适用场景分析
赵孟頫《万寿曲》:字势挺拔,笔法精美,变化多端
判断结核性胸膜炎最简单方法是什么
3dm是什么文件格式?3dm文件用什么软件打开?
离岸人民币是什么意思?离岸人民币和在岸人民币有什么区别?
高温补贴申请指南:了解政策、符合条件的你快来申请吧!
赵云简介 赵云生平
落水时羽绒服能救命吗?警惕冬季冰面上的隐患,科学救援——
网络诈骗受害者怎么维护自己权益
空腹血糖7.1、服糖后两小时10.5、糖化血红蛋白5.6%,是糖尿病吗
拔智齿后食物残渣掉进伤口怎么办?温盐水漱口|轻柔刷牙|及时就医!
咖啡豆化学成分含量组成和功效详细分析 精品咖啡基础常识
开关二极管应用注意事项有哪些?
健身锻炼的运动量一般用运动强度与的乘积来表示
《浣溪沙·一叶扁舟卷画帘》的创作背景是什么?该如何赏析呢?
科普 | 杀神经即根管治疗?解答你心中的疑问
补牙前使用的白色硬药是什么?
政协委员提交治理“电鸡乱停放”提案
光伏并网逆变器的分类及原理
王者荣耀匹配机制即将优化,重点解决"鸡爪流"等现象
物业收费难题破解之道:以物业管理软件引领智慧物业新风尚
临床试验背书保健品品牌,如何重塑消费者的信任?
韭菜种子种多久发芽,土壤和温度适宜的话需要一周左右
艾滋病非丙类:揭开传染病分类的神秘面纱
韩熙载简介
大于20%!白云鄂博萤石资源精细化利用获突破
防关联浏览器:选择最佳的隐私保护工具
替雷利珠单抗治疗胃癌一般打几疗程