はじめに
こんにちは たそ(@taso_int)です。
久しぶりです。更新すると言いながら更新できずにすみません。
希望のプロフェッショナル職になり、発信したいのに出来ず…
皆さんAnsibleでPlaybookを実行する時何を打ちますか?
ansible-playbookコマンドですかね。
もしかしたらansible-navigator runかも?
今回はAnsible navigatorについて紹介したいと思います。
長いので3部構成にします。
Ansible navigatorとは?
ここ最近Ansibleの実行環境について新しいアップデートが行われました。
こちらの記事がとても参考になるので時間がある方はぜひ
https://rheb.hatenablog.com/entry/ansible_future_2021_review
簡単に纏めるとAnsibleの実行環境がPythonの仮想環境であるvenvではなく、
コンテナ化(execution environmentと呼ばれる)するようになりました。
そこで前に紹介したansible-builderがコンテナイメージを作成します。
ここでPlaybookの実行するために
Ansible navigatorが登場します。(ようやく名前が出た)
Ansible navigator と Ansible runnerの違い
「おいおい Ansible runnerで実行するんじゃないの?」と
その通りで、Ansible runnerでPlaybookを動かします。
Ansible navigatorは以下の内容ができます。
(触ったばっかりなのでもっと出来ることあると思います)
・collectionやpythonパッケージの管理
・inventoryの管理
・コンテナへ追加の設定
・Playbookの実行
・モジュールのドキュメント閲覧
・リプレイ機能
Ansible navigatorはバックエンドにAnsible runnerを持っており、
Playbookの実行ができます。
またTUI(テキストユーザインタフェース)になっており、CLIより目視で操作ができます。
公式のドキュメントも置いておきます。結構分かりやすいです。
https://access.redhat.com/documentation/ja-jp/red_hat_ansible_automation_platform/2.0-ea/html/ansible_navigator_creator_guide/index
インストールまで
今回はvenvからインストールをしたいと思います。
venvからpipでインストールします。 やり方(rootで)
python 3.9のインストール dnf install python39 python3.9 --version ←3.9代がでればOK venv作成 python3.9 -m venv /opt/venv source /opt/venv/bin/activate python --version ←3.9代がでればOK pip install --upgrade pip pip install ansible-navigator
rpmからインストール
rpmからインストールするにはライセンスが必要となります。
(AAPをインストールする時と同じ操作)
今回はRed HatさんのRed Hat Developer Programに参加し、
Developer Subscriptionを利用しています。
詳しくはこちらを確認してください。
https://rheb.hatenablog.com/entry/developer-program
やり方(root)で
サブスクリプション登録 subscription-manager register Registering to: subscription.rhsm.redhat.com:443/subscription Username: taso_int(サブスクリプションユーザー名) Password:(パスワード) リポジトリ有効化 subscription-manager list --available Red Hat Ansible Automation Platformが入っているpool値をメモ subscription-manager attach --pool=<メモしたpool値> 有効になればOK クラウド環境の場合(リポジトリを引っ張れるように) subscription-manager config --rhsm.manage_repos=1 subscription-manager repos --enable=ansible-automation-platform-2.1-for-rhel-8-x86_64-rpms navigatorのインストール dnf install ansible-navigator
podmanやrunner等もインストールされます。
rpmだとpodman login registry.redhat.ioが必要そうですね rpmだとRedHatさんの公式イメージがあるのでカスタマイズが必要ない限りは公式イメージ(ee)を利用するのが良さげ まあansible-navigatorよりもAAPをインストールした方がいいかも?
build
eeがない場合はbuilderをインストールしてeeを用意してください(地味に手間)
詳しくはbuilderのブログを見てください
ファイル類だけ補足します。
buildには
execution-environment.yml
requirements.txt
requirements.yml (bindep.txt)
が必要になります。
execution-environment.yml
--- version: 1 build_arg_defaults: EE_BASE_IMAGE: quay.io/ansible/ansible-runner:latest dependencies: galaxy: requirements.yml python: requirements.txt additional_build_steps: prepend: | RUN pip3 install --upgrade pip setuptools
requirements.txt
paramiko netaddr ansible[azure]
requirements.yml(この書き方でバージョン指定ができる)
--- collections: - name: azure.azcollection version: 1.11.0 - name: ansible.utils version: 2.4.3 - name: cisco.ios
navigater.ymlについて
ansible navigatorはansible-navigator.ymlという設定ファイルが必要です。
ここでansible-navigatorの色々な設定が可能となっています。
公式ドキュメントがかなり参考になります。
https://access.redhat.com/documentation/ja-jp/red_hat_ansible_automation_platform/2.0-ea/html/ansible_navigator_creator_guide/index
これについてはまた後で違う記事で書きたいと思います。
今回のansible-navigator.ymlはこんな感じです。
--- ansible-navigator: ansible: inventories: - inventory/hosts/ execution-environment: container-engine: podman enabled: true image: localhost/blog:latest mode: stdout playbook-artifact: enable: true replay: ./log/{playbook_name}/{ts_utc}.json save-as: ./log/{playbook_name}/{ts_utc}.json
以上で環境の構築は終わりです。
次は実際にansible-navigatorを動かしたいと思います。