一千萬個為什麽

搜索

用奇怪的權限創建Ansible tmp文件



我有一個可以簡化為這樣的可靠劇本:

- name: Provision server                  
  hosts: all_hosts                                                           
  become: yes                                                                                                                                     
  roles:                                                                                                                                                    
    - { role: foo }

ansible.cfg 中使用以下代碼,因為它可能是相關的:

[defaults]                                                                         
allow_world_readable_tmpfiles = True                                               
host_key_checking = False                                                          
log_path=./ansible.log                                                             
remote_user = ubuntu   

該劇本可成功配置10臺服務器,但其中一臺服務器出現故障:

[WARNING]: sftp transfer mechanism failed on [xx.xx.xxx.xxx]. Use
ANSIBLE_DEBUG=1 to see detailed information
 [WARNING]: scp transfer mechanism failed on [xx.xx.xxx.xxx]. Use
ANSIBLE_DEBUG=1 to see detailed information
fatal: [host_1]: FAILED! => {"failed": true, "msg": "failed to transfer file to /home/ubuntu/.ansible/tmp/ansible-tmp-1500318083.01-204857088854554/stat.py:\n\nscp: /home/ubuntu/.ansible/tmp/ansible-tmp-1500318083.01-204857088854554/stat.py: Permission denied\n"}

所以我打開了有問題的服務器和一個“健康的”服務器,並為每個服務器分配了最新的臨時文件夾的內容。健康的服務器擁有 rwx --- --- 權限的文件。不健康的服務器有這樣的:

---x------ 1 ubuntu ubuntu 58378 Jul 17 14:09 file.py
---x------ 1 ubuntu ubuntu 56779 Jul 17 14:09 stat.py

為什麽這些文件會獲得這些權限?我認為這是問題,因為然後scp試圖寫入它們,但它不能。盡管這似乎暗示著 scp 失敗,但這並不完全符合錯誤消息。

我試圖找出要采取的調試步驟,如果有人能想到其他地方我可以看看,以提供更多的信息,我都聽過。

轉載註明原文: 用奇怪的權限創建Ansible tmp文件

一共有 1 個回答:

失敗的原因是與所有其他服務器不同,服務器已禁用sftp。 為什麽錯誤消息是他們是什麽,我不知道(為什麽錯誤的 scp傳輸機制失敗?),但我現在沒有時間調試啟用調試選項。

但是,這是個問題,並且在 ansible.cfg[ssh_connection] 部分添加 scp_if_ssh = True 解決了這個問題:

[ssh_connection]                                                                   
scp_if_ssh=True