linux-ansible-03 ansible常用模块命令实例
user模块
1、创建一个用户:feng
1 | [root@test ~]# ansible node2 -m user -a "name=feng uid=1024 password=000000 shell=/bin/bash group=root" |
可以到node2上查看这个用户的uid,如下,uid确实是1024
1 | [root@node2 ~]# id feng |
2、删除用户
1 | [root@test ~]# ansible node2 -m user -a "name=feng state=absent force=yes" |
group模块
1、给node2创建一个组fenggroup
1 | [root@test ~]# ansible node2 -m group -a "gid=1024 name=fenggroup system=yes" |
2、给node2创建一个用户feng,其主组root,加入到fenggroup附属组
1 | [root@test ~]# ansible node2 -m user -a "name=feng uid=1024 password=000000 shell=/bin/bash group=root groups=fenggroup" |
3、到node2上查看这个用户的信息,可以看到一切无误
1 | [root@node2 ~]# id feng |
4、删除fenggroup组
1 | [root@test ~]# ansible node2 -m group -a "name=fenggroup state=absent" |
5、此时再到node2上查看这个用户的信息,可以看到它不再从属于fenggroup组了,因为fenggroup组已被删除
1 | [root@node2 ~]# id feng |
selinux模块
1、首先到node2上查看node2的selinux状态
1 | [root@node2 ~]# getenforce |
2、在test上将node2的selinux关闭掉
1 | [root@test ~]# ansible node2 -m selinux -a "state=disabled" |
3、再到node2上查看node2的selinux状态,可以看到关闭成功
1 | [root@node2 ~]# getenforce |
firewalld模块
1、放行node2的8080端口,并在node2上进行验证。
1 | [root@node1 roles]# ansible node2 -m firewalld -a "port=8080/tcp state=enabled permanent=yes" |
copy模块
1、先在test上创建一个文件user.txt
1 | [root@test ~]# touch user.txt |
2、将这个文件传送给node2的/tmp目录下
1 | [root@test ~]# ansible node2 -m copy -a "src=/root/user.txt dest=/tmp" |
3、往node2的/tmp目录下的user.txt里写入:”hello“
1 | [root@test ~]# ansible node2 -m copy -a "dest=/tmp/user.txt content=hello" |
file模块
1、给node2的/tmp目录下创建一个名为user.test的文件
1 | [root@test ~]# ansible node2 -m file -a "path=/tmp/user.test state=touch owner=root group=root mode=777" |
2、给node2的/tmp目录下创建一个名为test的文件夹
1 | [root@test ~]# ansible node2 -m file -a "path=/tmp/test state=directory owner=root group=root mode=644" |
3、删除/tmp目录下一个名为user.test的文件
1 | [root@test ~]# ansible node2 -a "ls /tmp" |
cron(计划任务)模块
1、给node2指定一个计划任务,*/1表示每一分钟,date显示日期时间
1 | [root@test ~]# ansible node2 -m cron -a "name=showdate minute=*/1 job=date state=present" |
2、删除上面指定的计划任务
1 | [root@test ~]# ansible node2 -m cron -a "name=showdate state=absent" |
setup模块
1、查看node2的系统信息(该系统信息篇幅很长)
1 | [root@test ~]# ansible node2 -m setup | less |
yum模块
给node2安装和卸载lrzsz,其中state为install、present表示安装,为latest表示安装到最新版,为absent、removed表示卸载。
1 | [root@test ~]# ansible node2 -m yum -a "name=lrzsz state=latest" |
1 | [root@test ~]# ansible node2 -m yum -a "name=lrzsz state=removed" |
如果yum报错的话:可以尝试以下命令:
1 | ansible node2 -m copy -a "src=/etc/resolv.conf dest=/etc/resolv.conf force=yes" |
service模块
1、先给node2安装httpd
1 | [root@test ~]# ansible node2 -m yum -a "name=httpd state=latest" |
2、给node2重启httpd服务,设置其开机自启
1 | [root@test ~]# ansible node2 -m service -a "name=httpd state=restarted enabled=yes" |
3、给node2停止httpd服务
1 | [root@test ~]# ansible node2 -m service -a "name=httpd state=stopped" |
4、查看node2的httpd状态,可以看到是关闭的
1 | [root@test ~]# ansible node2 -m command -a "systemctl status httpd" |
5、command不支持管道,变量及重定向等,如果是带有管道,变量及重定向符号,请用shell模块
1 | [root@test ~]# ansible node2 -m shell -a "cat /etc/httpd/conf/httpd.conf | grep Listen" |