diff --git a/README.md b/README.md index 2b06d2c..7b54b6d 100644 --- a/README.md +++ b/README.md @@ -158,7 +158,12 @@ ansible-galaxy install dsk_bot.datasaker |`maria_database_port`|`maria_database_port`에 Maria port 설정.|`None`| |`maria_database_name`|`maria_database_name`에 Maria database 설정.|`None`| |`maria_agent_port`|`maria_agent_port`에 Maria agent port 설정.|`9104`| - +|`reids_address`|`reids_address`에 redis address 설정.|`-`| +|`redis_agent_port`|`redis_agent_port`에 redis agent port 설정.|`19121`| +|`redis_user`|`redis_user`에 redis user 설정. (없을 경우 생략)|`-`| +|`redis_pass`|`redis_pass`에 redis user password 설정. (없을 경우 생략)|`-`| +|`aws_access_key_id`|`aws_access_key_id`에 cloudwatch agent 사용을 위한 key id 설정.|`-`| +|`aws_secret_access_key`|`aws_secret_access_key`에 cloudwatch agent 사용을 위한 access key 설정.|`-`| #### Ansible Playbook 상세 설정 Example (Linux) ```yml diff --git a/README_ko.md b/README_ko.md index 2b06d2c..7b54b6d 100644 --- a/README_ko.md +++ b/README_ko.md @@ -158,7 +158,12 @@ ansible-galaxy install dsk_bot.datasaker |`maria_database_port`|`maria_database_port`에 Maria port 설정.|`None`| |`maria_database_name`|`maria_database_name`에 Maria database 설정.|`None`| |`maria_agent_port`|`maria_agent_port`에 Maria agent port 설정.|`9104`| - +|`reids_address`|`reids_address`에 redis address 설정.|`-`| +|`redis_agent_port`|`redis_agent_port`에 redis agent port 설정.|`19121`| +|`redis_user`|`redis_user`에 redis user 설정. (없을 경우 생략)|`-`| +|`redis_pass`|`redis_pass`에 redis user password 설정. (없을 경우 생략)|`-`| +|`aws_access_key_id`|`aws_access_key_id`에 cloudwatch agent 사용을 위한 key id 설정.|`-`| +|`aws_secret_access_key`|`aws_secret_access_key`에 cloudwatch agent 사용을 위한 access key 설정.|`-`| #### Ansible Playbook 상세 설정 Example (Linux) ```yml diff --git a/defaults/main.yml b/defaults/main.yml index ba51be1..d4ef11a 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -60,6 +60,8 @@ mysql_agent_image_tag: "latest" plan_mysql_agent_image_tag: "latest" maria_agent_image_tag: "latest" plan_maria_agent_image_tag: "latest" +redis_agent_image_tag: "latest" +cloudwatch_agent_image_tag: "latest" container_agent_restart_policy: "always" node_agent_restart_policy: "always" @@ -71,6 +73,8 @@ mysql_agent_restart_policy: "always" plan_mysql_agent_restart_policy: "always" maria_agent_restart_policy: "always" plan_maria_agent_restart_policy: "always" +redis_agent_restart_policy: "always" +cloudwatch_agent_restart_policy: "always" container_agent_log_level: "INFO" node_agent_log_level: "INFO" diff --git a/tasks/check-agent.yml b/tasks/check-agent.yml index 9286cea..60b7e29 100644 --- a/tasks/check-agent.yml +++ b/tasks/check-agent.yml @@ -1,4 +1,7 @@ --- + +## host agent ## + - name: "Check dsk-node-agent" include_tasks: dsk-node-agent.yml when: '"dsk-node-agent" in datasaker_agents' @@ -35,6 +38,16 @@ include_tasks: dsk-plan-maria-agent.yml when: '"dsk-plan-maria-agent" in datasaker_agents' +- name: "Check dsk-redis-agent" + include_tasks: dsk-redis-agent.yml + when: '"dsk-redis-agent" in datasaker_agents' + +- name: "Check dsk-cloudwatch-agent" + include_tasks: dsk-cloudwatch-agent.yml + when: '"dsk-cloudwatch-agent" in datasaker_agents' + +## docker agent ## + - name: "Check dsk-docker-node-agent" include_tasks: dsk-docker-node-agent.yml when: '"dsk-docker-node-agent" in datasaker_docker_agents' @@ -69,4 +82,12 @@ - name: "Check dsk-docker-maria-agent" include_tasks: dsk-docker-maria-agent.yml - when: '"dsk-docker-maria-agent" in datasaker_docker_agents' \ No newline at end of file + when: '"dsk-docker-maria-agent" in datasaker_docker_agents' + +- name: "Check dsk-docker-redis-agent" + include_tasks: dsk-docker-redis-agent.yml + when: '"dsk-docker-redis-agent" in datasaker_agents' + +- name: "Check dsk-docker-cloudwatch-agent" + include_tasks: dsk-docker-cloudwatch-agent.yml + when: '"dsk-docker-cloudwatch-agent" in datasaker_agents' \ No newline at end of file diff --git a/tasks/dsk-cloudwatch-agent.yml b/tasks/dsk-cloudwatch-agent.yml new file mode 100644 index 0000000..dbd3a18 --- /dev/null +++ b/tasks/dsk-cloudwatch-agent.yml @@ -0,0 +1,20 @@ +--- +- name: "Make agent Directory" + ansible.builtin.file: + path: "{{ datasaker_host_path }}/{{ item }}" + state: directory + recurse: yes + owner: root + group: root + with_items: + - "dsk-cloudwatch-agent" + +- name: "Create agent env" + ansible.builtin.file: + path: "{{ datasaker_host_path }}/dsk-cloudwatch-agent/agent.env" + state: touch + +- name: "Setting dsk-cloudwatch-agent env" + template: + src: agent.env.j2 + dest: "{{ datasaker_host_path }}/dsk-cloudwatch-agent/agent.env" \ No newline at end of file diff --git a/tasks/dsk-docker-cloudwatch-agent.yml b/tasks/dsk-docker-cloudwatch-agent.yml new file mode 100644 index 0000000..9e2cc7d --- /dev/null +++ b/tasks/dsk-docker-cloudwatch-agent.yml @@ -0,0 +1,25 @@ +--- +- name: "Create datasaker local directory" + ansible.builtin.file: + path: "{{ item }}" + state: directory + owner: "{{datasaker_docker_user}}" + group: "{{datasaker_docker_group}}" + mode: '0755' + with_items: + - "{{ datasaker_docker_path }}/agent/dsk-cloudwatcj-agent" + +- name: "Run Datasaker Cloudwatch Agent" + ansible.builtin.docker_container: + name: dsk-docker-cloudwatch-agent + image: "datasaker/dsk-cloudwatch-agent:{{ cloudwatch_agent_image_tag }}" + state: started + restart_policy: "{{ cloudwatch_agent_restart_policy }}" + detach: true + env: + DSK_CLUSTER_ID: "{{ cloudwatch_agent_cluster | default('unknown') }}" + AWS_ACCESS_KEY_ID: "{{ aws_access_key_id }}" + AWS_SECRET_ACCESS_KEY: "{{ aws_secret_access_key }}" + volumes: + - "{{ datasaker_docker_path }}:/var/datasaker/" + - "{{ datasaker_docker_global_config }}:/etc/datasaker/global-config.yml:ro" \ No newline at end of file diff --git a/tasks/dsk-docker-redis-agent.yml b/tasks/dsk-docker-redis-agent.yml new file mode 100644 index 0000000..6e33fbb --- /dev/null +++ b/tasks/dsk-docker-redis-agent.yml @@ -0,0 +1,32 @@ +--- +- name: "Create datasaker local directory" + ansible.builtin.file: + path: "{{ item }}" + state: directory + owner: "{{datasaker_docker_user}}" + group: "{{datasaker_docker_group}}" + mode: '0755' + with_items: + - "{{ datasaker_docker_path }}/agent/dsk-redis-agent" + +- name: "Create agent config" + ansible.builtin.file: + path: "{{ datasaker_docker_path }}/dsk-docker-redis-agent-config.yml" + state: touch + +- name: "Setting dsk-redis-agent config" + template: + src: redis-agent-config.yml.j2 + dest: "{{ datasaker_docker_path }}/dsk-docker-redis-agent-config.yml" + +- name: "Run Datasaker Redis Agent" + ansible.builtin.docker_container: + name: dsk-docker-redis-agent + image: "datasaker/dsk-redis-agent:{{ redis_agent_image_tag }}" + state: started + restart_policy: "{{ redis_agent_restart_policy }}" + detach: true + volumes: + - "{{ datasaker_docker_path }}:/var/datasaker/" + - "{{ datasaker_docker_global_config }}:/etc/datasaker/global-config.yml:ro" + - "{{ datasaker_docker_path }}/dsk-docker-redis-agent-config.yml:/etc/datasaker/dsk-redis-agent/agent-config.yml:ro" \ No newline at end of file diff --git a/tasks/dsk-redis-agent.yml b/tasks/dsk-redis-agent.yml new file mode 100644 index 0000000..f22996d --- /dev/null +++ b/tasks/dsk-redis-agent.yml @@ -0,0 +1,20 @@ +--- +- name: "Make agent Directory" + ansible.builtin.file: + path: "{{ datasaker_host_path }}/{{ item }}" + state: directory + recurse: yes + owner: root + group: root + with_items: + - "dsk-redis-agent" + +- name: "Create agent config" + ansible.builtin.file: + path: "{{ datasaker_host_path }}/dsk-redis-agent/agent-config.yml" + state: touch + +- name: "Setting dsk-redis-agent config" + template: + src: redis-agent-config.yml.j2 + dest: "{{ datasaker_host_path }}/dsk-redis-agent/agent-config.yml" \ No newline at end of file diff --git a/templates/agent.env.j2 b/templates/agent.env.j2 new file mode 100644 index 0000000..9b68c13 --- /dev/null +++ b/templates/agent.env.j2 @@ -0,0 +1,2 @@ +AWS_ACCESS_KEY_ID={{ aws_access_key_id | default('None') }} +AWS_SECRET_ACCESS_KEY={{ aws_secret_access_key | default('None') }} \ No newline at end of file diff --git a/templates/redis-agent-config.yml.j2 b/templates/redis-agent-config.yml.j2 new file mode 100644 index 0000000..a0fde6d --- /dev/null +++ b/templates/redis-agent-config.yml.j2 @@ -0,0 +1,19 @@ +agent: + metadata: + agent_name: "{{ redis_agent_name | default('dsk-redis-agent') }}" + cluster_id: "{{ redis_agent_cluster | default('unknown') }}" + option: + external_labels: + redis: {{ reids_address }} + exporter_config: + command: "/usr/bin/dsk-redis-exporter" + port: {{ redis_agent_port | default('19121') }} + args: + {% if ((redis_user) and (redis_pass)) %} + - --redis.addr=redis://{{ redis_user }}:{{ redis_pass }}@{{ redis_address }} + {% else %} + - --redis.addr=redis://{{ redis_address }} + {% endif %} + scrape_configs: + - job_name: dsk-redis-agent + url: "localhost:{{ redis_agent_port | default('19121') }}" \ No newline at end of file