Chapter 31

【ルール説明】name

mamono210
mamono210
2022.12.23に更新

name

name は task と play において適切に名前が付けられているか検証します。nameキーは Ansible の実行ログにおいて処理を識別するための重要な要素になります。task および play には基本的には必ずnameキーを付けるようにします。

tasks/main.yml
tasks:
  - name: make sure apache is running # <- この部分を検証する
    service:
      name: httpd
      state: started

name[casing]

名前はアルファベットの大文字から始まる必要があります。

問題のあるコード

tasks/main.yml
---
- hosts: all
  become: true

  tasks:
    - name: load and execute roles # <- アルファベットの小文字から始まっている
      ansible.builtin.include_role:
        name: "{{ item }}"
      loop:
        - mamono210.aws_s3_bootstrap
        - mamono210.aws_s3_get

修正されたコード

tasks/main.yml
---
- hosts: all
  become: true

  tasks:
    - name: Load and execute roles # <- アルファベットの大文字から始まっている
      ansible.builtin.include_role:
        name: "{{ item }}"
      loop:
        - mamono210.aws_s3_bootstrap
        - mamono210.aws_s3_get

name[missing]

すべての task にnameキーを付ける必要があります。

問題のあるコード

prepare.yml
.
.
.
  - ansible.builtin.include_tasks: create_resources.yml
    when: resource_state == 'present'
.
.
.

修正されたコード

prepare.yml
.
.
.
  - name: Create EC2 instance
    ansible.builtin.include_tasks: create_resources.yml
    when: resource_state == 'present'
.
.
.

name[play]

すべての play にnameキーを付ける必要があります。

問題のあるコード

tasks/main.yml
---
- hosts: all
  become: true

  tasks:
    - name: Load and execute roles
      ansible.builtin.include_role:
        name: "{{ item }}"
      loop:
        - mamono210.aws_s3_bootstrap
        - mamono210.aws_s3_get

修正されたコード

tasks/main.yml
---
- name: Prepare
  hosts: all
  become: true

  tasks:
    - name: Load and execute roles
      ansible.builtin.include_role:
        name: "{{ item }}"
      loop:
        - mamono210.aws_s3_bootstrap
        - mamono210.aws_s3_get

name[prefix]

main.yml以外のファイルを inculde して扱う場合に prefix をつけます。このルールはopt-in のため初期設定では無効化されています。

例えばmain.ymldeploy.ymlを inculde して扱う場合 prefilx にdepolyを付与する事によりこの処理がどのファイルから呼ばれているのかを判別することが容易になります。

問題のあるコード

tasks/deploy.yml
.
.
.
  - name: Restart Apache
    ansible.builtin.service:
      name: httpd
      state: restarted
.
.
.

修正されたコード

tasks/deploy.yml
.
.
.
  - name: deploy | Restart Apache
    ansible.builtin.service:
      name: httpd
      state: restarted
.
.
.

name[template]

nameキーでは Jinja テンプレートで記述する箇所は末尾にのみあるべき、と言う事らしいです。nameキーの内部で Jinja テンプレートを使用するとレンダリングが不可能な場合があるため推奨されていません。

問題のあるコード

tasks/main.yml
.
.
.
  - name: Grant permissions to {{ mariadb_db_user }} on {{ mariadb_db_name }}
    community.mysql.mysql_user:
      name: '{{ mariadb_db_user }}'
      password: '{{ mariadb_db_password }}'
.
.
.

修正されたコード

tasks/main.yml
.
.
.
  - name: Grant permissions to the user on the {{ mariadb_db_name }}
    community.mysql.mysql_user:
      name: '{{ mariadb_db_user }}'
      password: '{{ mariadb_db_password }}'
.
.
.

基本的にはnameキーでは Jinja テンプレートは利用しない方が良いのかもしれません。

tasks/main.yml
.
.
.
  - name: Grant permissions to the user on the database
    community.mysql.mysql_user:
      name: '{{ mariadb_db_user }}'
      password: '{{ mariadb_db_password }}'
.
.
.

参考サイト