模块查看
可以用来查看,ansible支持的模块。
ansible-doc -l
使用-s 可以查看,某些模块的用法
ansible-doc -s yum (模块名)
常用的模块
commond 基础指令模块
用于远程执行命令
[root@localhost ~]# ansible 192.168.144.172 -m command -a 'date'
主机 参数 模块名 参数 指令
(模块的参数,用-a)
192.168.144.172 | CHANGED | rc=0 >>
Fri Aug 16 20:08:55 CST 2019
也可以使用组进行操作
[root@localhost ~]# ansible web -m command -a 'date'
如果对所有的组进行操作,可以使会用all
ansible all -m command -a 'date'
command 是默认的模块,不指定的话。默认就是使用command的模块
ansible all -a 'date'
cron: 对远程主机进行计划任务。
可以使用
ansible-doc -s cron
查看参数
state 参数: present 安装 absent 移除
ansible webser -m cron -a 'minute="*/10" job="/bin/echo hello" name="ansible test" state="present" '
组名字 模块名 参数 执行时间(每10分钟执行一次) 执行的内容 任务的名字(必须写) 状态
这个的写法和 crontab一样。如果不在这边指明,默认就是*
看结果,已经成功了。同时我们可以看到 有任务名生成。。所以一定要个任务名。否则他无法生成。
移除任务
ansible webser -m cron -a 'minute="*/10" job="/bin/echo hello" name="ansible test" state="absent" '
这边使用absent 即可
看结果,已经移除了
group 模块
查看,其实参数不多。
[root@master ~]# ansible-doc -s group
- name: Add or remove groups
group:
gid: # Optional `GID' to set for the group. name: # (required) Name of the group to manage. state: # Whether the group should be present or not on the remote host. system: # If `yes', indicates that the group created is a system group.
ansible webser -m group -a 'name="www" gid="8080" system="yes"'
组名 gid 是不是系统用户
查看信息,设置的东西。都反馈了 、
Use 模块
看下说明
ansible-doc -s user
可以和上面的group 模块配合
ansible webser -m user -a 'name="www" uid="8080" system="yes" group="www"'
指定用户名 uid 指定组
查看输出
[root@master ~]# ansible webser -m user -a 'name="www" uid="8080" system="yes" group="www"'
192.168.249.153 | SUCCESS => {
"changed": true,
"comment": "",
"createhome": true,
"group": 8080, #组id
"home": "/home/www",
"name": "www",
"shell": "/bin/bash",
"state": "present",
"system": true, ## 系统用户
"uid": 8080 ## uid
}
192.168.249.152 | SUCCESS => {
"changed": true,
"comment": "",
"createhome": true,
"group": 8080,
"home": "/home/www",
"name": "www",
"shell": "/bin/bash",
"state": "present",
"system": true,
"uid": 8080
}
查看结果, 有了
删除用户,就是加个state=absent 就行了。
ansible all -m user -a 'name="user1" state="absent"'
copy 模块
复制文件用的,也可以将本地的文件复制到远程的机器上面。
查看参数
[root@master ~]# ansible-doc -s copy
ansible all -m copy -a 'src=/etc/fstab dest=/tmp/ansible.txt owner=root mode=644 '
原始文件(绝对路劲) 目的文件(绝对路径) 所属用户 权限
验证查看,有了
也可以直接使用content ,指定内容。
ansible all -m copy -a 'content="hello world\n hi hi " dest=/tmp/test.txt owner=root mode=644 '
直接写内容,不指文件
查看结果, 已经有了。
file 模块
查看参数,可以对文件进行操作。可以设定文件属性。
ansible-doc -s file
执行
ansible web -m file -a 'owner=www group=www mode=644 path=/tmp/ansible.txt'
指定用户 指定组 权限 文件
进行查看
还可以创建连接文件
ansible web -m file -a 'path=/tmp/test.link src=/tmp/ansible.txt state=link'
连接文件 源文件 状态
进行查看,完成
ping 模块
这个比较简单,就是ping各主机的
ansible all -m ping
service 模块
用来管理服务的
ansible-doc -s service
ansible web -m service -a 'enabled=true name=httpd state=started'
开机启动 服务名称 状态(start,stop,restart)
shell 模块
和之前的command 有区别 。在使用一些有 | 和相对复杂的指令时,需要使用shell模块。
ansible web -m shell -a 'chkconfig --list | grep network'
看结果。
script
将本地脚本复制到远程主机并且运行
查看
ansible-doc -s script
- name: Runs a local script on a remote node after transferring i
随便本地写个脚本
[root@localhost ansible]# cat /tmp/test.sh
#!/bin/bash
echo "hello world" >> /tmp/anscript.txt
然后运行, 有些版本里面。脚本一定要在当前的相对路径(旧版本)。
ansible web -m script -a "/tmp/test.sh"
指定脚本
查看一下。有了
yum模块
查看
ansible-doc -a yum
运行
ansible all -m yum -a 'name=vsftpd'
指定安装包名。 不加版本默认就是最新版本。
查看一下,就有了
卸载程序
ansible all -m yum -a 'name=vsftpd state=absent '
setup 模块
收集远程主机的facts(每个被管理节点在接受并运行管理命令之前,会将自己主机相关信息,如操作系统版本,IP地址等报告给远程的ansible主机。)
ansible-doc -s setup
直接运行,会出现主机的许多信息
ansible all -m setup