diff --git a/defaults/main.yml b/defaults/main.yml index e261351..82e9682 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -36,5 +36,35 @@ dsk_public_gpg_key: "https://dsk-agent-s3.s3.ap-northeast-2.amazonaws.com/dsk-ag datasaker_agents: ['dsk-node-agent'] +datasaker_docker_agents: ['dsk-docker-node-agent'] + +datasaker_docker_config_path: "~/.datasaker" +datasaker_docker_global_config: "{{ datasaker_docker_config_path }}/config.yml" + +datasaker_docker_path: "/var/datasaker" +datasaker_docker_user: "datasaker" +datasaker_docker_group: "datasaker" +datasaker_docker_user_uid: 202306 +datasaker_docker_user_gid: 202306 +VAR_CLUSTER_ID: "unknown_cluster" + +container_agent_image_tag: "latest" +node_agent_image_tag: "latest" +trace_agent_image_tag: "latest" +log_agent_image_tag: "latest" +postgres_agent_image_tag: "latest" + +container_agent_restart_policy: "always" +node_agent_restart_policy: "always" +trace_agent_restart_policy: "always" +log_agent_restart_policy: "always" +postgres_agent_restart_policy: "always" + +container_agent_log_level: "INFO" +node_agent_log_level: "INFO" +trace_agent_log_level: "INFO" +log_agent_log_level: "INFO" +postgres_agent_log_level: "INFO" + uninstall: False datasaker_clean: False diff --git a/tasks/check-agent.yml b/tasks/check-agent.yml index b576529..6b06237 100644 --- a/tasks/check-agent.yml +++ b/tasks/check-agent.yml @@ -1,20 +1,48 @@ --- -- name: Check dsk-node-agent +- name: "Check dsk-node-agent" include_tasks: dsk-node-agent.yml when: '"dsk-node-agent" in datasaker_agents' -- name: Check dsk-trace-agent +- name: "Check dsk-trace-agent" include_tasks: dsk-trace-agent.yml when: '"dsk-trace-agent" in datasaker_agents' -- name: Check dsk-log-agent +- name: "Check dsk-log-agent" include_tasks: dsk-log-agent.yml when: '"dsk-log-agent" in datasaker_agents' -- name: Check dsk-postgres-agent +- name: "Check dsk-postgres-agent" include_tasks: dsk-postgres-agent.yml when: '"dsk-postgres-agent" in datasaker_agents' -- name: Check dsk-plan-postgres-agent +- name: "Check dsk-plan-postgres-agent" include_tasks: dsk-plan-postgres-agent.yml when: '"dsk-plan-postgres-agent" in datasaker_agents' + +- name: "Check dsk-docker-node-agent" + include_tasks: dsk-docker-node-agent.yml + when: '"dsk-docker-node-agent" in datasaker_docker_agents' + +- name: "Check dsk-docker-elasticsearch-agent" + include_tasks: dsk-docker-elasticsearch-agent.yml + when: '"dsk-docker-elasticsearch-agent" in datasaker_docker_agents' + +- name: "Check dsk-docker-log-agent" + include_tasks: dsk-docker-log-agent.yml + when: '"dsk-docker-log-agent" in datasaker_docker_agents' + +- name: "Check dsk-docker-mongo-agent" + include_tasks: dsk-docker-mongo-agent.yml + when: '"dsk-docker-mongo-agent" in datasaker_docker_agents' + +- name: "Check dsk-docker-mysql-agent" + include_tasks: dsk-docker-mysql-agent.yml + when: '"dsk-docker-mysql-agent" in datasaker_docker_agents' + +- name: "Check dsk-docker-postgres-agent" + include_tasks: dsk-docker-postgres-agent.yml + when: '"dsk-docker-postgres-agent" in datasaker_docker_agents' + +- name: "Check dsk-docker-trace-agent" + include_tasks: dsk-docker-trace-agent.yml + when: '"dsk-docker-trace-agent" in datasaker_docker_agents' diff --git a/tasks/dsk-common.yml b/tasks/dsk-common.yml index 72c1340..1cf4566 100644 --- a/tasks/dsk-common.yml +++ b/tasks/dsk-common.yml @@ -8,8 +8,33 @@ group: root with_items: - /etc/datasaker + when: + - ansible_facts.os_family in ["Debian", "RedHat"] + - datasaker_agents - name: "Setting global-config" template: src: global-config.yml.j2 - dest: "/etc/datasaker/global-config.yml" \ No newline at end of file + dest: "/etc/datasaker/global-config.yml" + when: + - ansible_facts.os_family in ["Debian", "RedHat"] + - datasaker_agents + +- name: "Make Datasaker Directory" + ansible.builtin.file: + path: "{{ item }}" + state: directory + recurse: yes + owner: root + group: root + with_items: + - "{{ datasaker_docker_config_path }}" + when: + - datasaker_docker_agents + +- name: "Setting global-config" + template: + src: global-config.yml.j2 + dest: "{{ datasaker_docker_global_config }}" + when: + - datasaker_docker_agents \ No newline at end of file diff --git a/tasks/dsk-docker-log-agent.yml b/tasks/dsk-docker-log-agent.yml new file mode 100644 index 0000000..d7e1034 --- /dev/null +++ b/tasks/dsk-docker-log-agent.yml @@ -0,0 +1,31 @@ +--- +- 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-log-agent" + +- name: "Setting dsk-log-agent config" + template: + src: log-agent-config.yml.j2 + dest: "{{ datasaker_docker_path }}/log-agent-config.yml" + +- name: Run Datasaker Log Agent + docker_container: + name: dsk-log-agent + image: "datasaker/dsk-log-agent:{{ trace_agent_image_tag }}" + state: started + detach: true + restart_policy: always + env: + DKS_LOG_LEVEL: "{{ log_agent_log_level }}" + command: "-global.config=/etc/datasaker/global-config.yml -agent.config=/etc/datasaker/dsk-log-agent/agent-config.yml -mount.volume=true" + volumes: + - "{{ datasaker_docker_path }}:/var/datasaker/" + - "/var/lib/docker/containers/:/var/datasaker/log/:ro" + - "{{ datasaker_docker_global_config }}:/etc/datasaker/global-config.yml:ro" + - "{{ datasaker_docker_path }}/log-agent-config.yml:/etc/datasaker/dsk-log-agent/agent-config.yml:ro" diff --git a/tasks/dsk-docker-node-agent.yml b/tasks/dsk-docker-node-agent.yml new file mode 100644 index 0000000..64317b9 --- /dev/null +++ b/tasks/dsk-docker-node-agent.yml @@ -0,0 +1,69 @@ +--- +- name: "Create datasaker group" + ansible.builtin.group: + name: "{{datasaker_docker_group}}" + gid: "{{datasaker_docker_user_gid}}" + state: present + +- name: "Create datasaker user" + block: + - ansible.builtin.user: + name: "{{datasaker_docker_user}}" + uid: "{{datasaker_docker_user_uid}}" + group: "{{datasaker_docker_group}}" + shell: /usr/sbin/nologin + system: yes + state: present + rescue: + - ansible.builtin.shell: "sudo useradd -r -u {{datasaker_docker_user_uid}} -g {{datasaker_docker_group}} -s /usr/sbin/nologin {{datasaker_docker_user}}" + ignore_errors: true + +- 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-container-agent" + - "{{ datasaker_docker_path }}/agent/dsk-node-agent" + - "{{ datasaker_docker_path }}/log" + + +- name: "Run Datasaker Container Agent" + ansible.builtin.docker_container: + name: dsk-container-agent + image: "datasaker/dsk-container-agent:{{ container_agent_image_tag }}" + state: started + restart_policy: "{{ container_agent_restart_policy }}" + privileged: yes + env: + DSK_CLUSTER_ID: "{{ VAR_CLUSTER_ID }}" + GOMAXPROCS: '1' + DSK_LOG_LEVEL: "{{ container_agent_log_level }}" + volumes: + - "{{ datasaker_docker_path }}:/var/datasaker/" + - "/:/rootfs/:ro" + - "/var/run/:/var/run/:ro" + - "/sys/:/sys/:ro" + - "/dev/disk/:/dev/disk/:ro" + - "{{ datasaker_docker_global_config }}:/etc/datasaker/global-config.yml:ro" + +- name: "Run Datasaker Node Agent" + ansible.builtin.docker_container: + name: dsk-node-agent + image: "datasaker/dsk-node-agent:{{ node_agent_image_tag }}" + state: started + restart_policy: "{{ node_agent_restart_policy }}" + privileged: yes + network_mode: host + pid_mode: host + env: + DSK_CLUSTER_ID: "{{ VAR_CLUSTER_ID }}" + DSK_LOG_LEVEL: "{{ node_agent_log_level }}" + volumes: + - "{{ datasaker_docker_path }}:/var/datasaker/" + - "/proc/:/host/proc/:ro" + - "/sys/:/host/sys/:ro" + - "{{ datasaker_docker_global_config }}:/etc/datasaker/global-config.yml:ro" diff --git a/tasks/dsk-docker-postgres-agent.yml b/tasks/dsk-docker-postgres-agent.yml new file mode 100644 index 0000000..cd21505 --- /dev/null +++ b/tasks/dsk-docker-postgres-agent.yml @@ -0,0 +1,2 @@ +--- + diff --git a/tasks/dsk-docker-trace-agent.yml b/tasks/dsk-docker-trace-agent.yml new file mode 100644 index 0000000..d97a059 --- /dev/null +++ b/tasks/dsk-docker-trace-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-trace-agent" + +- name: "Setting dsk-trace-agent config" + template: + src: trace-agent-config.yml.j2 + dest: "{{ datasaker_docker_path }}/trace-agent-config.yml" + +- name: "Run Datasaker trace Agent" + ansible.builtin.docker_container: + name: dsk-trace-agent + image: "datasaker/dsk-trace-agent:{{ trace_agent_image_tag }}" + state: started + restart_policy: "{{ trace_agent_restart_policy }}" + detach: yes + published_ports: + - 4317:4317/tcp + - 4318:4318/tcp + env: + DKS_LOG_LEVEL: "{{ trace_agent_log_level }}" + volumes: + - "{{ datasaker_docker_path }}:/var/datasaker/" + - "{{ datasaker_docker_global_config }}:/etc/datasaker/global-config.yml:ro" + - "{{ datasaker_docker_path }}/trace-agent-config.yml:/etc/datasaker/dsk-trace-agent/agent-config.yml:ro" diff --git a/tasks/main.yml b/tasks/main.yml index e5b4c3a..47cbfa5 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,20 +1,46 @@ --- -- name: Include Gather Ansible Facts task on Ansible >= 2.10 +- name: "Include Gather Ansible Facts task on Ansible >= 2.10" include_tasks: gather-facts.yml - when: ansible_version.major >= 2 and ansible_version.minor >= 10 + when: + - ansible_version.major >= 2 + - ansible_version.minor >= 10 -- name: Include Datasaker Add Repository +- name: "Check Datasaker Agent List" + set_fact: + datasaker_agents: [] + when: datasaker_docker_agents | select('search', 'docker') | list | count > 0 + +- name: "Include Datasaker Add Directory Config" include_tasks: dsk-common.yml - when: uninstall == False and ansible_facts.os_family == "Debian" or ansible_facts.os_family == "RedHat" + when: + - uninstall == False -- name: Include Datasaker Debian Host Agent Install +- name: "Include Datasaker Debian Host Agent Install" include_tasks: dsk-debian-pkg.yml - when: uninstall == False and ansible_facts.os_family == "Debian" + when: + - uninstall == False + - ansible_facts.os_family == "Debian" + - datasaker_agents -- name: Include Datasaker RedHat Host Agent Install +- name: "Include Datasaker RedHat Host Agent Install" include_tasks: dsk-redhat-pkg.yml - when: uninstall == False and ansible_facts.os_family == "RedHat" + when: + - uninstall == False + - ansible_facts.os_family == "RedHat" + - datasaker_agents -- name: Uninstall Datasaker Agent +- name: "Include Datasaker Agent Install" + include_tasks: check-agent.yml + when: + - uninstall == False + +- name: "Include Docker Agent Path Permissions Setting" + include_tasks: permissions.yml + when: + - uninstall == False + - datasaker_docker_agents + +- name: "Uninstall Datasaker Agent" include_tasks: remove-datasaker.yml - when: uninstall == True + when: + - uninstall == True diff --git a/tasks/permissions.yml b/tasks/permissions.yml new file mode 100644 index 0000000..f95f13c --- /dev/null +++ b/tasks/permissions.yml @@ -0,0 +1,6 @@ +- name: "Change owner and group of datasaker docker directory" + ansible.builtin.file: + path: /var/datasaker + owner: "{{ datasaker_docker_user }}" + group: "{{ datasaker_docker_group }}" + recurse: yes diff --git a/tasks/remove-datasaker.yml b/tasks/remove-datasaker.yml index 99b2781..2dcfa9f 100644 --- a/tasks/remove-datasaker.yml +++ b/tasks/remove-datasaker.yml @@ -45,7 +45,23 @@ with_items: - /etc/datasaker - /var/log/datasaker + - /var/datasaker + - ~/.datasaker - "{{ apt_sources_list }}" - "{{ apt_trusted_d_keyring }}" - "{{ apt_usr_share_keyring }}" when: datasaker_clean == True + +- name: "Remove datasaker_docker_user" + ansible.builtin.user: + name: "{{datasaker_docker_user}}" + state: absent + when: datasaker_clean == True + ignore_errors: yes + +- name: "Remove datasaker_docker_group" + ansible.builtin.group: + name: "{{datasaker_docker_group}}" + state: absent + when: datasaker_clean == True + ignore_errors: yes \ No newline at end of file