首页 > 解决方案 > 在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

标签: bashansibleansible-tower

解决方案


我相信这可能不是一个可靠的问题,而是一个 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


推荐阅读