かべぎわブログ

技術的なことについてかけたらいいな…

Ansibleのwith_itemsで一気にいろいろyumインストールする

概要

Ansibleのwith_itemsディレクティブというループ処理(シーケンシャル呼び出し処理)を実行できるものを利用して、いろいろ一気にyum installしてみたいと思います。

playbook例

playbookはこんなかんじです。
今回の例ではdockernginxをインストールしようとしています。
with_itemsに定義した項目は{{ item }}変数に代入されます。
そのため処理としてはyum: name=docker-ioyum: name=nginxが実行されることになります。

実行結果

このplaybookを実行してみるとこんなかんじです。
changedはいくらループをまわしても1つとしてカウントされるので要注意です。

$  ansible-playbook -i ansible_hosts yum_with_items.yml

PLAY [localhost] *****************************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************
ok: [localhost]

TASK [yum install] ***************************************************************************************************************************
changed: [localhost] => (item=[u'docker-io', u'nginx'])

PLAY RECAP ***********************************************************************************************************************************
localhost                  : ok=2    changed=1    unreachable=0    failed=0 

実際にインストールされました!

$ sudo yum list installed | grep docker
docker.x86_64                      17.06.2ce-1.102.amzn2             @amzn2-core

$ sudo yum list installed | grep nginx
nginx.x86_64                       1:1.12.2-2.el7                    @epel      
nginx-all-modules.noarch           1:1.12.2-2.el7                    @epel      
nginx-filesystem.noarch            1:1.12.2-2.el7                    @epel      
nginx-mod-http-geoip.x86_64        1:1.12.2-2.el7                    @epel      
nginx-mod-http-image-filter.x86_64 1:1.12.2-2.el7                    @epel      
nginx-mod-http-perl.x86_64         1:1.12.2-2.el7                    @epel      
nginx-mod-http-xslt-filter.x86_64  1:1.12.2-2.el7                    @epel      
nginx-mod-mail.x86_64              1:1.12.2-2.el7                    @epel      
nginx-mod-stream.x86_64            1:1.12.2-2.el7                    @epel   

おわりに

with_itemsを利用して一気にyum installすることができました。
ループ処理を使うことでplaybookを短くわかりやすく記述することができるようになるかと思います。


入門Ansible

入門Ansible