ansible playbook安装nacos

目录

1.创建nacos应用相关的用户

2.创建rocketmq所需目录任务

3.安装JDK1.8、python以及虚拟环境安装PyMysql(用于执行数据库脚本)

4. 解压nacos

5.创建nacos数据库

6.上传sql文件

7.创建数据库表

8.启动nacos

9.nacos集群主机ip配置

10.变量配置

11.配置nacos.yml


更详细的ansible安装信息可以参考rocketmq用ansible安装的这篇文章

https://blog.csdn.net/qq_38313984/article/details/143470663?sharetype=blogdetail&sharerId=143470663&sharerefer=PC&sharesource=qq_38313984&spm=1011.2480.3001.8118

1.创建nacos应用相关的用户

在/home/ansible/roles/nacos/tasks目录下,创建user_and_group.yml

- name: Ensure nacos Group Existsgroup:name: nacosstate: present- name: Create nacos useruser:name: nacosuserpassword: "{{ plaintext_password }}"system: yescreatehome: yesgroup: nacosstate: present- name: Grant sudo privileges to nacosuserlineinfile:path: /etc/sudoersstate: presentregexp: '^nacosuser'line: 'nacosuser ALL=(ALL:ALL) ALL'validate: 'visudo -cf %s'

2.创建rocketmq所需目录任务

在/home/ansible/roles/nacos/tasks目录下,创建directories.yml

# 创建rocketmq所需的目录结构
- name: Create Nacos Directory Structurefile:path: "{{ item.path }}"state: directorymode: "{{ item.mode }}"owner: nacosusergroup: nacosloop:- { path: "/opt/nacos", mode: '0755' }  # nacos安装包- { path: "/online/nacos", mode: '0755' }  # nacos解压目录- { path: "{{ python_venv_path }}",mode: '0755' } #python虚拟路径- { path: "/data/logs/nacos/on",mode: '0755' } # 日志存放路径- { path: "/data/logs/nacos/off",mode: '0755' } # 日志归档路径

3.安装JDK1.8、python以及虚拟环境安装PyMysql(用于执行数据库脚本)

在/home/ansible/roles/nacos/tasks目录下,创建install.yml

# 更新APT的软件包索引
- name: Update apt package indexapt:update_cache: yes# 校验是否已经安装jdk1.8
- name: Check if JDK 1.8 is installedansible.builtin.command: java -versionregister: java_versionchanged_when: falsefailed_when: false# 安装jdk1.8
- name: Install OpenJDK 1.8apt:name: openjdk-8-jdkstate: presentwhen: java_version.stdout is not search("1.8")# java home环境配置
- name: Ensure JAVA_HOME is set in /etc/profilelineinfile:dest: /etc/profileline: 'export JAVA_HOME={{java_home}}'regexp: 'export JAVA_HOME='  # This ensures the line is unique and avoids duplicates# java bin目录配置
- name: Ensure JAVA_HOME/bin is in PATH in /etc/profilelineinfile:dest: /etc/profileline: 'export PATH=$PATH:$JAVA_HOME/bin'regexp: 'export PATH=.*\$JAVA_HOME/bin'# 上传nacos安装包
- name: Upload Nacos packagebecome: yes # 使用become获取root 权限copy:src: "{{ nacos_package_path }}"dest: "{{ nacos_package_path }}"owner: nacosusergroup: nacosmode: '0644'- name: Ensure Python and pip are installedansible.builtin.package:name:- python3- python3-pipstate: present- name: Ensure python3-venv is installedansible.builtin.package:name: "python3-venv"state: present- name: Create a virtual environmentansible.legacy.command:cmd: "{{python_path}} -m venv {{python_venv_path}}"creates: "{{python_venv_path}}/bin/pip"- name: Install PyMySQL in the virtual environmentansible.legacy.command:cmd: "{{python_venv_path}}/bin/pip install PyMySQL"creates: "{{ python_venv_path }}/lib/python3.x/site-packages/PyMySQL"# 虚拟环境安装pip3、PyMysql(需要在虚拟环境安装PyMysql)
- name: Set ansible_python_interpreteransible.builtin.set_fact:ansible_python_interpreter: "{{ python_venv_path }}/bin/python"# 这个安装之后解决账号密码相关报错
- name: Install cryptography package using pip commandansible.legacy.command:cmd: "{{python_venv_path}}/bin/pip install cryptography"creates: "{{ python_venv_path }}/lib/python3.x/site-packages/cryptography"

4. 解压nacos

在/home/ansible/roles/nacos/tasks目录下,创建extract.yml

# 解压下载的rocket安装包
- name: Extract Nacos packageunarchive:src: "{{ nacos_package_path }}"dest: "{{ nacos_extract_dir }}"remote_src: yestags: [extract]

5.创建nacos数据库

在/home/ansible/roles/nacos/tasks目录下,创建create_nacos_db_and_user.yml

- name: Create a Nacos databasecommunity.mysql.mysql_db:name: "{{new_database}}"state: presentlogin_host: "{{ mysql_host }}"login_port: "{{ mysql_port }}"login_user: "{{login_user}}"login_password: "{{login_password}}"run_once: true- name: Create a new MySQL user with full privilegescommunity.mysql.mysql_user:name: "{{ new_database_user }}"password: "{{ new_user_password }}"host: "%"  # 允许从任何主机连接priv: "{{ new_database }}.*:ALL"  login_host: "{{ mysql_host }}"login_port: "{{ mysql_port }}"      login_user: "{{login_user}}"login_password: "{{ login_password }}"column_case_sensitive: falsestate: presentrun_once: true- name: Flush MySQL privilegescommunity.mysql.mysql_query:login_host: "{{ mysql_host }}"login_port: "{{ mysql_port }}"login_user: "{{login_user}}"login_password: "{{ login_password }}"query: "FLUSH PRIVILEGES;"run_once: true

6.上传sql文件

在/home/ansible/roles/nacos/tasks目录下,创建upload_file.yml

# 上传创建nacos相关表的sql文件
- name: Upload dashboard jar filebecome: yes # 使用become获取root 权限copy:src: "{{sql_file_path}}"  # 源文件路径dest: "{{sql_file_dest_path}}"  # 目标文件路径mode: '0644'# 上传集群配置文件
- name: Create Cluster conf filebecome: yes # 使用become获取root 权限template:src: "{{cluster_conf_j2_file}}"   # 源文件路径dest: "{{cluster_conf_dest_path}}"  # 目标文件路径mode: '0644'# 上传集群配置文件
- name: Cover Application Properties filebecome: yes # 使用become获取root 权限copy:src: "{{application_properties_path}}"  # 源文件路径dest: "{{application_properties_dest_path}}"  # 目标文件路径mode: '0644'# 上传logback日志配置文件
- name: Cover Logback filebecome: yes # 使用become获取root 权限copy:src: "{{logback_path}}"  # 源文件路径dest: "{{logback_dest_path}}"  # 目标文件路径mode: '0644'

7.创建数据库表

在/home/ansible/roles/nacos/tasks目录下,创建init_database.yml

- name: Read SQL file contentsansible.builtin.slurp:src: "{{ sql_file_dest_path }}"register: sql_file_contentrun_once: true- name: Split SQL statements and execute each oneansible.builtin.set_fact:sql_statements: "{{ sql_file_content['content'] | b64decode | split(';')}}"run_once: true- name: Execute Create Table SQL statementcommunity.mysql.mysql_query:login_host: "{{ mysql_host }}"login_port: "{{ mysql_port }}"login_user: "{{ login_user }}"login_password: "{{ login_password }}"login_db: "{{ new_database }}"query: "{{ item }}"loop: "{{ sql_statements }}"when: item | trim | length > 0run_once: true

8.启动nacos

在/home/ansible/roles/nacos/tasks目录下,创建start.yml

- name: Execute Nacos startup scriptansible.builtin.shell:cmd: "cd {{nacos_extract_dir}}/nacos/bin && sh startup.sh"environment:JAVA_HOME: '{{java_home}}' #得指定java版本,测试环境有多个java版本register: nacos_startfailed_when: nacos_start.rc != 0  # 如果启动脚本返回非0状态码,则认为任务失败 - name: Check Nacos startup resultansible.builtin.debug:var: nacos_start.stdout

9.nacos集群主机ip配置

在/home/ansible/inventory/hosts中增加配置

[nacos]
nacos_node1 ansible_host=10.xx.x.1x cluster_conf_j2_file=cluster.conf.dev.j2
nacos_node2 ansible_host=10.xx.x.1x  cluster_conf_j2_file=cluster.conf.dev.j2
nacos_node3 ansible_host=10.xx.x.1x  cluster_conf_j2_file=cluster.conf.dev.j2

在/home/ansible/roles/nacos/templates目录下,创建cluster.conf.dev.j2,生产环境为cluster.conf.prod.j2

10.xx.x.1x:8848
10.xx.x.1x:8848
10.xx.x.1x:8848

10.变量配置

/home/ansible/roles/nacos/defaults的main.yml文件中配置

nacos_version: "2.4.0"
plaintext_password: xxxxxxxx
# 控制节点nacos安装包上传路径
nacos_package_path: /opt/nacos/nacos-server-{{nacos_version}}.tar.gz
# 被控节点nacos安装包解压路径
nacos_extract_dir: /online
#mysql配置
new_database: "nacos_db"
new_database_user: "nacos"
sql_file_path: /opt/nacos/mysql-schema.sql
sql_file_dest_path: /online/nacos/mysql-schema.sql# 集群文件路径配置
cluster_conf_dest_path: /online/nacos/conf/cluster.conf
# 数据库及密钥文件
application_properties_path: /opt/nacos/application.properties
application_properties_dest_path: /online/nacos/conf/application.properties#python虚拟路径
python_venv_path: /online/python/venv
#python路径
python_path: /usr/bin/python3
# java路径
java_home: /usr/lib/jvm/java-8-openjdk-amd64# logback文件
logback_path: /opt/nacos/nacos-logback.xml
logback_dest_path: /online/nacos/conf/nacos-logback.xml

11.配置nacos.yml

/home/ansible/playbooks/dev/middleware中配置nacos.yml

---
- name: Install and configure Nacos clusterhosts: nacosbecome: yesroles:- role: nacoscluster_conf_j2_file: "{{ hostvars[inventory_hostname]['cluster_conf_j2_file'] }}"  # 对应的配置文件vars:login_user: "root"login_password: "xxxxx"mysql_host: 10.xxx.10.xxmysql_port: 3306new_user_password: "xxxxxxxx" #nacos管理页面

配置完上述项,在/home/ansible/playbooks/dev/middleware中,执行

ansible-playbook nacos.yml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/61672.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从搭建uni-app+vue3工程开始

技术栈 uni-app、vue3、typescript、vite、sass、uview-plus、pinia 一、项目搭建 1、创建以 typescript 开发的工程 npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project2、安装sass npm install -D sass// 安装sass-loader,注意需要版本10,…

SMMU软件指南操作之流(stream)安全性和流标识

安全之安全(security)博客目录导读 目录 1、流安全性 2、流标识 2.1 什么是 StreamID? 2.2 SubstreamID 的作用 1、流安全性 SMMUv3 架构在没有实现 RME 设备分配的情况下,支持两种可选的安全状态,这由 SMMU_S_IDR1.SECURE_IMPL 报告。如果实现了 RME 设备分配,则通过…

Android仿前端分页组件pagination

仿前端pagination Android仿前端分页组件pagination 最近Android原生有个需求就是做个分页组件,不用上拉加载,因为数据量太大用户喜欢前端的方式,UI主要是拼凑比较简单,主要补充了一些判断越界和数据不全的细节,记录方…

贴代码框架PasteForm特性介绍之query,linkquery

简介 PasteForm是贴代码推出的 “新一代CRUD” ,基于ABPvNext,目的是通过对Dto的特性的标注,从而实现管理端的统一UI,借助于配套的PasteBuilder代码生成器,你可以快速的为自己的项目构建后台管理端!目前管…

深入理解下oracle 11g block组成

深层次说,oracle数据库的最少组成单位应该是块,一般默认情况下,oracle数据库的块大小是8kb,其中存储着我们平常所需的数据。我们在使用过程中,难免会疑问道:“oracle数据块中到底是怎样组成的,平…

万有引力定律和库仑定律:自然的对称诗篇

万有引力定律和库仑定律:自然的对称诗篇 在宇宙深邃的知识长河中,万有引力定律和库仑定律恰似两颗璀璨的明珠,闪耀着人类智慧与自然奥秘的光辉。 十七世纪,牛顿在对天体运行的深邃思索中,拨开重重迷雾,发现…

win10局域网加密共享设置

1、创建共享账户 我的电脑右键选择管理 选择本地用户和组 -> 用户 双击用户 在空白区域右键,新建用户 然后创建用户 点击创建后 2、设置网络 右下角网络右键

.NET6 WebApi第1讲:VSCode开发.NET项目、区别.NET5框架【两个框架启动流程详解】

一、使用VSCode开发.NET项目 1、创建文件夹,使用VSCode打开 2、安装扩展工具 1>C# 2>安装NuGet包管理工具,外部dll包依靠它来加载 法1》:NuGet Gallery,注意要启动科学的工具 法2》NuGet Package Manager GUl&#xff0c…

准备阶段 Profiler性能分析工具的使用(一)

Unity 性能分析器 (Unity Profiler) 性能分析器记录应用程序性能的多个方面并显示相关信息。使用此信息可以做出有关应用程序中可能需要优化的事项的明智决策,并确认所做的优化是否产生预期结果。 默认情况下,性能分析器记录并保留游戏的最后 300 帧&a…

【强化学习的数学原理】第03课-贝尔曼最优公式-笔记

学习资料:bilibili 西湖大学赵世钰老师的【强化学习的数学原理】课程。链接:强化学习的数学原理 西湖大学 赵世钰 文章目录 一、例子:如何改进策略?二、最优策略和公式推导三、公式求解以及最优性四、最优策略的有趣性质五、本节课…

24小时自动监控,自动录制直播蓝光视频!支持抖音等热门直播软件

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 工具特点📒📝 使用🎈 获取方式 🎈⚓️ 相关链接 ⚓️📖 介绍 📖 对于许多直播爱好者和内容创作者而言,错过心爱的直播或难以搜集视频素材始终是一个难题。今天,给大家分享的这款工具可以轻松解决这个问题,它拥有…

【LSTM实战】跨越千年,赋诗成文:用LSTM重现唐诗的韵律与情感

本文将介绍如何使用LSTM训练一个能够创作诗歌的模型。为了训练出效果优秀的模型,我整理了来自网络的4万首诗歌数据集。我们的模型可以直接使用预先训练好的参数,这意味着您无需从头开始训练,即可在自己的电脑上体验AI作诗的乐趣。我已经为您准…

【Swift】运算符

文章目录 术语赋值运算符算数运算符基本四则算术运算符求余运算符一元负号运算符一元正号运算符 比较运算符三元运算符空合运算符区间运算符闭区间运算符半开区间运算符单侧区间运算符 逻辑运算符逻辑非运算符逻辑与运算符逻辑或运算符逻辑运算符组合计算 位运算符运算符优先级…

微信小程序技术架构图

一、视图层1.WXML&#xff08;WeiXin Markup Language&#xff09; 这是微信小程序的标记语言&#xff0c;类似于 HTML。它用于构建小程序的页面结构。例如&#xff0c;通过标签来定义各种视图元素&#xff0c;如<view>&#xff08;类似于 HTML 中的<div>&#xff…

【AI最前线】DP双像素sensor相关的AI算法全集:深度估计、图像去模糊去雨去雾恢复、图像重建、自动对焦

Dual Pixel 简介 双像素是成像系统的感光元器件中单帧同时生成的图像&#xff1a;通过双像素可以实现&#xff1a;深度估计、图像去模糊去雨去雾恢复、图像重建 成像原理来源如上&#xff0c;也有遮罩等方式的pd生成&#xff0c;如图双像素视图可以看到光圈的不同一半&#x…

Python 版本的 2024详细代码

2048游戏的Python实现 概述&#xff1a; 2048是一款流行的单人益智游戏&#xff0c;玩家通过滑动数字瓷砖来合并相同的数字&#xff0c;目标是合成2048这个数字。本文将介绍如何使用Python和Pygame库实现2048游戏的基本功能&#xff0c;包括游戏逻辑、界面绘制和用户交互。 主…

socket连接封装

效果&#xff1a; class websocketMessage {constructor(params) {this.params params; // 传入的参数this.socket null;this.lockReconnect false; // 重连的锁this.socketTimer null; // 心跳this.lockTimer null; // 重连this.timeout 3000; // 发送消息this.callbac…

大语言模型---RewardBench 介绍;RewardBench 的主要功能;适用场景

文章目录 1. RewardBench 介绍2. RewardBench 的主要功能3. 适用场景 1. RewardBench 介绍 RewardBench: Evaluating Reward Models是一个专门用于评估 Reward Models&#xff08;奖励模型&#xff09; 的公开平台&#xff0c;旨在衡量模型在多种任务上的性能&#xff0c;包括…

基于Redis实现的手机短信登入功能

目录 开发准备 注册阿里短信服务 依赖坐标 阿里短信 依赖 mybatis-plus 依赖 redis 依赖 配置文件 导入数据库表 短信发送工具类 生成随机验证码的工具类 校验合法手机号的工具类 ThreadLocal 线程工具类 消息工具类 基于 session 的短信登录的问题 开发教程 Redis 结构设计 …

Java语言程序设计 选填题知识点总结

第一章 javac.exe是JDK提供的编译器public static void main (String args[])是Java应用程序主类中正确的main方法Java源文件是由若干个书写形式互相独立的类组成的Java语言的名字是印度尼西亚一个盛产咖啡的岛名Java源文件中可以有一个或多个类Java源文件的扩展名是.java如果…