ansible-Grafana部署和升级版本
ansible自动部署grafana:
目录结构:
[root@k8s-master /root]$ tree grafana/
grafana/
├── conf
│ ├── defaults.ini
│ └── ldap.toml
├── grafana.yml
├── key
├── read.txt
├── run.sh
└── vars.yml
grafana.yml配置文件
- name: Grafana fi suppport_platfrom grafan安装
hosts: "{{do_hosts}}"
gather_facts: no
remote_user: "{{ re_user }}"
become_user: root
serial: 1
tasks:
- name: 下载grafana安装包 {{ grafana_package }}
get_url:
url: "{{ http_url }}{{ grafana_package }}"
dest: "{{ download_dir }}"
force: no
checksum: "{{ md5_sum }}"
become: yes
- name: 解压 {{ grafana_package }} 安装包到 {{ unpack_dir }}
unarchive:
src: "{{ download_dir }}{{ grafana_package }}"
dest: "{{ unpack_dir }}"
remote_src: yes
creates: "{{ grafana_file }}"
become: yes
- name: 检查grafana服务运行状态
shell: ps -ef|grep -v grep |grep grafana|wc -l
register: service_status
- debug:
var: service_status.stdout
- name: 停止grafana服务运行
shell: ps -ef|grep -v grep|grep grafana-server|awk '{print $2}'|xargs kill -9
when: service_status.stdout|int > 0
become: yes
- name: 检查服务器链接信息
stat:
path: "{{ link_dir }}grafana"
register: file_status
become: yes
## 首次安装操作
- name: 拷贝grafana/conf配置文件
copy:
src: '{{ item }}'
dest: "{{ unpack_dir }}{{ grafana_name }}/conf/"
backup: yes
with_items:
- [ "{{ grafana_ini }}" , "{{ grafana_ldap }}" ]
when: file_status.stat.exists == False
become: yes
## 非首次安装,升级版本
- name: 拷贝grafana/conf配置文件
copy:
src: '{{ item }}'
dest: "{{ unpack_dir }}{{ grafana_name }}/conf/"
backup: yes
remote_src: yes
with_items:
- [ "{{ grafana_old_ini }}" , "{{ grafana_old_ldap }}" ]
when: file_status.stat.exists == True
become: yes
- name: 拷贝grafana/data数据文件
copy:
src: '{{ item }}'
dest: "{{ unpack_dir }}{{ grafana_name }}/data/"
backup: yes
remote_src: yes
with_items:
- [ "{{ grafana_old_db }}" , "{{ grafana_old_plugins }}" ]
when: file_status.stat.exists == True
become: yes
- name: 清理老服务软连接目录
file:
path: "{{ link_dir }}grafana"
state: absent
when: file_status.stat.exists == True
become: yes
# 通用步骤
- name: grafana目录授权
file:
path: "{{ unpack_dir }}{{ grafana_name}}"
owner: "{{ use_user }}"
group: "{{ use_user }}"
recurse: yes
become: yes
- name: 创建新版本服务软链接目录
file:
src: "{{ unpack_dir }}grafana-8.3.7"
dest: "{{ link_dir }}grafana"
state: link
become: yes
- name: 启动grafana服务
shell: nohup ./grafana-server web > /dev/null 2>&1 &
args:
chdir: "{{ link_dir }}grafana/bin"
become: yes
become_method: sudo
become_user: "{{ use_user }}"
- name: 获取grafana服务运行状态
shell: ps -ef|grep -v grep| grep grafana-server|wc -l
register: grafana_count
- name: grafana服务已启动
shell: ps -ef|grep -v grep| grep grafana-server
register: grafana_status
when: grafana_count.stdout|int > 0
- debug:
msg: "{{ grafana_status.stdout }}"
when: grafana_count.stdout|int > 0
- name: grafana服务启动失败
debug:
msg: grafana服务启动失败,请登录服务器检查
when: grafana_count.stdout|int == 0
run.sh配置文件
#!/bin/bash
cd `dirname $0`
ansible-playbook \
--key-file ./key \
-e "@vars.yml" \
grafana.yml $*
vars.yml配置文件
# +++++++++++++++++++++++++++++++++++++++需要修改的变量+++++++++++++++++++++++++++++++++++++++
# 要安装(升级)的服务器地址
do_hosts: 10.10.10.10
## 远程执行任务服务器的账户
re_user: op
## 启动程序账户
use_user: deploy
## 安装包源
http_url: 'http://1.1.1.1/packages/'
## grafana安装包名称
grafana_package: 'grafana-8.3.7.linux-amd64.tar.gz'
## 安装包md5值
md5_sum: 'md5:e16a8fe58f1afe712f9e8cba3352be90'
## 解压后安装包名称
grafana_name: 'grafana-8.3.7'
## 安装包存放位置
download_dir: '/tmp/'
## 程序安装路径
unpack_dir: '/data/op/'
## 程序软连接路径(连接到该目录下grafana)
link_dir: '/data/appdata/'
# +++++++++++++++++++++++++++++++++++++++无需修改变量+++++++++++++++++++++++++++++++++++++++
## 首次安装grafana配置推送
grafana_ini: './conf/defaults.ini'
grafana_ldap: './conf/ldap.toml'
## 非首次安装grafana配置推送
grafana_old_ini: "{{ link_dir }}grafana/conf/defaults.ini"
grafana_old_ldap: "{{ link_dir }}grafana/conf/ldap.toml"
## 非首次安装grafana数据推送
grafana_old_db: "{{ link_dir }}grafana/data/grafana.db"
grafana_old_plugins: "{{ link_dir }}grafana/data/plugins"
## 确定是否已解压压缩包
grafana_file: "{{ unpack_dir }}{{ grafana_name }}/bin/grafana-server"
read.txt配置文件
## 本文用于安装rocketmq集群
# vars.yml存放所有变量,根据需求进行变更,无需修改其他配置
# 使用该脚本注意事项
1.首次安装拷贝默认conf配置
2.非首次安装(即升级),需提前在安装服务器做好软连接,并在vars.yml中配置好相关变量
3.key为链接远程服务器免密私钥
4.远程服务器地址在vars.yml中进行配置即可
key配置文件
远程链接服务器的私钥
conf配置文件
不提供了,按公司需求调整
分类:
ansible
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了