ansible自动化部署rabbitmq

一、准备环境

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
          export PATH=$PATH:$JAVA_HOME/bin        

          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 }}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CTSXWT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值