Playbookを実行する
最後に、Playbookを実行します。完成したroles/nodejs/tasks/main.ymlは以下のようになります。
- name: download nodebrew
get_url:
url: http://git.io/nodebrew
dest: ~/nodebrew
register: nodebrew_download
- name: install nodebrew
shell: perl ~/nodebrew setup
when: nodebrew_download|changed
- name: installed check
shell: nodebrew list | grep {{ nodejs_version }}
ignore_errors: True
register: nodejs_installed
- name: install nodejs
shell: nodebrew install-binary {{ nodejs_version }}
when: nodejs_installed|failed
- name: swhich version
shell: nodebrew use {{ nodejs_version }}
- name: export nodebrew path
lineinfile:
dest: ~/.bash_profile
state: present
create: yes
line: 'export PATH={{nodebrew_path}}:$PATH'
問題がなければ、下記のように出力されます。
$ ansible-playbook -i hosts site.yml PLAY [localhost] ************************************************************** GATHERING FACTS *************************************************************** ok: [127.0.0.1] TASK: [nodejs | download nodebrew] ******************************************** changed: [127.0.0.1] TASK: [nodejs | install nodebrew] ********************************************* changed: [127.0.0.1] TASK: [nodejs | export nodebrew path] ***************************************** changed: [127.0.0.1] TASK: [nodejs | installed check] ********************************************** changed: [127.0.0.1] TASK: [nodejs | install nodejs] *********************************************** changed: [127.0.0.1] TASK: [nodejs | swhich version] *********************************************** changed: [127.0.0.1] PLAY RECAP ******************************************************************** 127.0.0.1 : ok=6 changed=6 unreachable=0 failed=0
また、Ansibleを再度実行すると、いくつかのタスクがスキップされ、べき等性が保たれていることが分かります。
$ ansible-playbook -i hosts site.yml GATHERING FACTS *************************************************************** ok: [127.0.0.1] TASK: [nodejs | download nodebrew] ******************************************** ok: [127.0.0.1] TASK: [nodejs | install nodebrew] ********************************************* changed: [127.0.0.1] TASK: [nodejs | export nodebrew path] ***************************************** ok: [127.0.0.1] TASK: [nodejs | installed check] ********************************************** changed: [127.0.0.1] TASK: [nodejs | install nodejs] *********************************************** skipping: [127.0.0.1] TASK: [nodejs | swhich version] *********************************************** changed: [127.0.0.1] PLAY RECAP ******************************************************************** 127.0.0.1 : ok=6 changed=4 unreachable=0 failed=0
まとめ
いかがでしたでしょうか。Ansibleはシンプルな書式ながら、今回紹介した以外にも多くのmoduleやoptionが存在します。使いこなすことで、多くのことが実現可能なので、ぜひチャレンジしてみてください。
LINE株式会社では、さまざまな分野のスキルをもつフロントエンドエンジニアを募集しています。私たちと一緒にプラットフォーム・グローバル展開を発展させていきたい方はぜひご応募ください。
