1,查看被管理结点的负载
# ansible all -m command -a 'uptime'
all表示/root/ansible_hosts文件中的所有结点,可以在文件中分组,[group1],group1表示组名,上面的命令如果只想在group1中的结点执行则为:ansible group1 -m command -a 'uptime' --ask-pass
2,在被管理结点执行shell脚本
先来一个最简单的脚本:
# cat t1.sh
#!/bin/bash
ls -l /root/
# ansible all -m script -a '/root/t1.sh'
当然你可以编写可以实现复杂功能的脚本,这也就是为什么网上有人不同意复杂的任务用playbook来做,用shell写个脚本多简单呀,YAML都可以不用学了。
3,拷贝文件和目录
拷贝目录和文件的命令都是一样的。可以自行指定文件和目录的权限和属主
拷贝文件:
# ansible all -m copy -a "src=/root/test_dir dest=/tmp/ mode=777 owner=root"
拷贝文件:
ansible all -m copy -a "src=/etc/fstab dest=/tmp/ mode=444 owner=root"
4,删除文件和目录
拷贝目录和文件的命令都是一样的,指定要删除的文件的路径就可以了,如果路径是目录的话,会将该目录下面所有的文件都删除掉
ansible all -m file -a "path='/tmp/fstab' state=absent"
ansible all -m file -a "path='/tmp/test_dir' state=absent"
5,软件包管理
# ansible all -m yum -a "name=tree state=present"
这条命令的意思是如果tree这个包没有安装,则安装。
安装完后我们可以测试一下命令是否可用
# tree test_dir/
test_dir/
└── t.txt
0 directories, 1 file
# ansible all -m yum -a "name=tree state=absent" --ask-pass
这个命令的意思是确认系统没有安装tree,如果有则卸载,我们执行完命令后再敲tree就报错了。
[iyunv@centos ~]# tree
-bash: /usr/bin/tree: No such file or directory
5,创建用户和用户组
# ansible all -m user -a "name=ansible_test groups=root,zabbix append=yes state=present"
创建ansible_test用户,并将其加入root,zabbix组
# id ansible_test
uid=503(ansible_test) gid=504(ansible_test) groups=504(ansible_test),0(root),503(zabbix)
6,管理服务
# ansible all -m service -a "name=mysqld state=stopped"
停mysqld服务
# ansible all -m service -a "name=mysqld state=started"
启mysqld服务
# ansible all -m service -a "name=mysqld state=restarted"
重启mysqld服务