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配置文件
不提供了,按公司需求调整
posted @ 2022-04-02 10:27  咖啡馆  阅读(223)  评论(0编辑  收藏  举报