ansible服务模块

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/
上一篇:第22天---Python爬虫---BeautifulSoup库


下一篇:python 常用库