はじめに
Ansibleというすごい便利な自動化ツールがあると知りましたので、実際に試してみました。
構成
[ローカルPC(WSLまたはDocker)※今回はDocker使用]
↓ SSH + Ansible実行
[AWS EC2インスタンス(Amazon Linuxなど)]
構築手順
ステップ➀:EC2作成※AmazonLinux2使用
・EC2を起動(パブリックIP付き)
・キーファイルをローカルに保存
ステップ➁:ローカルにAnsible実行環境を用意
・Dockerコンテナを作成するディレクトリ配下に下記ファイルを準備
➀Dockerfile
FROM ubuntu:22.04
RUN apt update && apt install -y python3-pip ssh ansible
➁hosts.ini(Ansible用インベントリファイル)
[web]
[EC2のDNS名] ansible_user=ec2-user ansible_ssh_private_key_file=./[EC2のキーファイル名]
➂EC2用のキーファイル
➃playbook.yaml(Ansible用playbook)
# install_apache.yml
- name: Install Apache
hosts: web
become: true
tasks:
- name: Install httpd
yum:
name: httpd
state: present
- name: Start service
service:
name: httpd
state: started
enabled: true
・Dockerを使ってAnsibleコンテナで実行
実行コマンド
docker build -t ansible .
docker run -it --name [作成するコンテナ名] ` -v "ローカルPC上に配置したEC2キーファイルの絶対パス:/[キーファイル名]" ` -v "[ローカルPC上に配置したplaybook.yamlの絶対パス]:/playbook.yaml"` -v "[ローカルPC上に配置したhosts.iniの絶対パス]:hosts.ini"` ansible /bin/bash
ステップ➂: 起動後のチェック
・コンテナ内で以下を確認
ls /
EC2との疎通確認
ansible -i /hosts.ini web -m ping
EC2へのApacheインストール
ansible-playbook -i /hosts.ini playbook.yaml
EC2へApacheインストールされているかブラウザで確認
http://[EC2のパブリックIP]
おわりに
正直すごく効率的なツールだと感じました。個人的には、IaCでCloudFormationやTerraformを使って、インフラの作成を実施→その他のMW製品のインストールや各種設定ファイルの設定にAnsibleを活用するといった分け方が良いのかなと感じました。
明日から、クラウドの業務が始まりますので、積極的にこういった自動化ツールを活用していけるように知識のキャッチアップをしていきます!