Overview
Pythonコードで動作するDjangoで動的インベントリ、動的変数を使いたかったが、幸いにも[ansible-runner](https://ansible-runner.readthedocs.io/en/stable/)というモジュールを見つけることができた。Ansible RunnerはPythonからAnsibleを実行できるようにするPythonモジュールだ。使ってみると、実行されるansibleのバージョンに関係なく同じ実行結果を保証する機能もあり、イベントコールバックを登録してリアルタイムで出力を表示する時にも便利だった。[公式サイト](https://ansible-runner.readthedocs.io/en/stable/)に詳しい説明が記載されている。
実行方法
以下のようにansible_runnerをインポートした後、runを呼び出しながら引数として`private_data_dir`、`playbook`、`inventory`を渡せばansible playbookを実行できる。
もちろんansible-runnerを実行するサーバーにansibleがインストールされている必要がある。私は次のようにpipを使ってインストールした。`pip install ansible`
def event_callback(event_data):
do something every event
print(event_data)
def finished_callback(runner):
#do something after finishing
print runner
return
r = ansible_runner.run(
private_data_dir=os.path.join(
settings.BASE_DIR,"private_directory"
),
playbook=os.path.join(
settings.BASE_DIR,"playbook_directory",
"setup.yml"
),
event_handler=event_callback,
finished_callback=finished_callback,
quiet=True,
)
ansibleで実行可能なplaybookであれば`ansible_runner`でも実行が可能だ。
クイズ
PythonからAnsibleを実行できるようにするAnsible Runnerモジュールについて学ぶ。
以下のようにansible_runnerをインポートした後、runを呼び出しながら引数としてprivate_data_dir、playbook、inventoryを渡せばansible
playbookを実行できる。
もちろんansible-runnerを実行するサーバーにansibleがインストールされている必要がある。私は次のようにpipを使ってインストールした。pip
install ansible ansibleで実行可能なplaybookであればansible_runnerでも実行が可能だ。
현재 단락 (1/26)
Pythonコードで動作するDjangoで動的インベントリ、動的変数を使いたかったが、幸いにも[ansible-runner](https://ansible-runner.readthedocs.i...