LoginSignup
0
0

More than 1 year has passed since last update.

【ルール説明・basic】name

Last updated at Posted at 2022-12-13

こちらの記事はAnsible lint Advent Calendar 2022 13日目の記事になります。

今回はルールnameについて説明します。

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 }}'
.
.
.

参考サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0