bash - 在ansible中以root身份登录后执行任务
问题描述
在我使用 ssh 连接后,我试图随后运行一个任务。我在我的剧本中使用这个连接
- name: connect using password # task 1; this task set/connect me as root
expect:
command: ssh -o "StrictHostKeyChecking=no" myuser@********
responses:
"password:":
-my password
-my password
delegate_to: localhost
该任务很好,我可以看到我已连接。现在的问题是,当我尝试运行后续任务时,例如:
- name: copy folder # task 2 in the same playbook
copy:
src: "files/mylocalfile.txt"
dest: "etc/temp"
mode: "0777"
我有以下消息:
"msg: etc/temp not writable"
如何以连接的 root 身份继续执行剩余的任务task1
?
解决方案
我相信这可能不是一个可靠的问题,而是一个 linux 问题。您的用户在 /etc/wheel 中吗?
Ansible 具有指令become
,如果允许您连接的用户升级权限,它将允许您以 root 身份执行任务。您想以特权运行的任务类似于:
- name: copy folder # task 2 in the same playbook
become: yes
copy:
src: "files/mylocalfile.txt"
dest: "etc/temp"
mode: "0777"
become_user
如果您需要指定要运行任务的用户,则可以使用,如果您有特权用户的密码,则可以在运行 ansible-playbook 时要求 ansible 提示输入密码,使用--ask-become-password
.
以下链接提供了有关 ansible 中权限提升的文档:
https://docs.ansible.com/ansible/latest/user_guide/become.html
推荐阅读
- spring - Vaadin 14 和 Push:在请求线程之外访问 Spring SecurityContext 和 Authentication
- javascript - 获取多个父母的特定孩子数据
- flutter - 颤动如何从 SfRadialGauge 中删除空间或填充
- database - 在 HomeController (Laravel 8) 中按类别名称获取帖子
- spring - 为什么在 Spring 中创建一直发生错误?
- angular - 自定义 ag gird 中的最后一行
- key-value - 如何将 consul 与 cloudflare 连接?
- reactjs - 如何在 Electron 和 CRA 的生产环境中使用 loadUrl 或 loadFile?
- scala - `Coder[P <: Product]`的Scala 2宏类型类派生以错误`P不带参数`结束
- discord.py - 如何使用 discord.py 获取主(默认)文本通道?