多台主机修改或写入文件并添加定时任务操作
最近遇到需要实现的简单需求
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
邮校机房
没错邮校机房
问题注意点
[root@ybt yml]# cat ybt.sh #脚本示例
#!/bin/bash
#添加第一个文件
cat > file.sh <<EOP
$1 $2
这是第一个文件
EOP
#添加第二个文件
cat > ybtfile.sh <<\EOP #只需要转义\
这些不能消失 "$1 $2 $3"
金川机房
没错金川机房
EOP
[root@ybt yml]# ./ybt.sh
[root@ybt yml]# cat file.sh #特殊字符$消失
这是第一个文件
[root@ybt yml]# cat ybtfile.sh #特殊字符保留
这些不能消失 "$1 $2 $3"
金川机房
没错金川机房