:>/dev/null

ラガードエンジニアの不撓不屈の精神/unlearning/go beyond

Ansibleを使用した構成管理に入門した

ansibleを使用して構成管理をする場合の条件分岐方法の調査を行った時の勉強メモ。

  • 以下構築要件
    • Ansibleで構成管理を行う(冪等性の担保)
    • Ansibleで各環境毎に設定内容を書き換える
      • PRD(Production)/STG(Staging)/sandbox等

■下記に各設定サンプルのconfファイルを記載する

  • template/prd.confの設定
<source>
  @id prd_src
  @type   config_expander
  <config>
    @type tail
    @label @{{ td_agent_label }}
    read_from_head true
    path /home/prd/logs/*.log
    pos_file /var/log/td-agent/prd.pos
    format none
    message_key log_line
    tag {{ td_agent_tag }}
  </config>
</source>
  • template/sbx.confの設定
<source>
  @id sbx_src
  @type   config_expander
  <config>
    @type tail
    @label @{{ td_agent_label }}
    read_from_head true
    path /home/sbx/logs/*.log
    pos_file /var/log/td-agent/sbx.pos
    format none
    message_key log_line
    tag {{ td_agent_tag }}
  </config>
</source>
  • template/td-agent.confの設定
{% if is_sandbox %}
@include sbx.conf
{% else %}
@include prd.conf
{% endif %}
  • group_vars/servers.ymlの設定
is_sandbox: True
tdagent_force_restart: False
tdagent_conf_dir: "{{ inventory_dir }}/templates/td-agent"
td_agent_label: test-pjt
td_agent_tag: stage-src-tag
td_agent_loginfo_group: test-grp
tdagent_conf_files:
 - { src: "{{ tdagent_conf_dir }}/td-agent.conf.j2", dest: "td-agent.conf" }
 - { src: "{{ tdagent_conf_dir }}/in.www.nginx.access.conf.j2", dest: "in.www.nginx.access.conf" }
 - { src: "{{ tdagent_conf_dir }}/in.www.nginx.error.conf.j2", dest: "in.www.nginx.error.conf" }
 - { src: "{{ tdagent_conf_dir }}/out.conf.j2", dest: "out.conf" }
tdagent_root_exec: True
  • hostsの設定(inventory)
[all:vars]
ansible_connection=ssh
ansible_user=username
ansible_ssh_pass=userpwd
ansible_sudo_pass=rootpwd

[servers]
vm1234 ansible_host=172.31.100.1 newrelic_install=true
  • servers.ymlの設定(playbook)
---
- hosts: servers
  become: yes
  strategy: free
  become_method: su
  become_user: root
  roles:
    - { role: newrelic, when: "newrelic_install == 'true'" }
  • playbook実行
# ansible-playbook -i hosts -u username servers.yml -K -S --diff

Ansibleを使用した構成管理構成を構築した。
冪等性の担保、コンテナ化した構成管理時に効率的に運用管理が行う事が可能。
CI/CD、デプロイ等を絡めた構成管理が前提の状況な為、知識を確実に体系化する必要がある。