command(默认模块)
shell(万能模块)
script(脚本模块)
copy(批量分发数据) 管理端---->多个被管理
fetch(批量拉取数据)管理端<----多个被管理
一、fetch模块
[root@ m01 ~]# ansible 172.168.3.31 -m fetch -a "src=/tmp/oldboy.txt dest=/tmp"
dest:本地
src:被管理端
二、yum模块
name —指定按装软件名称
state—指定是否安装软件
installed—安装软件
present
absent—卸载软件
remove
[root@ m01 ~]# ansible 172.168.3.31 -m yum -a "name=iotop state=installed"
172.168.3.31 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"changes": {
"installed": [
"iotop"
]
},
"msg": "",
"rc": 0,
"results": [
"Loaded plugins: fastestmirror\nLoading mirror speeds from cached hostfile\n * base: mirrors.aliyun.com\n * extras: mirrors.aliyun.com\n * updates: mirrors.aliyun.com\nResolving Dependencies\n--> Running transaction check\n---> Package iotop.noarch 0:0.6-4.el7 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package Arch Version Repository Size\n================================================================================\nInstalling:\n iotop noarch 0.6-4.el7 base 52 k\n\nTransaction Summary\n================================================================================\nInstall 1 Package\n\nTotal download size: 52 k\nInstalled size: 156 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n Installing : iotop-0.6-4.el7.noarch 1/1 \n Verifying : iotop-0.6-4.el7.noarch 1/1 \n\nInstalled:\n iotop.noarch 0:0.6-4.el7 \n\nComplete!\n"
]
}
检查一下
[root@ nfs01 ~]# rpm -qa iotop
iotop-0.6-4.el7.noarch
安装好了
没用进行卸载
[root@ m01 ~]# ansible 172.168.3.31 -m yum -a "name=iotop state=absent"
172.168.3.31 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"changes": {
"removed": [
"iotop"
]
},
"msg": "",
"rc": 0,
"results": [
"Loaded plugins: fastestmirror\nResolving Dependencies\n--> Running transaction check\n---> Package iotop.noarch 0:0.6-4.el7 will be erased\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package Arch Version Repository Size\n================================================================================\nRemoving:\n iotop noarch 0.6-4.el7 @base 156 k\n\nTransaction Summary\n================================================================================\nRemove 1 Package\n\nInstalled size: 156 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n Erasing : iotop-0.6-4.el7.noarch 1/1 \n Verifying : iotop-0.6-4.el7.noarch 1/1 \n\nRemoved:\n iotop.noarch 0:0.6-4.el7 \n\nComplete!\n"
]
}
被管理端查看是否还在
三、service模块
name:—指定管理的服务名称
state:—指定服务状态
started 启动
restarted 重启
stoped 停止
enabled—指定服务是否开机自启
[root@ m01 ~]# ansible 172.168.3.31 -m service -a "name=nfs state=started enable"
四、cron模块
批量设置多个主机的定时任务信息
crontab -e
-
-
-
-
- 定时任务动作
minute: # Minute when the job should run ( 0-59, *, */2, etc )
设置分钟信息
hour: (小时信息)
day: (日期信息)
month: (月份信息)
weekday: (周信息)
job:(用于定义定时任务需要干的事情)
name:(给执行的命令加一个注释信息,防止重复执行同一个命令)
- 定时任务动作
-
-
-
[root@ m01 ~]# ansible 172.168.3.31 -m cron -a "minute=0 hour=2 job='/usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1'"
月,周信息有就写,没有就不写
ps:每个空格默认一个命令,job后面的若是一个命令,加上单引号。
[root@ m01 ~]# ansible 172.168.3.31 -m cron -a "name='time sync' minute=0 hour=2 job='/usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1'"
删除定时任务
[root@ m01 ~]# ansible 172.168.3.31 -m cron -a "name='time sync01' state=absent"
ps:ansible能删除的只能时ansible设置的定时任务,自己手动设置的不可以删除
五、mount模块
src: ( 需要挂载的存储设备或文件信息)
path: (指定目标挂载点目录)
stype:( 指定挂载时的文件系统类型)
state
present/mounted — 进行挂载
present: 不会实现立即挂载,修改fstab文件,实现开机自动挂载
mounted: 会实现立即挂载, 并且会修改fstab文件,实现开机自动挂载 (记它)
absent/unmounted — 进行卸载
absent: (会实现立即卸载, 并且会删除fstab文件信息,禁止开机自动挂载)
unmounted: (会实现立即卸载, 但是不会会删除fstab文件信息)(记它)
[root@ m01 ~]# ansible 172.168.3.31 -m mount -a "scr=172.168.3.31:/data path=/mnt fstype=nfs status=mounted"
转到172.168.3.31查看etc文件下fstab文件是否写好配置信息。
六、user模块
基本用法:
[root@ m01 ~]# ansible 172.168.3.31 -m user -a "name=kitty01"
扩展用法:
1、指定用户uid信息
[root@ m01 ~]# ansible 172.168.3.31 -m user -a "name=kitty02 uid=6666"
2、指定用户组信息
[root@ m01 ~]# ansible 172.168.3.31 -m user -a "name=kitty03 group=kitty02"
[root@ m01 ~]# ansible 172.168.3.31 -m user -a "name=kitty04 groups=kitty02"
3、批量创建虚拟用户
[root@ m01 ~]# ansible 172.168.3 .31 -m user -a "name=rsync create_home=no shell=/sbin/nologin"
4、 给指定用户创建密码
PS: 利用ansible程序user模块设置用户密码信息,需要将密码明文信息转换为密文信息进行设置
生成密文密码信息方法:
方法一:
##[root@ m01 ~]# ansible all -i localhost, -m debug -a "msg={{ '密码信息123456' | password_hash('sha512', 'kitty') }}"
[root@m01 tmp]# ansible all -i localhost, -m debug -a "msg={{ '123456' | password_hash('sha512', 'kitty') }}"
localhost | SUCCESS => {
"msg": "$6$oldboy$MVd3DevkLcimrBLdMICrBY8HF82Wtau5cI8D2w4Zs6P1cCfMTcnnyAmmJc7mQaE9zuHxk8JFTRgYMGv9uKW7j1"
}
若改变校验信息如kitty改为foolish则密文信息改变
例如:用ansible一键部署rsync服务
第一个历程安装软件:
[root@m01 tmp]# ansible 172.168.3.41 -m yum -a "name=rsync state=installed"
第二个历程编写文件:
[root@m01 tmp]# ansible 172.168.3.41 -m copy -a "src=/xxx/rsyncd.conf dest=/etc/"
第三个历程创建用户
[root@m01 tmp]# ansible 172.168.3.41 -m user -a "name=rsync create_home=no shell=/sbin/nologin"
第四个历程创建目录
[root@m01 tmp]# ansible 172.168.3.41 -m file -a "dest=/backup state=directory owner=rsync group=rsync"
第五个历程创建密码文件
[root@m01 tmp]# ansible 172.168.3.41-m copy -a "content='rsync_backup:kitty123' dest=/etc/rsync.password mode=600"
第六个历程启动服务
[root@m01 tmp]# ansible 172.168.3.41 -m service -a "name=rsyncd state=started enabled=yes"
==============================================================
客户端的操作:
第一个历程: 创建密码文件
[root@m01 tmp]# ansible 客户端地址 -m copy -a "content='rsync_backup:kitty123' dest=/etc/rsync.password mode=600"
用剧本的方式实现部署
[root@m01 tmp]# mkdir /etc/ansible/ansible-playbook
[root@m01 tmp]# vim rsync_server.ymal
说明: 剧本文件扩展名尽量写为yaml
1. 方便识别文件是一个剧本文件
2. 文件编写时会有颜色提示
- hosts: 172.168.3.41
tasks:
yum: name=rsync state=installed
copy: src=/tmp/rsyncd.conf dest=/etc/
如何执行剧本:
第一个步骤: 检查剧本的语法格式
ansible-playbook --syntax-check rsync_server.yaml
第二个步骤: 模拟执行剧本
ansible-playbook -C rsync_server.yaml
第三个步骤: 直接执行剧本
ansible-playbook rsync_server.yaml
- hosts: 172.16.1.41
tasks:
- name: 01-install rsync
yum: name=rsync state=installed
- name: 02-push conf file
copy: src=/tmp/rsyncd.conf dest=/etc/