tri*_*oid 1 ansible ansible-2.x
我打算使用ansible来部署远程文件,因为远程位置只能用'root'写入,而不能用'root'下载本地文件,我使用以下剧本:
# in the main playbook
- hosts: master
user: ec2-user
sudo: yes
Run Code Online (Sandbox Code Playgroud)
# 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'
Run Code Online (Sandbox Code Playgroud)
但是 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
Run Code Online (Sandbox Code Playgroud)
为什么没有读到这一行,我应该怎么做才能修复它?
使用become: false, notsudo: false很久以前就被弃用了。
sudo 为了在播放定义中保持兼容性,声明仍然保留,但由于某种原因,自 Ansible 2.4 以来,任务中不再保留声明。
- 不检查任务中的声明(您可以添加foo: bar到任务中,它将被忽略)。这就是为什么您看不到任何错误/警告的原因。
- 另一方面,您应该收到有关sudo被弃用的警告。