一、准备环境
1、准备机器
本次以192.168.190.155,192.168.190.156,192.168.190.157,192.168.190.158四台虚机为例,本文操作全在管理机中。
机器IP | 节点 | CPU&内存 | 系统盘 | 存储 |
192.168.190.155 | Ansible管理机 | 2C4G | 50GB | 50GB |
192.168.190.158 | Master/Worker(被管理机) | 2C4G | 50GB | 50GB |
192.168.190.157 | Master/Worker(被管理机) | 2C4G | 50GB | 50GB |
192.168.190.156 | Worker(被管理机) | 2C4G | 50GB | 50GB |
本次主要操作都在管理机:192.168.190.155上完成
二、详细步骤
1、配置ansible的hosts,定义变量:
vi /etc/ansible/hosts
内容:
[rabbitmq] 192.168.190.158 192.158.190.157 192.168.190.156 [rabbitmq_servers] rabbitmq-1 ansible_host=192.168.1.101 rabbitmq-2 ansible_host=192.168.1.102 rabbitmq-3 ansible_host=192.168.1.103 |
2、在管理机上创建安装rabbitmq的必要的目录
mkdir -p /etc/ansible/roles/{rabbitmq,java}/{defaults,tasks,templates} |
3、编辑配置java剧本
目录结构图:
①、配置defaults目录下的配置文件(设置变量):main.yml
vi /etc/ansible/roles/java/defaults/main.yml
内容:
--- JAVA_VERSION: 1.8.2_192 JAVA_HOME: /data/java JAVA_TAR: jdk-8u192-linux-x64.tar.gz |
②、配置tasks目录下的配置文件(剧本):java.yml
vi /etc/ansible/roles/java/tasks/java.yml
内容:
--- - name: Deploy Java-JDK-1.8-192 hosts: all become: yes roles: - java tasks: - name: Copy Jdk copy: src: /{{JAVA_HOME}}/{{JAVA_VERSION2}} dest: /tmp/{{JAVA_VERSION2}} - name: Create Kafka logs directory ansible.builtin.file: path: /data/java state: directory - name: Extrack Jdk unarchive: src: /tmp/{{JAVA_VERSION2}} dest: /data/java/ remote_src: yes - name: Add JAVA_HOME to /etc/profile.d/ blockinfile: path: /etc/profile.d/java.sh create: yes mode: '0644' block: | export JAVA_HOME=/{{JAVA_HOME}}/jdk-{{JAVA_VERSION}} export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar marker: "# {mark} ANSIBLE MANAGED BLOCK - JAVA_HOME" |
4、编辑配置rabbitmq剧本
目录结构图:
①、配置defaults目录下的配置文件(设置变量):main.yml
vi /etc/ansible/roles/rabbitmq/defaults/main.yml
内容:
--- ERLANG_VERSION: 25.0.2 ERLANG_HOME: /data/erlang/erlang-25.0.2-1.el9.x86_64.rpm ERLANG_INSTALL_DIR: /data/erlang RABBITMQ_VERSION: 3.10.2 RABBITMQ_HOME: /data/rabbitmq/rabbitmq-server-3.10.2-1.el8.noarch.rpm RABBITMQ_INSTALL_DIR: /data/rabbitmq |
②、配置tasks目录下的配置文件(剧本):rabbit.yml
vi /etc/ansible/roles/rabbitmq/tasks/rabbit.yml
内容:
--- - name: Deploy rabbitmq hosts: rabbitmq become: yes roles: - rabbitmq tasks: - name: Copy erlang copy: src: "{{ ERLANG_HOME }}" dest: /tmp/erlang-{{ ERLANG_VERSION }}-1.el9.x86_64.rpm - name: Copy rabbitmq copy: src: "{{ RABBITMQ_HOME }}" dest: /tmp/rabbitmq-server-{{ RABBITMQ_VERSION }}-1.el8.noarch.rpm - name: Extrack erlang ansible.builtin.yum: name: /tmp/erlang-{{ ERLANG_VERSION }}-1.el9.x86_64.rpm state: present - name: Ensure erlang ansible.builtin.yum: name: erlang state: present - name: Ensure socat ansible.builtin.yum: name: socat state: present - name: Extrck rabbitmq ansible.builtin.yum: name: /tmp/rabbitmq-server-{{ RABBITMQ_VERSION }}-1.el8.noarch.rpm state: present - name: Reolad systemd manager and restart rabbitmq ansible.builtin.systemd: name: rabbitmq-server state: restarted daemon-reload: yes - name: Create rabbitmq ansible.builtin.file: path: /data/data state: directory - name: Create logs ansible.builtin.file: path: /data/rabbitmq/logs state: directory - name: Create rabbitmq-env.conf ansible.builtin.template: src: /etc/ansible/roles/rabbitmq/templates/rabbitmq.j2 dest: /etc/rabbitmq - name: Create erlang-cookie ansible.builtin.template: src: /etc/ansible/roles/rabbitmq/templates/.erlang.cookie.j2 dest: /etc/rabbitmq - name: Template /etc/hostname template: src: /etc/ansible/roles/rabbitmq/templates/hostname.j2 dest: /etc/hostname - name: Reload systemd-hostnamed (optional) systemd: name: systemd-hostnamed state: reloaded ignore_errors: true |
③、编辑配置jinja2文件(配合剧本使用,自动创建zookeeper配置文件):
a、.erlang.cookie.j2
vi /etc/ansible/roles/rabbitmq/templates/.erlang-cookie.j2
内容:
CACQNHYVCUKZAXNMSKSU |
b、rabbitmq.j2
vi /etc/ansible/roles/rabbitmq/templates/rabbitmq.j2
内容:
RABBITMQ_MNESIA_BASE=/data/data RABBITMQ_LOG_BASE=/data/rabbitmq/logs |
c、hostname.j2
vi /etc/ansible/roles/rabbitmq/templates/hostname.j2
内容:
{{ inventory_hostname }} |