1. 程式人生 > 其它 >多臺主機修改或寫入檔案並新增定時任務操作

多臺主機修改或寫入檔案並新增定時任務操作

最近遇到需要實現的簡單需求
1.推送到多臺主機和寫入和修改檔案
2.修改檔案內容和新增檔案內容
3.在指定使用者下新增定時任務
最終還是覺得yml指令碼比較方便
指令碼內容大概如下

[root@ybt yml]# cat ybt.yml 	#yml示例
#playbook複習
---
- hosts: ybt
  remote_user: root
  tasks:
    - name: '寫入檔案'
      script: chdir=/home/ybt/ ybt.sh
        
    - name: '修改檔案內容和新增檔案內容'
      shell: sed -i 's/{{ ybt1  }}/{{ ybt2  }}/g'   /home/ybt/ybtfile.txt  

    - name: '新增定時任務'
      cron: name='新增定時任務'  minute=2 job="cat /home/ybtfile.txt >> 1.txt" user=ybt

[root@ybt yml]# cat ybt.sh	#指令碼示例
#!/bin/bash 
#新增第一個檔案
cat > file <<EOP
這是第一個檔案
EOP
#新增第二個檔案
cat > ybtfile.txt <<EOP
$1 $2 $3
金川機房
沒錯金川機房
EOP

執行過程

[root@ybt yml]# ansible-playbook -e "ybt1=金川 ybt2=郵校" ybt.yml

PLAY [ybt] *******************************************************************************************

TASK [Gathering Facts] *******************************************************************************
ok: [192.168.32.130]
ok: [192.168.32.128]

TASK [寫入檔案] ******************************************************************************************
changed: [192.168.32.128]
changed: [192.168.32.130]

TASK [修改檔案內容和新增檔案內容] *********************************************************************************
[WARNING]: Consider using the replace, lineinfile or template module rather than running 'sed'.  If
you need to use command because replace, lineinfile or template is insufficient you can add 'warn:
false' to this command task or set 'command_warnings=False' in ansible.cfg to get rid of this
message.
changed: [192.168.32.128]
changed: [192.168.32.130]

TASK [新增定時任務] ****************************************************************************************
changed: [192.168.32.128]
changed: [192.168.32.130]

PLAY RECAP *******************************************************************************************
192.168.32.128             : ok=4    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
192.168.32.130             : ok=4    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

執行結果

[ybt@localhost ~]$ crontab -l
#Ansible: 新增定時任務
2 * * * * cat /home/ybtfile.txt >> 1.txt
[ybt@localhost ~]$ ll
總用量 8
-rw-r--r--. 1 root root 22 4月  26 13:56 file
-rw-r--r--. 1 root root 35 4月  26 13:56 ybtfile.txt
[ybt@localhost ~]$ cat file 
這是第一個檔案
[ybt@localhost ~]$ cat ybtfile.txt 
  
郵校機房
沒錯郵校機房