初めて触るAnsible
複数のAWS EC2にOS初期設定を行う。お約束のことなので、できるだけ自動化したい。
AWSマネジメントコンソールにて複数のサーバを用意する必要があったので
構成管理ツールのAnsibleを使った。
手順
- EC2セットアップ
- pythonをインストール
- awscliをインストール
- ansibleをインストール
- 初期設定ファイルを取得
- 再起動
EC2セットアップ
AWSマネジメントコンソールにてEC2をセットアップする。用意する際にAMIを指定するようにする。
バージョン等がずれると再度インストールしなおしになるためAMIで確認することをお勧めします。
今回はRHELをインストールしたかったので下記の方法でAMIを取得した
http://blog.serverworks.co.jp/tech/2019/06/18/post-71160/
sshで接続できることを確認
EC2を構築する際にキーペアが発行される、
もしくは既存のキーペアを使ってssh接続できることを確認します。
pythonをインストール
EPELリポジトリからpython3をyumでインストール
https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-enable-epel/
$ sudo su -
$ yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ yum -y install python3
$ yum -y install python3-pip
$ pip3 install --upgrade pip
awscliをインストール
$ sudo su -
$ pip3 install --upgrade awscli
ansibleをインストール
$ pip3 install --upgrade ansible
$ mkdir -p /opt/ansible
playbookを作成して実行
一から作るのは勉強になりますが、
今回は以下のリポジトリを参考にさせていただきました。
https://github.com/kouji-kojima/sample-ansible-el7-init
- ホスト名
- 時刻同期
- タイムゾーン
- 文字コード
などなど
$ ansible-playbook -i localhost site.yml --private-key=/path/key.pem -vvv
後処理
# epel無効化
$ sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/epel*
$ systemctl restart sshd
# error確認
$ egrep -i "error|warning|fatal|fail" /var/log/messages
問題なければ、このイメージをコピーして配布する。
同一の設定のOSを複数セットアップする際にはめっちゃくちゃ便利です。
余談
EC2にはユーザーデータを利用することもできる。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/user-data.html