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、デプロイ等を絡めた構成管理が前提の状況な為、知識を確実に体系化する必要がある。