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>
執行效果如圖:
事實上很多運維的相關工作都可以通過這種方式來完成,比如應用程式包的更新等等,實現的方式都是一樣的