我是Ansible的新手,所以这可能是一个愚蠢的问题。谢谢你的耐心。
我的子节点上有两个用户:ubuntu
和ansible
我的控制节点上有一个用户:ubuntu
我在子节点上创建了ansible
用户,以测试多个用户/隔离ansible。也许这不是个好主意?
我正在尝试将测试文件从控制节点复制到子节点。我以ansible
用户的身份进行连接(因为我在sudoers文件中授予了他们无密码的sudo,所以我不想为ubuntu用户这样做(。但是,我无法将文件复制到ubuntu
用户的主文件夹中。我可以复制到ansible
用户的主文件夹中。
我想做的事情可能吗?我找不到太多关于这方面的阅读,所以我猜我处理这件事的方式不对。。。有更好的方法吗?
这是我的战术手册:
---
- name: script transfer practice
hosts: devdebugs
remote_user: ansible
tasks:
- name: Copy file with owner and permissions
ansible.builtin.copy:
src: /home/ubuntu/files/test.txt
dest: /home/ubuntu/test.txt
owner: ubuntu
group: ubuntu
mode: '0600'
...
注意:它适用于dest/home/ansible/test.txt
。它不适用于dest/home/ubuntu/test.txt
我在子节点上创建了ansible用户,以测试多个用户/隔离ansible。也许这不是个好主意?
在目标主机上为您的部署指定一个具有完全升级权限的特定用户是运行ansible的最常见设置。
我想做的事情可能吗?
绝对不是。如果您已正确地将升级权限设置为您的责任用户,那么您在任务或游戏中所缺少的就是become: true
。在游戏级别,它将影响该游戏的所有任务:
---
- name: script transfer practice
hosts: devdebugs
remote_user: ansible
become: true
# here goes the rest of your play....
在任务级别,它只会影响给定的任务。
- name: Copy file with owner and permissions
ansible.builtin.copy:
src: /home/ubuntu/files/test.txt
dest: /home/ubuntu/test.txt
owner: ubuntu
group: ubuntu
mode: '0600'
become: true
正如@SipSeb在评论中所报告的,您还可以在运行时使用ansible(-playbook)
命令行上的-b/--become
标志为整个剧本设置begin标志。
我在这个上找不到太多阅读
可能是因为你是ansible的新手,不知道该找什么。对于这个特定的主题,一个很好的起点是理解易受攻击的权限升级
Ansible副本允许您在同一远程机器上将文件从一个目录复制到另一个目录。但您只能对文件执行此操作,不能复制目录。您必须使用remote_src参数让Ansible知道您的意图。
---
- hosts: servers
tasks:
- name: Copy file between directories on a remote server
copy:
src: /tmp/test.txt
dest: ~/test.txt
remote_src: yes
将目录从本地计算机复制到远程服务器您还可以使用Ansible复制模块复制文件夹/目录。如果"src"路径是一个目录,它将被递归复制。这意味着整个目录都被复制了。
- hosts: server
tasks:
- name: copy to the remote server
copy:
src:/sample.txt
dest:/root/