マシンは EC2 を使います。流れは、
インベントリファイルを作る
Role (実際の処理を書く)ファイルを作る
ec2.yml
ファイルを作る確認
インベントリファイル
このファイルにターゲットにするマシンのipアドレスや変数などを設定していきます。hosts
というファイルにしている例が多いと思います。
[ec2]
x.x.x.x
ec2
というグループにx.x.x.x
というipアドレスのマシンを設定しています。これはec2
グループに対しての処理の時に、羅列したipアドレスのマシンすべての処理を流す感じになります。
Role
処理を細かく細分化する為に使います。ここでは数行なので必要ない感じですが、こちらに慣れたほうが便利だと思うので使ってみます。
Role は、roles/role-name/tasks/main.yml
というようなファイルに書いていきます。例えば、roles/ec2/tasks/main.yml
というファイルを作ります。その中身はこのようにします。
---
- name: Hello
shell: echo hello from ec2 by ansible
register: result
- debug: var=result.stdout
when: result
リモートで表示したものをローカルで確認するタスクです。つまり、ローカルでhello from ec2 by ansible
と出すためのタスクです。
ec2.yml
名前は何でもいいですが、ec2
グループに対して実行するのでec2.yml
にします。roles
にec2
を含めることで、roles/ec2/tasks/main.yml
を実行するように設定します。
---
- hosts: ec2
roles:
- ec2
確認
以下のオプションを指定して実行します。
-i
は、見るインベントリファイル-u
は、ssh
する時のユーザー名--private-key
はssh
するときの秘密鍵
ansible-playbook ec2.yml -i hosts -u ec2-user --private-key=~/.ssh/id_rsa
PLAY [ec2] ****************************************************************************************************************
TASK [Gathering Facts] ****************************************************************************************************
ok: [x.x.x.x]
TASK [ec2 : Hello] ********************************************************************************************************
changed: [x.x.x.x]
TASK [ec2 : debug] ********************************************************************************************************
ok: [x.x.x.x] => {
"result.stdout": "hello from ec2 by ansible"
}
PLAY RECAP ****************************************************************************************************************
x.x.x.x : ok=3 changed=1 unreachable=0 failed=0
ちゃんとログがでれば完了です。