マシンは EC2 を使います。流れは、
インベントリファイルを作る
Role (実際の処理を書く)ファイルを作る
ec2.ymlファイルを作る確認
インベントリファイル
このファイルにターゲットにするマシンのipアドレスや変数などを設定していきます。hostsというファイルにしている例が多いと思います。
[ec2]
x.x.x.xec2というグループに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ちゃんとログがでれば完了です。