文章目录
预热:
使用ansible及其copy模块需要提前注意的概念:
A) 需要明确ansible管理管端,执行的用户
root: 拥有所有权限
普通用户:只拥有本身的权限
B)使用copy模块,涉及到copy master数据到remote,必须保证
ansible执行者,对这些ansible机器中数据文件,具有w
(可copy)权限
C)客户端(ansible被控端),必须确认client用户,对远程机器
具有对应权限
<client用户怎么确定???>
1)/etc/ansible/hosts中ansible_ssh_user设置
2)名字行执行:ansible web -m shell -a "xx" -u client用户
ansible copy模块使用:
copy模块参数说明:
参数 | 说明 |
---|---|
src | 被复制到远程主机的本地对象文件或者文件夹,可以是绝对路径,也可以是相对路径 |
dest | 被复制到远程主机的本地对象文件或者文件夹 |
mode | 复制对象的设定权限 |
owner | 复制对象的设定属主 |
group | 复制对象的设定属组 |
backup | 在文件存在的时候可以选择覆盖之前,将源文件备份.设定值:yes/no 缺省为yes |
force | 是否强制覆盖.设定值:yes/no 缺省为no |
复制文件到远程机器,并设置“属主/属组/权限”
ansible all -i hosts -m copy -a "src=./list dest=/root/ owner=china group=mockuser mode=0777"
复制文件到远程机器,并备份:
ansible all -i hosts -m copy -a "src=./list。file dest=/tmp backup=yes"
【参数说明】
hosts:类似/etc/ansible/hosts
backup=yes表示:远程机器如果存在旧的list.file那么先备份原来的
给远程机器创建文件,并写入数据:
# 在目录下创建文件并写入内容dest 参数对应的值必须是一个文件,而不能是一个路径。
ansible -i hosts all -m copy -a 'content="aaa\nbbb\n" dest=/tmp/my.file'