如何解决ansible查找插件特权提升似乎不起作用
似乎ansible查找插件不遵守特权升级,而且我不清楚这是否是设计使然。
我一直在寻找答案,但是尽管我发现了许多类似的问题,但我还没有看到一个似乎可以回答以下剧本为何如此行为的问题。
---
- hosts: localhost
become: 1
tasks:
- name: cat file
command: cat /home/bob/.ssh/id_rsa.pub
register: cat
- debug:
msg: |
dog: {{ cat.stdout }}
- name: add the variable
set_fact:
rsa_key: "{{ lookup('file','/home/bob/.ssh/id_rsa.pub') }}"
delegate_to: localhost
运行此播放的结果是命令模块“起作用”,而查找模块不起作用:
PLAY [localhost] *************************************************************************************************************************************************************************************************************************************************************
TASK [Gathering Facts] *******************************************************************************************************************************************************************************************************************************************************
ok: [localhost]
TASK [cat file] **************************************************************************************************************************************************************************************************************************************************************
changed: [localhost]
TASK [debug] *****************************************************************************************************************************************************************************************************************************************************************
ok: [localhost] => {
"msg": "dog: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCl+xAFC2hwsLaWvCEOFHEz96AU8ltF1fA8ZNQp9Mkl6FFZUEFu2rAl+imSXm+xAPrWhqOoLgkYZKq6qAsqG3SqSisrr4uHGdC4F/5NBlgR7OqfAU76VfJRmcq4F01caXBJVuciZ0EX7KQcC6ixNpZweLPoRDBNntDJnDKVIbx8h7w3qAYRbYOsLv6OT7BLgldSrJSOYBOJ0/SLZIUDAvewPnPppkwZgMAMV12bXHzn5Imsn9S6K5riZ/n3oenOgW787w5XQI0xKsxO6g4NjzciMELafXfoq07+Gz53NMyo9/DHag2w8y6m+Js4axazMFFgcnS3Hrbc/tSejvarEynEktN1/+JTu8eEdKxtZYr2ez55SW+MOxZr14isQJDc0btduO4yJfXvJ6KooULVbqZyVnmun6pKgecsCDTy6kYQVV0oJgpixiquoLAMPN+nKzufaSgGTRbKnQuf+7w6X94ci3iIkpS7qxvQsZ/P61q7uQjhtsmG6qsk6/M9nIruJY0= ansible-generated on rh1.local.home\n"
}
TASK [add the variable] ******************************************************************************************************************************************************************************************************************************************************
[WARNING]: Unable to find '/home/bob/.ssh/id_rsa.pub' in expected paths (use -vvvvv to see paths)
fatal: [localhost]: FAILED! => {"msg": "An unhandled exception occurred while running the lookup plugin 'file'. Error was a <class 'ansible.errors.AnsibleError'>,original message: could not locate file in lookup: /home/bob/.ssh/id_rsa.pub"}
PLAY RECAP *******************************************************************************************************************************************************************************************************************************************************************
localhost : ok=3 changed=1 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
我正在一个不是“ bob”的用户下运行此程序,并且使用begin_user = root以及begin_method = sudo。任何想法或确认确实查找插件都会忽略特权升级语句的建议,将不胜感激。
解决方法
仔细查看标准插件的实际代码和命令,我发现:
与所有查找一样,此操作在运行剧本的用户上运行在Ansible主机上,并且“ become”不适用,目标文件必须可由剧本用户读取,或者如果目标文件不存在,则必须由剧本用户读取必须具有足够的特权才能创建它。 (因此,例如,除非以根用户身份运行整个剧本,否则尝试写入/ etc等区域的尝试将失败。)
在密码插件内。因此,查找插件确实忽略了“成为”升级指令,因此是“设计使然”的这种行为,尽管我发现它相当直观,没有充分的文档记录,并且不喜欢它,因为它迫使我编写丑陋的代码来解决它;- )。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。