LoginSignup
2

More than 1 year has passed since last update.

【Ansible】Amazon EC2でansible-navigatorを使いたい~第1章:実行環境イメージの作成~

Last updated at Posted at 2023-02-19

はじめに

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インスタンスの作成・ログイン

  1. AWSにログインし、サービス「EC2」を選択する
  2. 以下の条件でEC2インスタンスを作成する
    • 名前
      • 任意の名前を指定
    • アプリケーションおよび OS イメージ (Amazon マシンイメージ)
      • Red Hat Enterprise Linux 8 (HVM), SSD Volume Type with support by Bansir
    • インスタンスタイプ
      • t2.micro
    • キーペア (ログイン)
      • 自分用のキーペアを指定
    • ネットワーク設定 > ファイアウォール (セキュリティグループ)
      • 自分のIPからSSH接続が可能になるように設定
  3. ターミナルソフトなどを使用して、作成したインスタンスにログインする
    • ユーザー名: ec2-user
    • 認証方法: 秘密鍵を指定

2. podmanのインストール

  1. podmanをインストールする

    $ sudo dnf install podman -y
    
  2. podmanがインストールされたことを確認する

    $ podman --version
    podman version 4.2.0
    

3. Python3.9のインストール

今回はpyenvにPython3.9をインストールして使用します。
手順は、GitHub > pyenv / pyenvに準じます。

  1. 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
    
  2. pyenvをGithubからクローンする

    $ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
    
  3. ~/.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
    
  4. ~/.bashrcを読み込む

    $ source ~/.bashrc
    
  5. pyenvのバージョンを確認

    $ pyenv --version
    pyenv 2.3.13-1-g86a4423b
    
  6. Python 3.9.7をインストールする

    pyenv install 3.9.7
    
  7. Pythonのバージョンを切り替える

    pyenv global 3.9.7
    pyenv rehash
    
  8. Pythonのバージョンが切り替わったことを確認する

    $ python --version
    Python 3.9.7
    

4. ansible-navigatorのインストール

  1. pipを最新化する

    $ pip install --upgrade pip
    
  2. ansible-navigatorをインストールする

    $ pip install ansible-navigator
    
  3. ansible-navigatorがインストールされたことを確認する

    $ ansible-navigator --version
    ansible-navigator 2.2.0
    
  4. 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)のディレクトリ配下に、以下のようなファイルを作成します。

  • :file_folder: /home/ec2-user/ansible_test
    • :page_facing_up: execution-environment.yml
    • :page_facing_up: ansible.cfg
    • :page_facing_up: requirements.yml
    • :page_facing_up: requirements.txt
  1. 作業用ディレクトリを作成する

    $ mkdir ~/ansible_test
    $ cd ~/ansible_test
    
  2. execution-environment.ymlを作成する

    $ 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
    
  3. ansible.cfgを作成する

    $ vi ansible.cfg
    
    ansible.cfg
    [defaults]
    host_key_checking = False
    
  4. requirements.ymlを作成する

    • Ansible Collectionsは必要に応じて追加してください
    $ vi requirements.yml
    
    requirements.yml
    ---
    collections:
      - community.general
    
  5. requirements.txtを作成する

    • ここでは、ansible-navigatorとjmespathをインストールします。これらは第2章で使用します
      • ansible-lint: ansible-navigator経由でlintを使用したいのでインストールしておく
      • jmespath: 変数の抽出に使いやすいのでインストールしておく
    $ vi requirements.txt
    
    requirements.txt
    ansible-lint==5.4.0
    jmespath
    
  6. 実行環境イメージを作成する

    • 実行が完了すると、自動でcontextフォルダが作成されます
    $ ansible-builder build -f execution-environment.yml -t ansible-test:v0.0.1 -v 3
    
  7. 実行環境イメージが作成されたことを確認する

    • 実行環境イメージの名前と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


Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2