Help us understand the problem. What is going on with this article?

Ansible 2.7でyum + with_itemsを使うと出る警告の直し方

More than 1 year has passed since last update.

警告の内容

Ansible 2.7でyumモジュールを使っていたところ、以下の警告が出ました。

[DEPRECATION WARNING]: Invoking "yum" only once while using a loop via 
squash_actions is deprecated. Instead of using a loop to supply multiple items 
and specifying `name: {{ item }}`, please use `name: ['git', 'gcc']` and remove
 the loop. This feature will be removed in version 2.11. Deprecation warnings 
can be disabled by setting deprecation_warnings=False in ansible.cfg.

要はループを使うなと言うわけですが、squash_actionsって何か知らなかったので調べてみました。

squash_actionsとは

ANSIBLE_SQUASH_ACTIONSに以下のように記載されています。

ざっくり言うと、with_によるループを使っているときに、リストで渡すように最適化する機能です。

Ansible can optimise actions that call modules that support list parameters when using with_ looping. Instead of calling the module once for each item, the module is called once with the full list.The default value for this setting is only for certain package managers, but it can be used for any module.Currently, this is only supported for modules that have a name or pkg parameter, and only when the item is the only thing being passed to the parameter.

具体的には、以下のように書かれているときに、
yumモジュールを2回実行するのではなく、['git', 'gcc']のように自動的にリストにして、1回で実行してくれます。便利ですね。

- yum: name={{ item }}
  with_items:
    - git
    - gcc

DEFAULT_SQUASH_ACTIONSによれば、yumの他に、apt、homebrewなどパッケージマネージャがデフォルトで定義されています。

修正方法

Ansible 2.7 Porting Guideyumに書かれているように、以下のようにします。

- yum:
    name: "{{ packages }}"
    state: present
  vars:
    packages:
    - git
    - gcc

また、yumモジュールに関しては、以下のようにも書けます。こちらの方がシンプルですね。

- yum:
    name:
      - git
      - gcc
ikemo
2019/05から転職しました。
https://www.ikemo3.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした