Ansible Towerでvirtualenvを使ってみる


Ansible Tower 3.0以降ではvirtualenvに対応しています。
ここでは、Ansible Towerでvirtualenvを有効化して使ってみる例を書いてみようと思います。
venvは 組織 プロジェクト ジョブテンプレート インベントリのソース に設定することが可能です。

環境

項目 バージョン
OS RHEL 7.6
Ansible Tower 3.5.1
Python 3.6

公式ドキュメント

Python3のインストール

ここでは、Python3.6を使ってみようともいます。
RHEL7でPython3.6をインストールするにはscl(Software Collections)からインストールします。
以下のリポジトリが有効になっていることを確認します。

有効になっていない場合は有効化します。

Python3.6をインストールします。

Python3.6が使えるように有効化します。

venvの作成

次に、venvを作成します。
任意の場所にvenvを保存するディレクトリを作成します。

次にAnsible Towerの CUSTOM_VENV_PATH を登録します。

API直アクセス例

tower-cli例

tower-cli を使って設定することも可能です。
tower-cliはインストールする必要があります。

ログインします。

CUSTOM_VENV_PATH を設定します。

次にvenvを作成します。
ここでは project01 というプロジェクトに紐づけるのでわかりやすいように project01-venv という名前で作ってみます。

venvを作成したら必要なパッケージやモジュールをインストールします。

プロジェクトの作成

次にvenvを紐づけるプロジェクトを作成します。
ここでは、手動で作成します。

以下のようなPlaybookを作って動かしてみます。

main.yml の中身は次の通りです。

Ansible Tower側はこんな感じでプロジェクトを作成しておきます。

プロジェクトにvenvを紐づける

次に作成したプロジェクトへ作成したvenvを紐づける必要があります。

API直アクセス例

以下はAPI経由で設定する例です。(WebUIから設定することも可能です)
まず、作成したプロジェクト番号を確認してください。
プロジェクトを作成したページのURLに番号が書かれています。

この場合のプロジェクト番号は 6 なので、以下のコマンドのURLのprojectsを6にしています。

tower-cli例

tower-cli を使って設定することも可能です。
tower-cliはインストールする必要があります。

ログインします。

venvをプロジェクトに紐づけます。

上記コマンドを実行してから対象プロジェクトページのブラウザをリロードしてみてください。
先ほどまで表示されていなかった ANSIBLE 環境 が表示されて指定したvenvが設定されていると思います。

これで、venvを選択して実行することができるようになりました。

テンプレートの作成

ここでは、以下のようにテンプレートを作成しています。

実行してみます。

pythonのバージョンが3.6.3で動作していることが分かります 🙂

最後に

自動化が大きくなってくると、プロジェクトや組織毎に環境を分けたいという要望は出てくると思います。
Ansible Tower(AWX)では必要に応じてvenvで環境を分けることができるため、そういうニーズにも対応できて便利ですね 🙂

みんなでハッピーオートメーション!

Leave a Reply

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください