ansible模块功能及搭建lnmp架构


ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。以下内容为常用模块的详细整理。

批量管理模块功能

shell模块 —万能模块

作用:可以实现批量管理主机信息

PS:command模块有缺陷,无法识别特殊符号信息:"$HOME" "<"  ">"  "|"  ";" "&"
模块常用指令参数:
creates: 判断一个文件是否存在,如果存在就不执行相应命令
removers:判断一个文件是否存在,如果存在就执行相应命令
chdir:	 执行命令前,进行目录一个切换

PS:
(1)万能模块在使用时缺陷,不具有幂等性(第一次执行结果和多次执行结果相同)
	当不具有幂等性时,会对剧本编写产生问题???
(2)操作步骤可能会过于繁琐

批量执行脚本功能:
第一个历程:编写脚本
[root@ansible project]# vim test.sh 
[root@ansible project]# cat test.sh 
#!/bin/bash
echo "hello world"
[root@ansible project]# chmod +x test.sh
[root@ansible project]# ./test.sh 
hello world

第二个历程:需要将脚本文件分发给所有主机
[root@ansible project]# ansible webservers -m copy -a "src=/opt/project/test.sh dest=/opt/project"
192.168.137.135 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "checksum": "6aa73e56214888452816de465fa1c8329ac9e119",
    "dest": "/opt/project",
    "gid": 0,
    "group": "root",
    "mode": "0644",
    "owner": "root",
    "path": "/opt/project",
    "size": 85,
    "state": "file",
    "uid": 0
}
192.168.137.136 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "checksum": "6aa73e56214888452816de465fa1c8329ac9e119",
    "dest": "/opt/project",
    "gid": 0,
    "group": "root",
    "mode": "0644",
    "owner": "root",
    "path": "/opt/project",
    "size": 85,
    "state": "file",
    "uid": 0
}

第三个历程:设置脚本文件权限
[root@ansible project]# ansible webservers -m file -a "path=/opt/project mode=755"
192.168.137.136 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "gid": 0,
    "group": "root",
    "mode": "0755",
    "owner": "root",
    "path": "/opt/project",
    "size": 85,
    "state": "file",
    "uid": 0
}
192.168.137.135 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "gid": 0,
    "group": "root",
    "mode": "0755",
    "owner": "root",
    "path": "/opt/project",
    "size": 85,
    "state": "file",
    "uid": 0
}

第四个历程:执行脚本文件
[root@ansible project]# ansible webservers -m shell -a "/opt/project"
192.168.137.135 | CHANGED | rc=0 >>
hello world
192.168.137.136 | CHANGED | rc=0 >>
hello world

script模块 —脚本模块

作用:专门批量执行脚本功能
第一个历程:编写脚本
第二个历程:批量执行脚本
[root@ansible project]# ansible webservers -m script -a "/opt/project/test.sh"
192.168.137.135 | CHANGED => {
    "changed": true,
    "rc": 0,
    "stderr": "Shared connection to 192.168.137.135 closed.\r\n",
    "stderr_lines": [
        "Shared connection to 192.168.137.135 closed."
    ],
    "stdout": "hello world\r\n",
    "stdout_lines": [
        "hello world"
    ]
}
192.168.137.136 | CHANGED => {
    "changed": true,
    "rc": 0,
    "stderr": "Shared connection to 192.168.137.136 closed.\r\n",
    "stderr_lines": [
        "Shared connection to 192.168.137.136 closed."
    ],
    "stdout": "hello world\r\n",
    "stdout_lines": [
        "hello world"
    ]
}

copy模块 —分发数据模块

作用:可以实现批量分发数据文件
常用参数指令:
src:				指定要分发文件数据信息
dest:				将分发文件保存到哪个目标路径
owner:				指定文件分发后的属主信息
group:				指定文件分发后的属组信息
mode:				指定文件分发后的权限信息
backup:				当文件名称重复时,会将原文件备份,再进行覆盖
content:			在被管理主机上创建文件并设置信息内容
directory_mode:		可以递归设置目录中数据权限(只是针对复制目录时)
force:(了解)		 可以避免相同名称文件覆盖
					force=yes 默认设置 表示会覆盖
					force=no  不会对相同文件进行覆盖
remote_src:			将被管理主机上文件进行本地备份保存
validate:			验证分发后的文件合法性
123456789101112131415

实践操作:

(1)批量分发文件信息,并修改文件属主 属组 和权限信息

[root@ansible project]# ansible webservers -m copy -a "src=/opt/project/abc.txt dest=/tmp/ mode=666 owner=tom group=tom"
192.168.137.135 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "checksum": "1a82a29241cefb4e3e6599a809e234e580101003",
    "dest": "/tmp/abc.txt",
    "gid": 1001,
    "group": "tom",
    "mode": "0666",
    "owner": "tom",
    "path": "/tmp/abc.txt",
    "size": 14,
    "state": "file",
    "uid": 1001
}
192.168.137.136 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "checksum": "1a82a29241cefb4e3e6599a809e234e580101003",
    "dest": "/tmp/abc.txt",
    "gid": 1001,
    "group": "tom",
    "mode": "0666",
    "owner": "tom",
    "path": "/tmp/abc.txt",
    "size": 14,
    "state": "file",
    "uid": 1001
}

2)在被管理主机上创建文件信息,并设置文件的内容

[root@ansible ~]# ansible webservers -m copy -a "content=hello_dog dest=/tmp/abc.txt"
192.168.137.136 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "checksum": "7f3d38f956a244629bac0f6c5ef9b63d677c20aa",
    "dest": "/tmp/abc.txt",
    "gid": 1001,
    "group": "tom",
    "md5sum": "b168d7d7ec5af35034436a2f0aa34ec7",
    "mode": "0666",
    "owner": "tom",
    "size": 9,
    "src": "/root/.ansible/tmp/ansible-tmp-1666505224.513224-2159-172028776136002/source",
    "state": "file",
    "uid": 1001
}
·······
[root@ansible ~]# ansible webservers -m shell -a " cat /tmp/abc.txt "
192.168.137.136 | CHANGED | rc=0 >>
hello_dog
192.168.137.145 | CHANGED | rc=0 >>
hello_dog
192.168.137.135 | CHANGED | rc=0 >>
hello_dog

(3)将目录信息复制到被管理主机上,并且将目录以及下面所有内容权限统一改为777

1

利用copy模块分发目录信息时:

目录后面有 / 表示将目录下面数据内容进行整体分发

目录后面没有 / 表示将目录下面数据内容以及目录本身都做分发

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值