Ansible 在 AWS EC2 上的初始操作
“Ansible 是什么?”
-
- Ansibleの特徴
エージェントレスでサーバ構築を自動化してくれるツールです。
構築対象のサーバはsshdが動作していてSSHで接続できればOKです。
設定ファイルはYAMLで書きます。プログラムの知識(Ruby、Python、etc.)は不要です。
数台~数十台規模のサーバ構築を想定しています。
备好
Amsibleのインストール
AnsibleをAmazon Linuxにインストールします。
Amazon LinuxにEPELからAnsibleをインストールする場合、yum install に –enablerepo=epel オプションを指定します。
[ec2-user@ip-172-31-24-21 ~]$ sudo su –
[root@ip-172-31-24-21 ~]# yum –enablerepo=epel install ansible
途中「y」と答えながらインストールに成功すると、Ansibleは、/etc/ansible にインストールされます。
このまま Ansible を実行しようとすると、以下のエラーメッセージがでます。
Traceback (most recent call last):
File “/usr/bin/ansible”, line 44, in
import ansible.constants as C
ImportError: No module named ansible.constants
pipでAnsibleをインストールするとエラーが解消します。
[root@ip-172-31-24-21 ~]# pip install ansible
Ansibleの管理対象マシンを設定
/etc/ansible/hostsファイルに管理対象マシンを登録します。「#」はコメント行を意味します。
#172.31.21.132
ec2_client01
#172.31.30.162
ec2_client02
[webservers]のようにグループ指定を行うことができます。今回は、グループ指定をしていないため、全体に登録されたことになります。
EC2インスタンス作成
以下の3台のEC2 Amazon Linuxインスタンスを作成します。
マシン名
IPアドレス
用途
ec2_ansible
172.31.24.21
Ansible実行マシン
ec2_client01
172.31.21.132
設定対象マシン1
ec2_client02
172.31.30.162
設定対象マシン2
設定はデフォルト(22番ポートのみ通信可能)のままでOKです。
SSH接続の設定
Ansible実行マシンから設定対象マシンに自動でSSH接続できるように設定します。
Ansible実行マシン(ec2_ansible)に /root/.ssh/config ファイルを作成します。
/root/.ssh/config
Host ec2_client01
HostName 172.31.21.132
Port 22
User ec2-user
IdentityFile ~/.ssh/ansible-key
Host ec2_client02
HostName 172.31.30.162
Port 22
User ec2-user
IdentityFile ~/.ssh/ansible-key
Ansible実行マシン(ec2_ansible)の ~/.ssh に秘密鍵(ansible-key)を配置します。設定対象マシン1、設定対象マシン2の ~/.ssh/には公開鍵を配置します。
ssh コマンドで、Ansible実行マシンから設定対象マシン1/2にSSH接続できるようになります。
/root/.ssh/config
[root@ip-172-31-24-21 ansible]# ssh ec2_client01
[root@ip-172-31-24-21 ansible]# ssh ec2_client02
※ 初回は問い合わせがありますが、2回目以降は自動でログインします。
确认行动
失敗テスト
-m オプションでAnsibleのモジュールを実行することができます。
EC2のインスタンスを停止したままansible all -m pingコマンドを実行すると以下のように失敗します。
[root@ip-172-31-24-21 ansible]# ansible all -m ping
ec2_client01 | UNREACHABLE! => {
“changed”: false,
“msg”: “Failed to connect to the host via ssh.”,
“unreachable”: true
}
ec2_client02 | UNREACHABLE! => {
“changed”: false,
“msg”: “Failed to connect to the host via ssh.”,
“unreachable”: true
}
成功テスト
EC2のインスタンスを起動してansible all -m pingコマンドを実行すると以下のように成功します。
[root@ip-172-31-24-21 ansible]# ansible all -m ping
ec2_client01 | SUCCESS => {
“changed”: false,
“ping”: “pong”
}
ec2_client02 | SUCCESS => {
“changed”: false,
“ping”: “pong”
}
コマンド実行
-a オプションで、コマンドを実行することができます。
[root@ip-172-31-24-21 ~]# ansible all -a “pwd”
ec2_client01 | SUCCESS | rc=0 >>
/home/ec2-user
ec2_client02 | SUCCESS | rc=0 >>
/home/ec2-user
下一步 (xià yī bù)
下一步,我们将使用Playbook来安装Oracle JDK。
使用Ansible的Playbook来安装Oracle JDK。