環境変数を指定してrun_commandを実行する

Ansibleのカスタムモジュール内でOSのコマンドを実行するrun_command関数。

検索エンジンでしらべてみてもなかなか環境変数を指定してコマンドを実行する方法がなかったため調べてみた。
例えば通常は日本語で出力されてしまう結果をLANG=Cを指定して英語化するときなどに使える。

サンプルコードはこちら。

import ansible.module_utils.basic import *;

cmd_env = {"LANG": "C"};
cmd_str = "/usr/bin/nmcli connection show";

module = AnsibleModule(
    # ...
);

rc, stdout, stderr = module.run_command(cmd_str, environ_update=cmd_env);

他にもエンコーディングを指定したり、出力をテキストではなくバイナリとしてあつかったりすることができる様子。
${site_packages_dir}/ansible/module_utils/basic.pyに詳細のコメントがある。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です