From b8891aa714d0e6730d89d119aca89aa8161fea65 Mon Sep 17 00:00:00 2001 From: john-h-luo <67673717+john-h-luo@users.noreply.github.com> Date: Fri, 12 Aug 2022 20:56:46 +0800 Subject: [PATCH] [skip e2e] Add ansible deployment support for centos/redhat/debain/ubuntu (#18491) Signed-off-by: john-h-luo Signed-off-by: john-h-luo --- .../ansible.cfg | 2 +- .../deploy-docker.yml | 12 +--- .../inventory.ini | 14 ++-- .../roles/configure-hosts-file/tasks/main.yml | 5 -- .../roles/deploy-etcd/tasks/main.yml | 15 ++--- .../roles/deploy-minio/tasks/main.yml | 10 ++- .../roles/deploy-pulsar/tasks/main.yml | 13 +++- .../roles/docker-installation/tasks/main.yml | 66 ++++++++++++++----- .../roles/install-modules/tasks/main.yml | 15 ++++- 9 files changed, 100 insertions(+), 52 deletions(-) delete mode 100644 deployments/docker/cluster-distributed-deployment/roles/configure-hosts-file/tasks/main.yml diff --git a/deployments/docker/cluster-distributed-deployment/ansible.cfg b/deployments/docker/cluster-distributed-deployment/ansible.cfg index 72b033127b..bedca65cd5 100644 --- a/deployments/docker/cluster-distributed-deployment/ansible.cfg +++ b/deployments/docker/cluster-distributed-deployment/ansible.cfg @@ -1,4 +1,4 @@ [defaults] host_key_checking = False inventory = inventory.ini -private_key_file=~/.my_ssh_keys/gpc_sshkey +private_key_file=~/.ssh/id_ed25519 diff --git a/deployments/docker/cluster-distributed-deployment/deploy-docker.yml b/deployments/docker/cluster-distributed-deployment/deploy-docker.yml index da648d3a89..90244b3eb5 100644 --- a/deployments/docker/cluster-distributed-deployment/deploy-docker.yml +++ b/deployments/docker/cluster-distributed-deployment/deploy-docker.yml @@ -1,16 +1,10 @@ --- -- name: setup pre-requisites #Install prerequisite - hosts: all +- name: setup pre-requisites & Docker #Install prerequisite + hosts: dockernodes become: yes become_user: root roles: - install-modules - - configure-hosts-file - -- name: install docker - become: yes - become_user: root - hosts: dockernodes - roles: - docker-installation + \ No newline at end of file diff --git a/deployments/docker/cluster-distributed-deployment/inventory.ini b/deployments/docker/cluster-distributed-deployment/inventory.ini index 66d063e4b3..1ded087fae 100644 --- a/deployments/docker/cluster-distributed-deployment/inventory.ini +++ b/deployments/docker/cluster-distributed-deployment/inventory.ini @@ -3,9 +3,6 @@ dockernode01 dockernode02 dockernode03 -[admin] -ansible-controller - [coords] ; Take note the IP of this host VM, and replace 10.170.0.17 with it. dockernode01 @@ -25,15 +22,18 @@ nodes dependencies [docker:vars] -ansible_python_interpreter= /usr/bin/python3 -StrictHostKeyChecking= no +ansible_python_interpreter = /usr/bin/python3 +StrictHostKeyChecking = no +ansible_connection = ssh +; Replace linux-user with your linux user name +ansible_user = linux-user ; Setup variables to controll what type of network to use when creating containers. dependencies_network= host nodes_network= host -; Setup varibale to controll what version of Milvus image to use. -image= milvusdb/milvus:master-20220412-4781db8a +; Setup varibale to controll what image version of Milvus to use. +image= milvusdb/milvus:v2.1.0 ; Setup static IP addresses of the docker hosts as variable for container environment variable config. ; Before running the playbook, below 4 IP addresses need to be replaced with the IP of your host VM diff --git a/deployments/docker/cluster-distributed-deployment/roles/configure-hosts-file/tasks/main.yml b/deployments/docker/cluster-distributed-deployment/roles/configure-hosts-file/tasks/main.yml deleted file mode 100644 index fbdd5f5c75..0000000000 --- a/deployments/docker/cluster-distributed-deployment/roles/configure-hosts-file/tasks/main.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -- name: Configure Hosts File - lineinfile: path=/etc/hosts regexp='.*{{ item }}$' line="{{ hostvars[item].ansible_default_ipv4.address }} {{item}}" state=present - when: hostvars[item].ansible_default_ipv4.address is defined - with_items: "{{ groups['docker'] }}" diff --git a/deployments/docker/cluster-distributed-deployment/roles/deploy-etcd/tasks/main.yml b/deployments/docker/cluster-distributed-deployment/roles/deploy-etcd/tasks/main.yml index b7b3292851..bfdd06ba97 100644 --- a/deployments/docker/cluster-distributed-deployment/roles/deploy-etcd/tasks/main.yml +++ b/deployments/docker/cluster-distributed-deployment/roles/deploy-etcd/tasks/main.yml @@ -1,17 +1,16 @@ +- name: etcd volume + docker_volume: + name: etcd_volume + - name: etcd docker_container: name: etcd image: quay.io/coreos/etcd:v3.5.0 - command: "etcd -listen-peer-urls=http://{{etcd_ip}}:2380 -advertise-client-urls=http://{{etcd_ip}}:2379 -listen-client-urls http://0.0.0.0:2379,http://0.0.0.0:4001 -initial-advertise-peer-urls=http://{{etcd_ip}}:2380 --listen-metrics-urls=http://{{etcd_ip}}:2381 --initial-cluster default=http://{{etcd_ip}}:2380 --data-dir /etcd" - healthcheck: - test: ["CMD", "wget", "-q", "--tries=1", "--spider", "http://etcd_ip:/health"] - interval: 30s - timeout: 20s - retries: 3 + volumes: + - etcd_volume:/etcd + command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd env: ETCD_AUTO_COMPACTION_MODE: revision ETCD_AUTO_COMPACTION_RETENTION: "1000" ETCD_QUOTA_BACKEND_BYTES: "4294967296" - # volumes: - # - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd network_mode: "{{dependencies_network}}" #Use the network which defined as variable in Inventory. \ No newline at end of file diff --git a/deployments/docker/cluster-distributed-deployment/roles/deploy-minio/tasks/main.yml b/deployments/docker/cluster-distributed-deployment/roles/deploy-minio/tasks/main.yml index 075321e643..ee6bea3ae4 100644 --- a/deployments/docker/cluster-distributed-deployment/roles/deploy-minio/tasks/main.yml +++ b/deployments/docker/cluster-distributed-deployment/roles/deploy-minio/tasks/main.yml @@ -1,3 +1,7 @@ +- name: minio volume + docker_volume: + name: minio_volume + - name: "minio" docker_container: name: minio @@ -5,9 +9,9 @@ env: MINIO_ACCESS_KEY: minioadmin MINIO_SECRET_KEY: minioadmin - command: "minio server /minio_data" - # volumes: - # - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data + volumes: + - minio_volume:/data + command: minio server /data --console-address ":9001" healthcheck: test: ["CMD", "curl", "-f", "http://127.0.0.1:9000/minio/health/live"] interval: 30s diff --git a/deployments/docker/cluster-distributed-deployment/roles/deploy-pulsar/tasks/main.yml b/deployments/docker/cluster-distributed-deployment/roles/deploy-pulsar/tasks/main.yml index d495afb7c4..624a772f3c 100644 --- a/deployments/docker/cluster-distributed-deployment/roles/deploy-pulsar/tasks/main.yml +++ b/deployments/docker/cluster-distributed-deployment/roles/deploy-pulsar/tasks/main.yml @@ -1,3 +1,11 @@ +- name: pulsar volume + docker_volume: + name: pulsar_conf + +- name: pulsar volume + docker_volume: + name: pulsar_data + - name: "pulsar" docker_container: name: pulsar @@ -11,5 +19,8 @@ # maxMessageSize is missing from standalone.conf, must use PULSAR_PREFIX_ to get it configured PULSAR_PREFIX_maxMessageSize: "104857600" PULSAR_GC: -XX:+UseG1GC - command: "bin/pulsar standalone --no-functions-worker --no-stream-storage" #/bin/bash -c bin/apply-config-from-env.py conf/standalone.conf && + volumes: + - pulsar_conf:/pulsar/conf + - pulsar_data:/pulsar/data + command: bash -c '/pulsar/bin/apply-config-from-env.py /pulsar/conf/standalone.conf; exec bin/pulsar standalone --no-functions-worker' network_mode: "{{dependencies_network}}" #Use the network which defined as variable in Inventory. diff --git a/deployments/docker/cluster-distributed-deployment/roles/docker-installation/tasks/main.yml b/deployments/docker/cluster-distributed-deployment/roles/docker-installation/tasks/main.yml index b747158e2e..8c735a5cad 100644 --- a/deployments/docker/cluster-distributed-deployment/roles/docker-installation/tasks/main.yml +++ b/deployments/docker/cluster-distributed-deployment/roles/docker-installation/tasks/main.yml @@ -1,30 +1,64 @@ --- +- name: Install Docker Dependencies + yum: name={{ item }} state=latest update_cache=yes + with_items: + - yum-utils + - device-mapper-persistent-data + - lvm2 + when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux' + +- name: Add Docker Yum Repo + get_url: + url: https://download.docker.com/linux/centos/docker-ce.repo + dest: /etc/yum.repos.d/docker-ce.repo + when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux' + +- name: Install Docker + yum: + name: + - docker-ce + - docker-ce-cli + - containerd.io + state: latest + when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux' + +- name: Start Docker Service + service: + name: docker + state: started + enabled: yes + when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux' + - name: Install Docker Dependencies apt: name={{ item }} state=latest update_cache=yes with_items: - apt-transport-https - ca-certificates - - software-properties-common - tags: docker + - software-properties-common + when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu' -- name: Get Docker key +- name: Add Docker GPG key apt_key: url: https://download.docker.com/linux/ubuntu/gpg state: present - tags: docker + when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu' -- name: Add Docker packages to Repository +- name: Add Docker Apt Repo apt_repository: - repo: deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ ansible_lsb.codename|lower }} stable - tags: docker + repo: deb https://download.docker.com/linux/ubuntu bionic stable + state: present + when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu' -- name: Install Docker-CE - apt: name="docker-ce" state=latest update_cache=yes - tags: docker +- name: Install Docker + apt: + update_cache: yes + state: latest + name: + - docker-ce + - docker-ce-cli + - containerd.io + when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu' -- name: Install python3-docker - apt: name="python3-docker" state=latest update_cache=yes - tags: docker - -- name: Install docker-compose python3 library - command: "pip3 install docker-compose" +- name: Install 'Docker SDK for Python' + pip: + name: docker diff --git a/deployments/docker/cluster-distributed-deployment/roles/install-modules/tasks/main.yml b/deployments/docker/cluster-distributed-deployment/roles/install-modules/tasks/main.yml index df771dc117..3dd2294d70 100644 --- a/deployments/docker/cluster-distributed-deployment/roles/install-modules/tasks/main.yml +++ b/deployments/docker/cluster-distributed-deployment/roles/install-modules/tasks/main.yml @@ -1,4 +1,16 @@ --- +- name: Install Packages + yum: name={{ item }} state=latest update_cache=yes + with_items: + - ntp + - tcpdump + - python3 + - wget + - openssl + - curl + - python3-pip + when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux' + - name: Install Packages apt: name={{ item }} state=latest update_cache=yes with_items: @@ -9,5 +21,4 @@ - openssl - curl - python3-pip - - + when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu' \ No newline at end of file