网站建设及政务公开工作总结,宿松做网站,网络推广公司怎么报税,网页 制作网站1. 简述
先从我自身的情况来说#xff0c;我不是运维人员#xff0c;并且对linux操作也不是特别熟悉#xff0c;所以工作中我使用ansible基本就是在平常的自动化部署中#xff0c;而使用最多的模块就是copy模块。我使用copy模块也主要是来替换生产环境的配置文件。所以我不是运维人员并且对linux操作也不是特别熟悉所以工作中我使用ansible基本就是在平常的自动化部署中而使用最多的模块就是copy模块。我使用copy模块也主要是来替换生产环境的配置文件。所以这里我主要介绍一下copy模块。说实话对于其他模块我接触的也不多。
2.copy 模块的用法
2.1 官方概念
我们先看官方文档怎么说的copy这个模块 The copy module copies a file from the local or remote machine to a location on the remote machine. Use the [fetch] module to copy files from remote locations to the local box. If you need variable interpolation in copied files, use the [template] module. Using a variable in the content’ field will result in unpredictable output. For Windows targets, use the [win_copy] module instead.
2.2 参数描述
参数描述src指定被copy的文件或目录dest指定文件将被拷贝到远程主机的哪个目录中force当远程主机的目标路径中已经存在同名文件并且与ansible主机中的文件内容不同时是否强制覆盖可选值有yes和no默认值为yes表示覆盖如果设置为no则不会执行覆盖拷贝操作远程主机中的文件保持不变。backup当远程主机的目标路径中已经存在同名文件并且与ansible主机中的文件内容不同时是否对远程主机的文件进行备份可选值有yes和no当设置为yes时会先备份远程主机中的文件然后再将ansible主机中的文件拷贝到远程主机。mode指定文件拷贝到远程主机后的权限比如你想将权限设置为”rw-r–r–“则可以使用mode0644表示如果你想要在user对应的权限位上添加执行权限则可以使用modeux表示
3. 示例
3.1 将主机文件复制到远程机器上某个目录下
more test/a.txt执行copy命令
ansible all -m copy -a src/test/a.txt dest/test/复制成功了。 这个时候如果我们再执行一次可以看到结果发生了变化 在远程机器上也看到了这个文件
3.2 在主机上将文本内容复制到远程机器上文件中
3.2.1 执行命令
ansible all -m copy -a contentqqqqq\nwwww\n dest/test2/a_1.txt3.2.2 结果异常
FAILED! { “ansible_facts”: { “discovered_interpreter_python”: “/usr/bin/python” }, “changed”: false, “checksum”: “a9dd8f985a0e22e8ce07dc2e9ec61d92fdeb96f9”, “msg”: “Destination directory /test2 does not exist” } 这里说是远程主机没有这个目录是不是很尴尬啊。
3.2.3 问题解决
这个时候需要使用file模块先创建目录
ansible all -m file -a path/test2/ statedirectory3.2.4 重新执行创建文件命令 3.2.4 重新执行创建文件命令 3.2.5 验证 远程机器上有了这个文件文件中也是我们的内容。
3.3 将主机文件复制到远程机器上某个目录下如果远程主机中已经存在该文件并且文件内容与 ansible 主机中的源文件的内容不一致则不执行拷贝操作远程主机中的文件内容也不会被改变
3.3.1 修改主控机文件 3.3.2 执行命令
ansible all -m copy -a src/test/a.txt dest/test/ forceno3.3.3 结果验证
通过上面的结果我们看到文件没有改变成功。我们现在去远程机器上看一下情况。 文件内容确实没有改变。
3.4 将主机文件复制到远程机器上某个目录下如果远程主机中已经存在该文件并且文件内容与 ansible 主机中的源文件的内容不一致则执行拷贝操作远程主机中的文件内容也会被改变并且在远程文件夹中会生成一个备份文件
3.4.1 执行命令
ansible all -m copy -a src/test/a.txt dest/test/ backupyes3.4.2 结果验证
从上面的返回结果我们看到文件已经改变了。现在去远程机器上看一下 文件被改变并且生成了备份文件验证符合预期。
3.5 copy文件时加入权限
3.5.1 执行命令
ansible all -m copy -a src/test/a.txt dest/test/ mode04213.5.2 结果验证
执行前 执行后 我们看到发生了变化符合预期。
3.5.3 linux权限小知识
可能有些同学对这个数字权限不是很清楚这里简单说一下。 在Linu系统下用命令ll或者ls -la的时候会看到前面-rw-rw-r–一串字符 rread 代表读取权限 用数字4表示 wwrite 代表写入权限 用数字2表示 xexcute 代表执行权限 用数字1表示
读取、写入、运行三项权限可以用数字表示就是r4,w2,x1。所以-r—w—x用数字表示成421。 常用的一些Linux文件权限如下 444 r–r–r– 600 rw------- 644 rw-r–r– 666 rw-rw-rw- 700 rwx------ 744 rwxr–r– 755 rwxr-xr-x 777 rwxrwxrwx 以755为例
1-3位7等于421rwx所有者具有读取、写入、执行权限 4-6位5等于410r-x同组用户具有读取、执行权限但没有写入权限 7-9位5同上也是r-x其他用户具有读取、执行权限但没有写入权限。
4.小结
对于copy模块我就写一下我自己平时常用的仅供参考。