2017-03-03 44 views
0

我正在運行在劇本以下的Python腳本來創建本地目錄錯誤:無法同時在AWS上運行Ansible LAMBDA

#!/usr/bin/python 

from __future__ import print_function 

import json 
import os 
import ansible.inventory 
import ansible.playbook 
import ansible.runner 
import ansible.constants 
from ansible import utils 
from ansible import callbacks 

print('Loading function') 

def run_playbook(**kwargs): 

    stats = callbacks.AggregateStats() 
    playbook_cb = callbacks.PlaybookCallbacks(verbose=utils.VERBOSITY) 
    runner_cb = callbacks.PlaybookRunnerCallbacks(
     stats, verbose=utils.VERBOSITY) 

    # use /tmp instead of $HOME 
    ansible.constants.DEFAULT_REMOTE_TMP = '/test' 

    out = ansible.playbook.PlayBook(
     callbacks=playbook_cb, 
     runner_callbacks=runner_cb, 
     stats=stats, 
     **kwargs 
    ).run() 

    return out 


def lambda_handler(event, context): 
    return main() 



def main(): 
    out = run_playbook(
     playbook='/test/little.yml', 
    ) 
    return(out) 


if __name__ == '__main__': 
    main() 

而且,這是我的ansible.cfg文件:

[ssh_connection] 
ssh_args=-o ForwardAgent=yes 
retries=2 
sk_sudo_pass = yes 

[defaults] 
remote_user = root 
host_key_checking = False 
#remote_tmp  = tmp 
local_tmp  = ~/tmp 

我在調用lambda函數時出現以下錯誤:

START RequestId: ccfe076e-0016-11e7-befa-7ba330223a64 Version: $LATEST 
module initialization error: Unable to create local directories(/home/sbx_user1080/tmp): [Errno 30] Read-only file system: '/home/sbx_user1080' 

END RequestId: ccfe076e-0016-11e7-befa-7ba330223a64 

其中表示由於Lambda正在旋轉的容器中的權限問題,Ansible無法創建tmp文件。

那麼,我該如何解決它?另外,根據this discussion,Lambda支持將文件寫入/ tmp目錄。那麼,如何將local_tmp設置爲該目錄?

回答

1

您只能在AWS Lambda環境中寫入/tmp。您不能在該環境中創建一個~/tmp目錄。它看起來像你需要更改此設置:

local_tmp = ~/tmp

這樣:

local_tmp = /tmp