Ansible

/var/log/intstance_1, /var/log/instance_2 のようなシーケンシャルなパスを変数に格納したいとき

- name: Set fatcs
  hosts: localhost
  sudo: no
  connection: local
  vars:
    instance_number: 4
  tasks:
    - name: Register instance's sequential path
      set_fact: 
        instance_path: /var/log/instance_{{ item }}/log
      with_sequence: start=1 end={{ instance_number }}
      register: sequential_path

    - name: Register instance's sequential path list
      set_fact:
        instance_path_list: 
          "{{ sequential_path.results | map(attribute='ansible_facts.instance_path') | list }}"
        
    - name: debug
      debug: 
        var: instance_path_list

実行結果結果

TASK [debug] **************************************************************************************************************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "instance_path_list": [
        "/var/log/instance_1/log",
        "/var/log/instance_2/log",
        "/var/log/instance_3/log",
        "/var/log/instance_4/log"
    ]
}

Ansibleのコーディング規約について

変数名

OpenShift, edXのコーディング規約を参考にして、以下のとおりに変数名を設定することにした。

  • Role変数はRole名を先頭につける。
    • Role名は、OpenShiftのように、省略形をつけるのではなくロール名をまんまつけること。他のRoleとバッティングすることを避けるため。3
  • ロール内に閉じた変数であれば、先頭に__をつける。

その他コーディング規約で意識することができたら随時追記予定