1. 程式人生 > >RUNDECK呼叫ANSIBLE執行日常的運維工作

RUNDECK呼叫ANSIBLE執行日常的運維工作

系統平臺:CENTOS7

可實現多臺機器批量掛載磁碟,避免手工操作的錯誤

ANSIBLE的PLAYBOOK如下:

---
- hosts: "{{ dsthosts }}"
  remote_user: apps
  become: yes
   
  vars:
    # 執行任務的主機,等待RUNDECK傳參
    dsthosts: 192.168.156.71   
    # 磁碟的網路路徑
    diskuncs: "10.0.0.1:/testsss"
    # 磁碟本地掛載的目錄
    mountdir: "/logsss"
    
  tasks:
  - name: mkdir            | 建立掛載的目錄
    file:
      path: "{{ mountdir }}"
      state: directory
      mode: 0777    
      
  - name: mountdisks       | 掛載磁碟
    shell: "mount  {{ diskuncs }} {{ mountdir }}"  

  - name: addtorc.local    | 寫入啟動命令
    lineinfile:
      dest: "/etc/rc.local"
      state: present
      regexp: 'mount {{ diskuncs }} {{ mountdir }}'
      line: "mount {{ diskuncs }} {{ mountdir }}"
      backup: yes
  
  - name: echo cmd_out      | df -h
    shell: "df -h"
    register: startup_out
    
  - name: echo startup_out  | 列印啟動資訊
    debug: var=startup_out

 

RUNDECK作業如下:

<joblist>
  <job>
    <context>
      <options preserveOrder='true'>
        <option name='dsthosts' required='true' />
        <option name='diskuncs'>
          <description>diskuncs</description>
        </option>
        <option name='mountdir'>
          <description>mountdir</description>
        </option>
      </options>
    </context>
    <defaultTab>summary</defaultTab>
    <description>mounts</description>
    <executionEnabled>true</executionEnabled>
    <group>runjobs</group>
    <id>ef4f173e-6f8f-4cfb-9495-77a371d7336d</id>
    <loglevel>INFO</loglevel>
    <name>mounts</name>
    <nodeFilterEditable>false</nodeFilterEditable>
    <scheduleEnabled>true</scheduleEnabled>
    <sequence keepgoing='false' strategy='node-first'>
      <command>
        <exec>ansible-playbook  /testmountbecome.yml --extra-vars "dsthosts=${option.dsthosts} diskuncs=${option.diskuncs} mountdir=${option.mountdir}" </exec>
      </command>
    </sequence>
    <uuid>ef4f173e-6f8f-4cfb-9495-77a371d7336d</uuid>
  </job>
</joblist>

 

執行效果如圖:

 

事實上很多運維的相關工作都可以通過這種方式來完成,比如應用程式包的更新等等,實現的方式都是一樣的