1. 程式人生 > 其它 >ansible批量建立cronta定時任務

ansible批量建立cronta定時任務

一丶安裝ansible

1.yum安裝ansible

yum install epel-release -y
yum install ansible -y
ansible --version

2.Ansible的命令引數

  • ansible命令語法:
    ansible [-i 主機檔案] [-f 批次] [組名] [-m 模組名稱] [-a 模組引數]
  • ansible詳細引數:
    -v,-verbose    # 詳細模式,如果命令執行成功,輸出詳細的結果
    -i PATH,-inventory=PATH    #指定host檔案的路徑,預設是在/etc/ansible/hosts
    -f NUM,-forks=NUM   #NUM是指定的一個整數,預設是5,指定fork開啟同步程序的個數。
    -m NAME,-module-name=NAME # 指定使用的 module 名稱,預設使用 command 模組
    -a,MODULE_ARGS #指定 module 模組的引數
    -k,-ask-pass #提示輸入 ssh 的密碼,而不是使用基於 ssh 的金鑰認證
    -sudo # 指定使用 sudo 獲得 root 許可權
    -K,-ask-sudo-pass #提示輸入 sudo 密碼,與 -sudo 一起使用
    -u USERNAME,-user=USERNAME # 指定移動端的執行使用者
    -C,-check #測試此命令執行會改變什麼內容,不會真正的去執行
  • ansible-doc 詳細引數:
    ansible-doc -l #列出所有的模組列表
    ansible-doc -s 模組名 #檢視指定模組的引數

3.配置Ansible主機檔案
vim k8s-hosts

[devops]
k8s-worker01 ansible_ssh_host=182.196.36.92
k8s-worker02 ansible_ssh_host=182.196.36.93
k8s-worker03 ansible_ssh_host=182.196.36.94
k8s-worker04 ansible_ssh_host=182.196.36.95


[all:vars]
ansible_ssh_user
=pzom ansible_ssh_port=37254 ansible_ssh_private_key_file=/home/pzom/.ssh/id_rsa

二丶ansible批量建立cronta定時任務

1.建立清理log指令碼

vim delete-java-logs.sh

#!/bin/bash
sudo find /data/k8s-storage/logs/ -type f -name "*20*" -exec rm -rf {} \;
sudo find /data/k8s-storage/logs/ -type f -name "*.log" -exec rm -rf {} \;

2.建立清理images指令碼

vim clear-images.sh

#!/bin/bash
sudo docker rmi  $(sudo docker images -qa)

3.批量下發指令碼

ansible -i k8s-hosts devops -m shell -a 'sudo mkdir -p /data/scripts/'
ansible -i k8s-hosts devops -m shell -a 'sudo chmod -R  777  /data/scripts/'
ansible -i k8s-hosts  devops  -m copy -a "src=./delete-java-logs.sh dest=/data/scripts/delete-java-logs.sh mode=0777"
ansible -i k8s-hosts  devops  -m copy -a "src=./clear-images.sh dest=/data/scripts/clear-images.sh mode=0777"

4.批量建立定時任務

ansible  -i k8s-hosts devops -m cron -a 'name="clean_log" minute=30 hour=5 job="sh /data/scripts/delete-java-logs.sh >/dev/null 2>&1"'
ansible  -i k8s-hosts devops -m cron -a 'name="clean_images" minute=30 hour=3 weekday=6  job="sh /data/scripts/clear-images.sh >/dev/null 2>&1"'

5.cron模組引數詳解