Ansible模块
Posted niuli1987
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible模块相关的知识,希望对你有一定的参考价值。
command
https://blog.csdn.net/dylloveyou/article/details/80412513
command 模块可以帮助我们在远程主机上执行命令
chdir # 切换目录 creates # 如果存在,则不执行后面的命令 removes # 如果存在,则执行后面的命令 ansible web -a ‘pwd‘ ansible web -a ‘ls /tmp‘ ansible web -a ‘creates=/tmp mdkir /data‘ #被忽略,因为/tmp存在 ansible web -a ‘creates=/tmp2 mkdir /data‘ #被执行,因为/tmp2目录不存在 ansible web -a ‘removes=/tmp2 mkdir /data2‘ #被忽略,因为/tmp2目录不存在 ansible web -a ‘removes=/tmp mkdir /data2‘ # 被执行,因为/tmp存在
shell
https://blog.csdn.net/dylloveyou/article/details/80443497
shell 模块可以帮助我们在远程主机上执行命令。与 command 模块不同的是,shell 模块在远程主机中执行命令时,会经过远程主机上的 /bin/sh
程序处理。
被管控机创建脚本文件 a.sh
#!/bin/bash
mkdir /wutenglan3
执行
ansible db -m shell -a ‘echo "1234"|passwd --stdin alex‘
ansible 10.0.0.143 -m shell -a "bash a.sh" # 执行脚本
ansible 10.0.0.143 -m shell -a "/root/a.sh"
ansible 10.0.0.143 -m shell -a "/root/a.py" # 执行python文件
如果出现这样问题,请修改被管理机文件权限 chmod +x a.py
[[email protected] ~]# ansible 192.168.14.164 -m shell -a‘/root/a.py‘ 192.168.14.164 | FAILED | rc=126 >> /bin/sh: /root/a.py: Permission deniednon-zero return code
ansible db -m script -a "/root/b.sh" # 执行管控机器上的文件
ansible web -m script -a "creates=/root/a.py /root/b.sh" # 判断被管控机器上的文件是否存在 ,如果存在,就跳过
ansible web -m script -a "removes=/root/a.py /root/b.sh" # 判断被管控机器上的文件是否存在 ,如果存在,就执行
dest #目标地址
src # 源地址
ansible db -m fetch -a "dest=/tmp src=/var/log/cron" # 复制远程被管控机器的文件道管控机器上,以被管控机的ip为目录,并保留原来的目录结构
copy (管理主机=>远程)
copy 模块的作用就是拷贝文件,将 ansible 管理主机上的文件拷贝到远程主机中。
backup # 备份
content # 内容
dest # 目的地址
group # 文件的属组
mode #文件的权限 R 4 W 2 X 1
owner # 文件的属主
src #文件的源文件地址
ansible web -m copy -a "dest=/tmp/f src=/etc/fstab" #复制单独文件
ansible web -m copy -a "src=/etc/init.d dest=/tmp" #复制文件目录
ansible web -m copy -a "src=/etc/init.d/ dest=/tmp" # 复制文件夹内的所有的文件
ansible db -m copy -a "dest=/tmp/b.sh src=/root/b.sh mode=644 owner=alex" # 复制文件并修改权限和属主
ansible db -m copy -a "src=/etc/init.d dest=/tmp owner=alex" # 修改文件夹的权限或者属主属组时,文件夹内的所有文件的权限也会被修改
# 通过md5来做校验
ansible db -m copy -a "dest=/tmp/b.sh src=/root/b.sh mode=644 owner=alex backup=yes" # 复制文件并将原来的文件做备份
ansible db -m copy -a "dest=/tmp/c.txt content=‘大弦嘈嘈如急雨,小弦切切如私语‘" # 直接往文件里面写入文件,是直接覆盖写入,慎用
access_time # 创建时间
group # 属组
mode # 权限
owner # 属主
path # 文件的路径
src # 源地址,只有在软连接和硬链接的时候才会使用
state # directory 目录 touch 文件 link 软连接 hard 硬链接 absent 删除
ansible db -m file -a "path=/alex state=directory" # 创建一个目录
ansible db -m file -a "path=/root/alex.txt state=touch" # 创建一个文件
ansible db -m file -a "src=/root/q.txt path=/tmp/q state=link" # 创建软连接,源地址是本机上的文件地址
ansible db -m file -a "path=/tmp/q state=absent" # 删除文件或者文件夹
补充: 链接
软连接 快捷方式 会跟源文件改变 ln -s
硬链接 硬盘的重复应用 会跟源文件改变 ln
复制 复制了一份 不会跟源文件改变 cp
以上是关于Ansible模块的主要内容,如果未能解决你的问题,请参考以下文章