为什么Ansible忽略了我的'sudo:False'?

问题描述 投票:0回答:2

我打算用ansible来部署一个远程文件,因为远程位置只能用'root'写,而本地文件不能用'root'下载,我使用下面的playbook:

# in the main playbook

- hosts: master
  user: ec2-user
  sudo: yes
# in role definition

# download only in the ansible master node
- local_action: get_url url={{ hadoop_mirrors|random }}/hadoop-{{ hadoop_version }}/hadoop-{{ hadoop_version }}.tar.gz dest=/opt/hadoop-{{ hadoop_version }}.tar.gz force=no
  sudo: False
  register: result
  until: result|success
  retries: 5
  delay: 2
  when: hadoop_type_of_node == 'master'

然而,Ansible似乎无法读取sudo: False这一行。当我运行这个剧本时,我仍然遇到这个错误:

TASK [ansible-role-hadoop : get_url] **************************************************************************************************
FAILED - RETRYING: ansible-role-hadoop : get_url (5 retries left).
FAILED - RETRYING: ansible-role-hadoop : get_url (4 retries left).
FAILED - RETRYING: ansible-role-hadoop : get_url (3 retries left).
FAILED - RETRYING: ansible-role-hadoop : get_url (2 retries left).
FAILED - RETRYING: ansible-role-hadoop : get_url (1 retries left).
fatal: [54.201.26.110 -> localhost]: FAILED! => {"attempts": 5, "changed": false, "module_stderr": "sudo: a password is required\n", "module_stdout": "", "msg": "MODULE FAILURE", "rc": 1}
    to retry, use: --limit @/home/peng/git/datapassport/clusterops/ansible/deploy/master.retry

为什么不读这行,我该怎么做才能修复它?

ansible ansible-2.x
2个回答
2
投票

使用become: false,而不是很久以前弃用的sudo: false

sudo声明仍然保留在播放定义中的兼容性,但由于某些原因,自Ansible 2.4以来未在任务中维护。


- 没有检查任务中的声明(您可以将foo: bar添加到任务中,它将被忽略)。这就是为什么你没有看到任何错误/警告。

- 另一方面,你应该得到关于sudo被弃用的警告。


1
投票

Privilege Escalation在Ansible管理很重要。变成关键字是此功能的运营商。

4种常见用途:

  • 设置为'true'/'yes'以激活权限提升。
  • become_user设置为具有所需权限的用户 - 您'成为'的用户,而不是您登录的用户。并不意味着变成:是的,允许将其设置为主机级别。
  • become_method(在播放或任务级别)覆盖在ansible.cfg中设置的默认方法,设置为sudo / su / pbrun / pfexec / doas / dzdo / ksu
  • become_flags(在播放或任务级别)允许为任务或角色使用特定标志。一个常见用途是在将shell设置为no login时将用户更改为nobody。

所以, sudo:是的 ,像这样使用become:

- hosts: master
  user: ec2-user
  become: false
© www.soinside.com 2019 - 2024. All rights reserved.