はじめに
Red Hat Ansible Automation Platform Workshopsにおいて、Ansibleの実行コマンドは、
ansible-navigator
になっています。
ansible-navigator
を使うようになった経緯は割愛しますが、ansible-playbook
を使ってきた身としては知識のアップデートをする必要性がありそうです。
そこで、Amazon EC2でansible-navigator
の環境構築を実施します。
まずは、第1章として「実行環境イメージの作成」を実施します。
TL;DR
- Ansibleの実行コマンドは、
ansible-playbook
->ansible-navigator
に変化 - Amazon EC2で
ansible-navigator
の環境構築が可能 -
execution-environment.ymlは
の実行環境のイメージをビルドするために必要な.yml
ファイル
前提
- Amazon EC2の使用方法がわかること
- 別で構築したRHEL8のサーバーでも可能ですが、一部手順が異なる可能性があります
詳細
1. EC2インスタンスの作成・ログイン
- AWSにログインし、サービス「EC2」を選択する
- 以下の条件でEC2インスタンスを作成する
- 名前
- 任意の名前を指定
- アプリケーションおよび OS イメージ (Amazon マシンイメージ)
- Red Hat Enterprise Linux 8 (HVM), SSD Volume Type with support by Bansir
- インスタンスタイプ
- t2.micro
- キーペア (ログイン)
- 自分用のキーペアを指定
- ネットワーク設定 > ファイアウォール (セキュリティグループ)
- 自分のIPからSSH接続が可能になるように設定
- 名前
- ターミナルソフトなどを使用して、作成したインスタンスにログインする
- ユーザー名: ec2-user
- 認証方法: 秘密鍵を指定
2. podmanのインストール
-
podmanをインストールする
$ sudo dnf install podman -y
-
podmanがインストールされたことを確認する
$ podman --version podman version 4.2.0
3. Python3.9のインストール
今回はpyenvにPython3.9をインストールして使用します。
手順は、GitHub > pyenv / pyenvに準じます。
-
pyenvに必要なモジュールをインストールする
$ sudo dnf install -y \ gcc \ make \ zlib-devel \ bzip2 \ bzip2-devel \ readline-devel \ sqlite \ sqlite-devel \ openssl-devel \ tk-devel \ libffi-devel \ xz-devel \ patch \ git
-
pyenvをGithubからクローンする
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
-
~/.bashrc
を修正する$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc $ echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc $ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
-
~/.bashrc
を読み込む$ source ~/.bashrc
-
pyenvのバージョンを確認
$ pyenv --version pyenv 2.3.13-1-g86a4423b
-
Python 3.9.7をインストールする
pyenv install 3.9.7
-
Pythonのバージョンを切り替える
pyenv global 3.9.7 pyenv rehash
-
Pythonのバージョンが切り替わったことを確認する
$ python --version Python 3.9.7
4. ansible-navigatorのインストール
-
pipを最新化する
$ pip install --upgrade pip
-
ansible-navigatorをインストールする
$ pip install ansible-navigator
-
ansible-navigatorがインストールされたことを確認する
$ ansible-navigator --version ansible-navigator 2.2.0
-
ansible-builder/ansible-runnerが存在することを確認する
- ansible-navigatorをインストールすると、ansible-builderやansible-runnerもインストールされます
$ pip list Package Version ------------------- -------- ansible-builder 1.2.0 ansible-navigator 2.2.0 ansible-runner 2.3.1 ~以下、略~
5. 実行環境の設定ファイル作成
Ansible Builder ガイドを参考にして、実行環境の設定ファイルを作成します。
作業用ユーザー(/home/ec2-user)のディレクトリ配下に、以下のようなファイルを作成します。
-
/home/ec2-user/ansible_test
- execution-environment.yml
- ansible.cfg
- requirements.yml
- requirements.txt
-
作業用ディレクトリを作成する
$ mkdir ~/ansible_test $ cd ~/ansible_test
-
execution-environment.ymlを作成する
-
EE_BASE_IMAGE
に実行環境の元となるイメージをRed Hat Quay.io > ansible / ansible-runnerから選択します
$ vi execution-environment.yml
execution-environment.yml--- version: 1 build_arg_defaults: EE_BASE_IMAGE: 'quay.io/ansible/ansible-runner:stable-2.12-latest' ansible_config: 'ansible.cfg' dependencies: galaxy: requirements.yml python: requirements.txt additional_build_steps: prepend: | RUN whoami RUN cat /etc/os-release append: - RUN echo This is a post-install command! - RUN ls -la /etc
-
-
ansible.cfgを作成する
$ vi ansible.cfg
ansible.cfg[defaults] host_key_checking = False
-
requirements.ymlを作成する
- Ansible Collectionsは必要に応じて追加してください
$ vi requirements.yml
requirements.yml--- collections: - community.general
-
requirements.txtを作成する
- ここでは、ansible-navigatorとjmespathをインストールします。これらは第2章で使用します
- ansible-lint: ansible-navigator経由でlintを使用したいのでインストールしておく
- jmespath: 変数の抽出に使いやすいのでインストールしておく
$ vi requirements.txt
requirements.txtansible-lint==5.4.0 jmespath
- ここでは、ansible-navigatorとjmespathをインストールします。これらは第2章で使用します
-
実行環境イメージを作成する
- 実行が完了すると、自動で
context
フォルダが作成されます
$ ansible-builder build -f execution-environment.yml -t ansible-test:v0.0.1 -v 3
- 実行が完了すると、自動で
-
実行環境イメージが作成されたことを確認する
- 実行環境イメージの名前とTAGが一致していれば問題ありません
$ podman images REPOSITORY TAG IMAGE ID CREATED SIZE localhost/ansible-test v0.0.1 03fe7ddbce84 10 seconds ago 1.12 GB ~以下、省略~
さいごに
- 第1章では、ansible-navigatorを使用する第一歩として実行環境イメージを作成しました
- 第2章では、実際にansible-navigatorを使ってplaybookを実行します
参考URL
-
Red Hat Ansible Automation Platform Workshops
- 初心者向けのAnsible Workshopサイト
-
Red Hat Customer Portal > Ansible Builder ガイド
- 実行環境の設定方法
-
Red Hat Quay.io > ansible / ansible-runner
- 実行環境の作成に利用可能なコンテナレジストリ
-
GitHub > pyenv / pyenv
- pyenvのHome
-
GitHub > pyenv / pyenv > Suggested build environment
- pyenvに必要なモジュールの一覧
-
【Ansible】Amazon EC2でansible-navigatorを使いたい~第2章:ansible-navigatorの実行~
- 次の記事