こちらの記事はAnsible lint Advent Calendar 2022 13日目の記事になります。
今回はルールnameについて説明します。
name
nameはtaskとplayにおいて適切に名前が付けられているか検証します。name
キーはAnsibleの実行ログにおいて処理を識別するための重要な要素になります。taskおよびplayには基本的には必ずname
キーを付けるようにします。
tasks:
- name: make sure apache is running # <- この部分を検証する
service:
name: httpd
state: started
name[casing]
名前はアルファベットの大文字から始まる必要があります。
問題のあるコード
---
- 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
修正されたコード
---
- 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
キーを付ける必要があります。
問題のあるコード
.
.
.
- ansible.builtin.include_tasks: create_resources.yml
when: resource_state == 'present'
.
.
.
修正されたコード
.
.
.
- name: Create EC2 instance
ansible.builtin.include_tasks: create_resources.yml
when: resource_state == 'present'
.
.
.
name[play]
すべてのplayにname
キーを付ける必要があります。
問題のあるコード
---
- 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: 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.yml
でdeploy.yml
をinculdeして扱う場合prefilxにdepoly
を付与する事によりこの処理がどのファイルから呼ばれているか判別することが容易になります。
問題のあるコード
.
.
.
- name: Restart Apache
ansible.builtin.service:
name: httpd
state: restarted
.
.
.
修正されたコード
.
.
.
- name: deploy | Restart Apache
ansible.builtin.service:
name: httpd
state: restarted
.
.
.
name[template]
name
キーではJinjaテンプレートで記述する箇所は末尾にのみあるべき、と言う事らしいです。name
キーの内部でJinjaテンプレートを使用することレンダリングが不可能な場合があるため推奨されていません。
問題のあるコード
.
.
.
- name: Grant permissions to {{ mariadb_db_user }} on {{ mariadb_db_name }}
community.mysql.mysql_user:
name: '{{ mariadb_db_user }}'
password: '{{ mariadb_db_password }}'
.
.
.
修正されたコード
.
.
.
- 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テンプレートは利用しない方が良いのかもしれません。
.
.
.
- name: Grant permissions to the user on the database
community.mysql.mysql_user:
name: '{{ mariadb_db_user }}'
password: '{{ mariadb_db_password }}'
.
.
.