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株式会社では、さまざまな分野のスキルをもつフロントエンドエンジニアを募集しています。私たちと一緒にプラットフォーム・グローバル展開を発展させていきたい方はぜひご応募ください。