1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Ansible入門】Amazon Linux2でインストールからPlaybook実行まで実行してみた

1
Posted at

2025年頃にAnsibleを使ってWebアプリのデプロイ内容をコード化してみた時の記録です。
(情報がやや古めのため要注意!)

今回はコントロールノード・ターゲットノードともにAmazon Linux2を利用し、ansible-core 2.16.14をインストールしました。
(Amazon Linux2の環境でdnfではなくansible.builtin.yumを使いたかったため、古めのバージョンのAnsibleを使用)

Ansibleとは

RedHatが提供しているオープンソースの構成管理ツール。

・Ansibleを使うためにはコントロールノード=管理する側、ターゲットノード=管理される側の2つの環境を用意する。通常、Ansibleはコントロールノード側のみにインストールする。

・コントロールノード側で用意するものとしては、構成内容を記述する「Playbook」や、Playbookの実行対象を決める「inventory(インベントリ)」などがある。

・コントロールノード側でAnsibleのコマンドを実行すると、AnsibleエンジンがPlaybookなどをもとにPythonの実行ファイルを作成する。ターゲットノード側でPythonの実行ファイルが実行されると、Playbook内の構成内容がターゲットノードに反映される。

前提条件

  • 以下の環境やバージョンを使用しました。
コントロールノード ターゲットノード
OS:Amazon Linux2 OS:Amazon Linux2
Python:3.10.18 Python:3.6.15
Ansible-core:2.16.4 -

作業一覧

  1. ターゲットノード側の設定
  2. コントロールノード側の設定・Ansibleインストール
  3. (※) ansible.cfgの準備
  4. (※) コレクションのインストール
  5. inventoryの準備
  6. playbookの準備
  7. コマンド実行

手順

1. ターゲットノード側の設定

①パッケージインストール

# development toolsインストール
sudo yum groupinstall "development tools"

# 依存関係パッケージインストール
sudo yum install bzip2-devel gdbm-devel libffi-devel libuuid-devel ncurses-devel \
readline-devel sqlite-devel xz-devel zlib-devel tk-devel

②Pythonインストール

※別記事の通りpyenvでPythonをインストールする。
参考:https://qiita.com/nyanp_p/items/4d666dc28c0bdeabe22c

2. コントロールノード側の設定

コントロールノード側にはAnsibleをインストールする。
Pythonの実行環境の準備と、ターゲットノード側に接続するためのSSH鍵の発行も必要。

①パッケージインストール

# development toolsインストール
sudo yum groupinstall "development tools"

# 依存関係パッケージインストール
sudo yum install bzip2-devel gdbm-devel libffi-devel libuuid-devel ncurses-devel \
readline-devel sqlite-devel xz-devel zlib-devel tk-devel

# OpenSSL 1.1インストール(Python3.10以上の場合)
sudo yum install openssl11 openssl11-devel

②Python仮想環境の構築

※別記事の通りpyenvでPythonをインストール、venvでPython仮想環境を構築する。
参考:https://qiita.com/nyanp_p/items/4d666dc28c0bdeabe22c

③Ansibleインストール

※今回はansibleパッケージではなく、ansible-coreパッケージをインストールする。

# pipでインストールしたpythonパッケージを一覧表示
pip list --format=columns

# AnsibleコアバージョンX.X.Xをインストール
pip install ansible-core==X.X.X

# Ansibleのバージョン確認
ansible --version

④SSH鍵作成・登録

※今回は公開鍵の内容をコピペし、ターゲットノード側の~/.ssh/authorized_keysに貼り付けて登録。

# SSH鍵ペアを作成
ssh-keygen -t rsa -C ansible_ssh_key

# 公開鍵の内容を画面に出力(→この内容をターゲットノード側の~/.ssh/authorized_keysに登録)
cat ~/.ssh/id_rsa.pub

ディレクトリ構成例

今回の構成例は以下の通り。
※単一の環境のみ構成管理する前提、playbookをrole分割する前の状態。

ansible_project/
├── ansible.cfg
├── inventory/
│   └── hosts
├── requirements.yml
└── playbook.yml

3. ansible.cfgの準備

Ansibleのプロジェクト用ディレクトリの配下にansible.cfgを作成し、設定を記述する。

4. inventoryの準備

Ansibleのプロジェクト用ディレクトリの配下にinventoryディレクトリを作成する。inventoryディレクトリの配下にhostsを作成し、設定を記述する。

5. playbookの準備

Ansibleのプロジェクト用ディレクトリの配下にplaybook.ymlを作成し、設定を記述する。

6. コマンド実行

コントロールノードで以下のコマンドを実行する。
※コントロールノード→ターゲットノードへSFTPでファイル転送するため、SSHの設定&接続確認をしておくとよい!

参考

以下を参考にさせていただきました!

1
0
0

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?