Ansible学习笔记5

这篇具有很好参考价值的文章主要介绍了Ansible学习笔记5。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

copy模块:(重点)

copy模块用于对文件的远程拷贝(如把本地的文件拷贝到远程主机上。)

在master的主机上准备一个文件,拷贝文件到group1的所有主机上。

这个用的频率非常高,非常有用的一个模块。主要功能是统一修改配置文件。

[root@localhost ~]# ansible group1 -m copy -a "src=/etc/hosts dest=/etc/hosts"
192.168.17.105 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": true,
    "checksum": "ae3c3e4f757591751a520e8a4bba45490e6c3164",
    "dest": "/etc/hosts",
    "gid": 0,
    "group": "root",
    "md5sum": "96e65e8b17fb861014e3ebfb1bff65b3",
    "mode": "0644",
    "owner": "root",
    "size": 226,
    "src": "/root/.ansible/tmp/ansible-tmp-1693368934.83-2354-136222982931833/source",
    "state": "file",
    "uid": 0
}
192.168.17.106 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": true,
    "checksum": "ae3c3e4f757591751a520e8a4bba45490e6c3164",
    "dest": "/etc/hosts",
    "gid": 0,
    "group": "root",
    "md5sum": "96e65e8b17fb861014e3ebfb1bff65b3",
    "mode": "0644",
    "owner": "root",
    "size": 226,
    "src": "/root/.ansible/tmp/ansible-tmp-1693368934.83-2356-71888655051337/source",
    "state": "file",
    "uid": 0
}

然后到agent1和agent2的机器上检查/etc/hosts文件内容都进行了覆盖更新。

域名跟主机名的区别:(域名是外网的,,主机名是内网的。)

域名是公网的唯一名字,主机名是内网的名字。

目前自建DNS做域名解析已经很少了,但可以通过DNS解析主机名来实现多台服务器的解析。

以后,我们就可以使用ansible的copy和hostname模块,轻松实现了服务器的主机名管理,DNS也不需要搭建了。

[root@localhost ~]# ansible group1 -m copy -a "src=/etc/fstab dest=/tmp/222"
192.168.17.106 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": true,
    "checksum": "e4d20d971638d2d2169c6818bfea2b7d064d284e",
    "dest": "/tmp/222",
    "gid": 0,
    "group": "root",
    "md5sum": "9048d752264ab2533e2cb774c7ddef4a",
    "mode": "0644",
    "owner": "root",
    "size": 465,
    "src": "/root/.ansible/tmp/ansible-tmp-1693369734.13-2410-126910575557982/source",
    "state": "file",
    "uid": 0
}
192.168.17.105 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": true,
    "checksum": "e4d20d971638d2d2169c6818bfea2b7d064d284e",
    "dest": "/tmp/222",
    "gid": 0,
    "group": "root",
    "md5sum": "9048d752264ab2533e2cb774c7ddef4a",
    "mode": "0644",
    "owner": "root",
    "size": 465,
    "src": "/root/.ansible/tmp/ansible-tmp-1693369734.13-2408-266313468027161/source",
    "state": "file",
    "uid": 0
}

Ansible学习笔记5,Ansible,ansible,linux

这里面有个diff比较的机制在里面。这个要注意下的。

如何判断一个文件有没有变化:可以使用md5sum来进行判断,如果文件内容没有发生变化,那么它的值是不会发生变化的。

force=no:

[root@localhost tmp]# ansible group1 -m copy -a "src=/etc/inittab dest=/tmp/222 force=no"
192.168.17.105 | SUCCESS => {
    "changed": false,
    "dest": "/tmp/222",
    "src": "/etc/inittab"
}
192.168.17.106 | SUCCESS => {
    "changed": false,
    "dest": "/tmp/222",
    "src": "/etc/inittab"
}

说明:如果/tmp/222存在,则不覆盖。这个就是force=no的作用。

force参数控制是否强制覆盖。force=yes:如果目标文件已存在,则会强制覆盖。

使用backup参数控制是否备份文件:

backup=yes:表示如果拷贝的文件内容与原文件内容不一样,则会备份一份。

[root@localhost tmp]# ansible group1 -m copy -a "src=/etc/inittab dest=/tmp/222 backup=yes"
192.168.17.106 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "backup_file": "/tmp/222.3124.2023-08-30@12:47:58~",
    "changed": true,
    "checksum": "e285e50c4dd88d8a2f644dd1750f60400ca60f94",
    "dest": "/tmp/222",
    "gid": 0,
    "group": "root",
    "md5sum": "66a88d6c4d693170753ea3382f8bc150",
    "mode": "0644",
    "owner": "root",
    "size": 511,
    "src": "/root/.ansible/tmp/ansible-tmp-1693370880.02-2606-93307506651983/source",
    "state": "file",
    "uid": 0
}
192.168.17.105 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "backup_file": "/tmp/222.3003.2023-08-30@12:47:58~",
    "changed": true,
    "checksum": "e285e50c4dd88d8a2f644dd1750f60400ca60f94",
    "dest": "/tmp/222",
    "gid": 0,
    "group": "root",
    "md5sum": "66a88d6c4d693170753ea3382f8bc150",
    "mode": "0644",
    "owner": "root",
    "size": 511,
    "src": "/root/.ansible/tmp/ansible-tmp-1693370879.99-2604-281117331564526/source",
    "state": "file",
    "uid": 0
}

Ansible学习笔记5,Ansible,ansible,linux

在agent1机器上,如果内容不一直,先做一份备份。这个场景也是挺重要的。

如果怕出问题,可以做一个相应的备份。

copy模块需要注意拷贝目录后面是否带有"/"符号。拷贝的时候也可以修改属性。

Ansible学习笔记5,Ansible,ansible,linux

练习:在master主机上配置好所有的yum源,然后拷贝所有的group1的远程主机上。(要求目录内的内容完全一致。)

[root@localhost tmp]# ansible group1 -m file -a "path=/etc/yum.repos.d/ state=absent"
192.168.17.106 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": true,
    "path": "/etc/yum.repos.d/",
    "state": "absent"
}
192.168.17.105 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": true,
    "path": "/etc/yum.repos.d/",
    "state": "absent"
}
[root@localhost tmp]# ansible group1 -m copy -a "src=/etc/yum.repos.d dest=/etc/"
192.168.17.105 | CHANGED => {
    "changed": true,
    "dest": "/etc/",
    "src": "/etc/yum.repos.d"
}
192.168.17.106 | CHANGED => {
    "changed": true,
    "dest": "/etc/",
    "src": "/etc/yum.repos.d"
}

源是目录,是拷贝目录,有个小细节,就是最后要加"/"。rsync加/和不加/是有区别的。

[root@localhost tmp]# ansible group1 -m copy -a "src=/etc/yum.repos.d/ dest=/etc/yum.repos.d/"
192.168.17.105 | SUCCESS => {
    "changed": false,
    "dest": "/etc/yum.repos.d/",
    "src": "/etc/yum.repos.d/"
}
192.168.17.106 | SUCCESS => {
    "changed": false,
    "dest": "/etc/yum.repos.d/",
    "src": "/etc/yum.repos.d/"
}

实现两个文件夹的内容完全一致,那可以先把这个文件整个进行删除,然后再进行copy。这个思路。文章来源地址https://www.toymoban.com/news/detail-693351.html

到了这里,关于Ansible学习笔记5的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ansible学习笔记14

    实现多台的分离实现: 剧本执行情况:  在105的机器上创建了test1目录。 在106的机器上创建了test2目录。 搭建nfs系统,并在另外一台机器上进行挂载操作。 检查已经挂在成功:

    2024年02月10日
    浏览(27)
  • Ansible学习笔记(一)

    官方网站:https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html Ansible是一个配置管理和配置工具,类似于Chef,Puppet或Salt。这是一款很简单也很容易入门的部署工具,它使用SSH连接到服务器并运行配置好的任务,服务器上不用安装任何多余的软件,只需要开启ssh,

    2024年02月11日
    浏览(20)
  • Ansible学习笔记2

    Ansible是Python开发的自动化运维工具,集合了众多运维工具(Puppet、cfengine、chef、func、fabric)的优点, 实现了批量系统配置,批量程序部署、批量运行命令等功能。 特点: 1)部署简单; 2)默认使用ssh进行管理,基于Python里的paramiko模块开发; 3)管理端和被管理端不需要启

    2024年02月11日
    浏览(27)
  • Ansible学习笔记10

    1、在group1的被管理机里的mariadb里创建一个abc库; 1)     然后我们到agent主机上进行检查: 可以看到数据库已经创建成功。 再看几个其他命令: script模块: script模块用于在远程主机上执行本地脚本。 脚本在master上,但是可以在agent服务器上执行。 说明:上面这个创建数据

    2024年02月10日
    浏览(22)
  • Ansible学习笔记11

    Command和Shell模块: 两个模块都是用于执行Linux命令的,这个对于命令熟悉的工程师来说,用起来非常high。 Shell模块跟Command模块差不多(Command模块不能执行一类$HOME、 、、| 等符号,但是Shell是可以的。) 示例一: 检查结果: 删除用户: 检查结果: 示例二: 示例三: 说明

    2024年02月10日
    浏览(30)
  • Ansible学习笔记8

    group模块: 创建一个group组: 检查group组的创建: 默认创建用户,并将bbb添加到group5000这个组中。 检查:  把用户添加到一系列组中。 只有先删除bbb用户,然后再删除组: 操作的过程中,还要注意删除用户的家目录。 cron模块: cron模块,用于管理周期性时间任务。 创建一

    2024年02月10日
    浏览(22)
  • Ansible学习笔记4

    file模块: file模块用于对文件相关的操作(创建、删除、属性修改、软链接等)touch是创建。 创建目录,并更改权限:directory: 删除文件:absent absent:没有、缺席、缺乏的意思。 删除目录: absent:目录将会递归被删除。文件和软链接将会unlinked。 创建软链接: 我们看到软

    2024年02月10日
    浏览(29)
  • linux————ansible

    目录 一、认识自动化运维 自动化运维主要关注的方面 常见的开源自动化运维工具 二、ansible 特点 环境 免密ssh​编辑 管理机hd1 安装ansible 测试连接性 一、服务器分组 二、ansible模块 查看所有支持的模块 hostname模块 file模块 stat模块 copy模块 fetch模块 user模块 group模块 cron模块

    2024年02月09日
    浏览(23)
  • Linux Ansible角色介绍

    目录 角色的基础结构 角色来源与应用 Galaxy角色 系统角色 自定义角色 角色(roles)用于层次化、结构化地组织playbook roles通过标准化目录结构来装载变量文件、tasks(模块任务)、handlers(处理程序)、jinja2模板等其他资源,然后在play中调用该角色,就能够执行 定义roles可以

    2024年02月01日
    浏览(26)
  • 【Linux】Ansible 脚本 playbook 剧本

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 playbooks 本身由以下各部分组成 (1)Tasks:任务,即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行 (2)Variables:变量 (3)Templates:模板 (4)Handlers:处理器,当changed状态条件满足时

    2024年02月14日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包