2016-11-18 8 views
0

以下のpythonスクリプトを実行して、ホストコンピュータにpingを実行するためのプレイブックを実行しています。エラープログラマティックにPython APIを使用して実行する際にエラーが発生しました

以下
Traceback (most recent call last): 
    File "ansible.py", line 2, in <module> 
    from ansible.parsing.dataloader import DataLoader 
    File "/home/tcprod/schaitanya/python_ansible/ansible.py", line 2, in <module> 
    from ansible.parsing.dataloader import DataLoader 
ImportError: No module named parsing.dataloader 

の下に取得するスクリプト全体はこのについてGoogleで検索

from collections import namedtuple 
from ansible.parsing.dataloader import DataLoader 
from ansible.vars import VariableManager 
from ansible.inventory import Inventory 
from ansible.playbook.play import Play 
from ansible.executor.task_queue_manager import TaskQueueManager 

#Initialize the objects that are needed for the play. 

Options = namedtuple('Options', 
       ['connection', 'module_path', 'forks', 'become', 
       'become_method', 'become_user', 'check'] 
      ) 

#initialize needed objects 

variable_manager = VariableManager() 
loader = DataLoader() 

options = Options(
    connection='local', module_path='', forks=100, become=True, 
    become_method='sudo', become_user='root', check=False) 
passwords = dict(vault_pass='secret') 

#create inventory and pass to variable manager 

inventory = Inventory(loader=loader, variable_manager=variable_manager, 
         host_list='localhost') 
variable_manager.set_inventory(inventory) 

#create play with tasks 

play_src = dict(
    name="ping localhost", 
    hosts="localhost", 
    gather_facts="no", 
    tasks=[ 
     # installing dependencies 


     dict(name="ping local host", 
      action=dict(module="ping")) 
      ]) 

play = Play().load(play_src, variable_manager=variable_manager, loader=loader) 


tqm = None 
try: 
    tqm = TaskQueueManager(
      inventory=inventory, 
      variable_manager=variable_manager, 
      loader=loader, 
      options=options, 
      passwords=passwords, 
      stdout_callback="default", 
     ) 
    result = tqm.run(play) 
finally: 
    if tqm is not None: 
     tqm.cleanup() 

ですが、少しの助けを得ました。この依存関係の問題を解決してpythonプログラムを動作させる方法をお知らせください。

+0

をPythonで名前が重複しないようにしてください。スクリプトの名前を 'anonym.py'から' my_ansible.py'に変更してみてください。 –

+0

ありがとう私は同じことを試みました。しかし、エラーは持続する – sntchaitu

答えて

1

自分の環境で見たものから、スクリプトがルートディレクトリにないときにこのエラーが発生しました。

[[email protected] API]# ./my_ansible.py 
Traceback (most recent call last): 
    File "./my_ansible.py", line 5, in <module> 
     from ansible.parsing.dataloader import DataLoader 
    File "/home/xxx/projects/API/ansible.py", line 5, in <module> 
ImportError: No module named parsing.dataloader 

私は/ rootにそれを移動したら - それが正常に実行しました:

[[email protected] ~]# ./my_ansible.py 
[[email protected] ~]# 
関連する問題