概要
Ansibleのwith_items
ディレクティブというループ処理(シーケンシャル呼び出し処理)を実行できるものを利用して、いろいろ一気にyum install
してみたいと思います。
playbook例
playbookはこんなかんじです。
今回の例ではdocker
とnginx
をインストールしようとしています。
with_items
に定義した項目は{{ item }}
変数に代入されます。
そのため処理としてはyum: name=docker-io
とyum: 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を短くわかりやすく記述することができるようになるかと思います。
- 作者: 若山史郎
- 発売日: 2014/07/30
- メディア: Kindle版
- この商品を含むブログ (2件) を見る