マシンは EC2 を使います。流れは、

  1. インベントリファイルを作る

  2. Role (実際の処理を書く)ファイルを作る

  3. ec2.ymlファイルを作る

  4. 確認

インベントリファイル

このファイルにターゲットにするマシンの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にします。rolesec2を含めることで、roles/ec2/tasks/main.ymlを実行するように設定します。

---
- hosts: ec2
  roles:
    - ec2

確認

以下のオプションを指定して実行します。

  • -iは、見るインベントリファイル

  • -uは、sshする時のユーザー名

  • --private-keysshするときの秘密鍵

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

ちゃんとログがでれば完了です。

JavaScript で飯食べたい歴約 5 年、 純( nju33 ) によるノートサイトです。

このサイトではドリンク代や奨学金返済の為、広告などを貼らせて頂いてますがご了承ください。

Change Log