簡體   English   中英

Ansible許可問題

[英]Ansible permission issue

我有一個簡單的ansible任務創建一個文件:

- name: create fake file 
  file:
    name: /opt/refdata/PROD02/roman.delete
    state: touch

我生成了公鑰/私鑰,並為我在目標主機上運行的用戶添加了public_keys2的public。

當我嘗試運行它時,我收到以下錯誤:

failed: [experiment01] => {"failed": true, "parsed": false}
Traceback (most recent call last):
  File "/home/acplus_uat01/.ansible/tmp/ansible-tmp-1441921944.69-3869708445827/file", line 1999, in <module>
    main()
  File "/home/acplus_uat01/.ansible/tmp/ansible-tmp-1441921944.69-3869708445827/file", line 372, in main
    open(path, 'w').close()
IOError: [Errno 2] No such file or directory: '/opt/refdata/PROD02/roman.delete'

所以,看看我是否有ssh或python的問題我試過這個 - 我用一行創建了一個python文件:

open('/opt/refdata/PROD02/roman.delete', 'w').close()

並從我運行ansible的同一個地方和同一個用戶運行它:

cat test2.py | ssh -i ~/.ssh/myPrivateKey -q target_user@targethost python -

它創建了文件。

所以,我的問題是 - 問題出在哪里,為什么不能創建文件?

我運行劇本的方式是這樣的:

ansible-playbook -i inventory/prod/ acc.yml -v --vault-password-file=~/.ansible-vault-pw --private-key ~/.ssh/myPrivateKey

我還嘗試在/ tmp /和ansible中創建一個文件。

編輯:所以,另一個更新 - 我將我正在寫入文件的目錄寫入world writable(777)並創建了該文件。 所以,問題是 - Ansible的不同之處在於

 cat test2.py | ssh -i ~/.ssh/myPrivateKey -q target_user@targethost python -

通過Ansible工作和做基本相同的事情不是。

如果/opt/refdata/PROD02/不存在,則應首先創建目錄

file:
  name: /opt/refdata/PROD02
  state: directory
  recurse: yes
  mode: 0755

Ansible文檔說:

recurse - 設置指定的文件屬性( 僅適用於state = directory

因此,Ansible無法在一個命令中創建文件及其路徑中的所有目錄。

然后使用第二個命令,您應該自己創建文件。

name: create fake file 
  file:
    name: /opt/refdata/PROD02/roman.delete
    state: touch

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM