首页 > 其他分享 >5.1编写ansibleplaybook批量安装二进制

5.1编写ansibleplaybook批量安装二进制

时间:2024-07-13 16:27:28浏览次数:7  
标签:opt 5.1 exporter name ansibleplaybook 二进制 app logs log

本节重点介绍 : ansible playbook编写

  • rsyslog 和 logrotate
  • service_deploy yaml的编写

配置机器直接的ssh免密码登录

节点主机名host解析

节点主机名写入hosts


echo "192.168.3.200   prome-master01" >> /etc/hosts
echo "192.168.3.201   prome-node01" >> /etc/hosts


master上生成ssh key 并拷贝到node上

ssh-keygen
ssh-copy-id prome-node01

# 测试ssh联通

ssh prome-node01


master 上安装ansible

yum install -y ansible

# 关闭hostcheck 
vim /etc/ansible/ansible.cfg

ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no 

playbook执行时需要设置机器文件

cat <<EOF > /opt/tgzs/host_file
prome-master01
prome-node01
EOF

设置syslog 和logrotate服务

编写yaml文件

cat <<EOF >  init_syslog_logrotate.yaml
- name: init syslog logrotate
  hosts: all
  user: root
  gather_facts:  false
  vars:
      app_log_path: /opt/logs/
      sc_path: /opt/tgzs/
      syslog_conf: syslog_server.conf
      logrotate_conf: logrotate.conf

  tasks:

      - name: mkdir
        file: path={{ app_log_path }} state=directory
      

      - name: copy  files
        copy:
          src: '{{ item.src }}'
          dest: '{{ item.dest }}'
          owner: root
          group: root
          mode: 0644
          force: true

        with_items:
          - { src: '{{ sc_path }}/{{ syslog_conf }}', dest: '/etc/rsyslog.d/{{ syslog_conf }}' }
          - { src: '{{ sc_path }}/{{ logrotate_conf }}', dest: '/etc/logrotate.d/{{ logrotate_conf }}' }
        register: result

      - name: Show debug info
        debug: var=result verbosity=0


      - name: restart service

        systemd:
          name: "{{ item }}"
          state: restarted
          daemon_reload: yes
        with_items:
          - 'rsyslog'
        register: result

      - name: Show debug info
        debug: var=result verbosity=0

EOF

准备 syslog_server.conf 和 logrotate.conf

cat <<EOF >  syslog_server.conf
if $programname == 'alertmanager'               then /opt/logs/alertmanager.log
if $programname == 'prometheus'                 then /opt/logs/prometheus.log
if $programname == 'node_exporter'              then /opt/logs/node_exporter.log
if $programname == 'process_exporter'            then /opt/logs/process_exporter.log
if $programname == 'mysql_exporter'            then /opt/logs/mysql_exporter.log
if $programname == 'redis_exporter'            then /opt/logs/redis_exporter.log
if $programname == 'blackbox_exporter'          then /opt/logs/blackbox_exporter.log
if $programname == 'mysqld_exporter'          then /opt/logs/mysqld_exporter.log
if $programname == 'process-exporter'          then /opt/logs/process-exporter.log
if $programname == 'pushgateway'                then /opt/logs/pushgateway.log
if $programname == 'm3coordinator'              then /opt/logs/m3coordinator.log
if $programname == 'm3dbnode'                   then /opt/logs/m3dbnode.log
EOF


cat <<EOF > logrotate.conf 
/opt/logs/*.log
{
    daily
    missingok
    notifempty
    dateext
    compress
    delaycompress
    copytruncate
    rotate 15
}
EOF

执行

ansible-playbook -i host_file init_syslog_logrotate.yaml

编写ansible 发布服务脚本

cat <<EOF >  service_deploy.yaml
- name:  install
  hosts: all
  user: root
  gather_facts:  false
  vars:
      local_path: /opt/tgzs
      app_dir: /opt/app

  tasks:
      - name: mkdir
        file: path={{ app_dir }}/{{ app }} state=directory
      - name: mkdir
        file: path={{ local_path }} state=directory


      - name: copy  config and service
        copy:
          src: '{{ item.src }}'
          dest: '{{ item.dest }}'
          owner: root
          group: root
          mode: 0644
          force: true

        with_items:
          - { src: '{{ local_path }}/{{ tgz }}', dest: '{{ local_path }}/{{ tgz }}' }
          - { src: '{{ local_path }}/{{ app }}.service', dest: '/etc/systemd/system/{{ app }}.service' }

        register: result
      - name: Show debug info 
        debug: var=result verbosity=0

      - name: tar gz
        shell: rm -rf /root/{{ app }}* ; \
          tar xf {{ local_path }}/{{ tgz }} -C /root/ ; \
          /bin/cp -far /root/{{ app }}*/* {{ app_dir }}/{{ app }}/ \

        register: result
      - name: Show debug info
        debug: var=result verbosity=0

      - name: restart service
        systemd:
          name: "{{ item }}"
          state: restarted
          daemon_reload: yes
          enabled: yes
        with_items:
          - '{{ app }}'
        register: result

      - name: Show debug info
        debug: var=result verbosity=0
EOF


使用这个脚本安装node_exporter

下载node_exporter

wget -O /opt/tgzs/node_exporter-1.1.2.linux-amd64.tar.gz https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz

准备service文件

cat <<EOF> node_exporter.service
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/opt/app/node_exporter/node_exporter
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=node_exporter
[Install]
WantedBy=default.target

EOF

执行安装


ansible-playbook -i host_file  service_deploy.yaml  -e "tgz=node_exporter-1.1.2.linux-amd64.tar.gz" -e "app=node_exporter"

本节重点总结 : ansible playbook编写

  • rsyslog 和 logrotate
  • service_deploy yaml的编写

标签:opt,5.1,exporter,name,ansibleplaybook,二进制,app,logs,log
From: https://blog.csdn.net/weixin_48502062/article/details/140399486

相关文章

  • WCP知识管理系统-免费版(v5.1.9)
    5.1.9版本(最新)下载地址登录官网查看功能描述CP知识分享平台V5.1.9版本的更新日志,包含了bug修复、性能优化和新功能的介绍。以下是具体细节:1.**Bug修复**:-在纯图片模式下,点击图片后现在会展示原图而非缩略图。-帮助主题下的首页缩放后,不再显示下方的大块黑边......
  • 求解一个数的二进制最高位
    求解一个数的二进制最高位是一个常见问题。具体来说,5的二进制是101,其最高位在第2位(假定最低位是0)。30的二进制是11110,最高位是第4位。我们怎么求解这个位数呢?方案一:逐位遍历从低位向高位逐渐遍历即可,无需解释。当然也有很多种写法。这里提供一种。inthighestBit(intn......
  • Kubernetes高可用集群二进制离线部署(Runtime Docker)
    Kubernetes高可用集群二进制部署(RuntimeDocker)Kubernetes(简称为:k8s)是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了资源调度、部署管理、服务......
  • [CINTA] 具体数论与代数阅读笔记——第一章 整数和二进制(含加、乘、除)
    前言这本书说自己是计算机专业数学入门之入门,成为读者攻读其他经典著作的垫脚石,但个人以为足矣替换掉本校内不知所云的、抽象的、让学生考完后马上全忘的那些课程。本书的GitHub仓库在这里。该笔记并非单纯的整理归纳,而是记录陆爻齐在书中找到的对自己很有感触的部分。闲话......
  • Vue3 pdf.js将二进制文件流转成pdf预览
    好久没写东西,19年之前写过一篇Vue2将pdf二进制文件流转换成pdf文件,如果Vue2换成Vue3了,顺带来一篇文章,pdf.js这个东西用来解决内网pdf预览,是个不错的选择。首先去pdfjs官网,下载需要的文件然后将下载的东西放到public文件下接下来看一下代码<auto-dialogtitle="PDF预......
  • 5.1 构建发布工具集成
    安装完成后,配置管理工具安装并配置gityum-yinstallgit 编辑git环境变量为/usr/bin/git安装并配置mavenwgethttps://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gztar-xvfapache-maven-3.6.3-bin.tar.gzm......
  • C#——二进制流序列化和反序列化
    C#二进制流序列化和反序列化在C#中,可以使用BinaryFormatter来进行二进制的序列化和反序列化。首先,定义一个可序列化的类[Serializable]publicclassMyObject{publicintIntProperty{get;set;}publicstringStringProperty{get;set;}}使用BinaryFo......
  • 【已解决】挖矿病毒 logrotate 185.196.8.123
    如果你最近也中了这个病毒,看这篇文章就对了。网上找了几篇类似文章,都是教你杀进程、删文件,但新版的病毒已经进化了,进程杀死复活,文件删掉又有了...经过本人几天的尝试,最终找到了干掉他的方法。 先确定下你的症状是不是跟我一样?问题现象:Shell登录慢,logrorateCPU占用高,这个进程......
  • WebOffice在线编微软Offfice,并以二进制流的形式打开Word文档
    在日常办公场景中,我们经常会遇到这种场景:我们的合同管理系统的各种Word,excel,ppt数据都是以二进制数组的形式存储在数据库中,如何从数据库中读取二进制数据,以二进制数据作为参数,然后加载到浏览器的Office窗口,实现在线编辑Office的功能呢?猿大师办公助手是猿大师旗下的一款在浏览器......
  • 仅做笔记用:base64字符串转换为十六进制形式表示的二进制数据
    使用JavaScript实现一个函数,参数是一个base64的字符串,将这个字符串解析成二进制数据,并将这个二进制数据的每个字节以一个十六进制两位数表示出来,每个字节的十六进制两位数之间空一格,每行16个字节,返回整理好的十六进制形式。functionbase64ToHex(base64Str){//解析ba......