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プログラムを動作させる方法をお知らせください。
をPythonで名前が重複しないようにしてください。スクリプトの名前を 'anonym.py'から' my_ansible.py'に変更してみてください。 –
ありがとう私は同じことを試みました。しかし、エラーは持続する – sntchaitu