Ansible常用模块

Ansible常用模块
环境
环境:配置两台dbservers,都已配置了ssh免密登录
[dbservers]
192.168.31.16
192.168.31.18
[root@mysql-01 data]# mkdir -p /mnt/cdrom
[root@mysql-01 data]# mount /dev/cdrom /mnt/cdrom/

命令模式
ansible <host-pattern> [-f forks] [-m module_name][-a args]
#查看当前ansible管理的主机
root@mysql-01 data]# ansible all --list
  hosts (2):
    192.168.31.16
    192.168.31.18
    
基本模块module_name
command、shell、doc、file、copy、add、script、doc
```

```shell
#doc模块
[root@mysql-01 data]# ansible-doc yum -s
```

```shell
[root@mysql-01 ansible]# ansible dbservers -m ping
[root@mysql-01 ansible]# ansible dbservers -m shell -a 'ls /etc/hosts'
#command模块是默认模式。如下removes=表示如果不存在该文件,则不执行。如果为creates=则表示如果存在该文件则执行。
[root@mysql-01 ansible]# ansible all -a 'removes=/etc/fs cat /etc/hosts'
192.168.31.16 | SUCCESS | rc=0 >>
skipped, since /etc/fs does not exist
192.168.31.18 | SUCCESS | rc=0 >>
skipped, since /etc/fs does not exist
#使用chdir参数,进入etc目录后查看hosts文件
[root@mysql-01 ansible]# ansible all -a 'chdir=/etc/ cat hosts'                     
192.168.31.18 | CHANGED | rc=0 >>
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.31.16 mysql-01
192.168.31.17 jenkins-git
192.168.31.18 mysql-02
192.168.31.16 | CHANGED | rc=0 >>
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.31.16 mysql-01
192.168.31.17 jenkins-git
192.168.31.18 mysql-02

```

###### file模块

```shell
#file模块
##通过state参数指定对文件的操作,如创建
[root@mysql-01 ansible]# ansible all -m file -a 'name=/data/ansible/f3 state=touch'
[root@mysql-01 ansible]# ansible all -m shell -a 'ls /data/ansible/f3'
192.168.31.16 | CHANGED | rc=0 >>
/data/ansible/f3
192.168.31.18 | CHANGED | rc=0 >>
/data/ansible/f3
##通过absent参数删除文件
[root@mysql-01 ansible]# ansible all -m file -a 'name=/data/ansible/f3 state=absent'
##通过directory参数创建文件夹
[root@mysql-01 ansible]# ansible all -m file -a 'name=/data/dir1 state=directory' 
##通过link参数创建软链接
[root@mysql-01 data]# ansible all -m file -a 'src=/data/ansible dest=/data/ansible.link state=link'

```



###### hostname模块

```shell
#hostname模块
##通过name参数配置目标主机主机名,会立即生效且永久修改
[root@mysql-01 data]# ansible 192.168.31.18 -m hostname -a 'name=mysql-02'
```



###### cron模块

```shell
#cron模块
##启用cron
[root@mysql-01 data]# ansible all -m cron -a 'minute=* weekday=1,3,5 job="/usr/bin/wall warning" name=warncron'
[root@mysql-01 data]# crontab -l
#Ansible: warncron
* * * * 1,3,5 /usr/bin/wall warning
#停用cron,需要带job、name参数,通过disabled=true控制,要再次启用,使用disabled=false即可。也可通过state=absent参数完全删除该cron
[root@mysql-01 data]# ansible all -m cron -a 'disabled=true job="/usr/bin/wall warning" name=warncron'
```

###### copy、fetch模块

```shell
#copy模块,将本地文件复制到远端且设置备份。另外可以设置mode=644 owner=wang等参数。复制文件来源可为本地文件或者content="hello world!"此类由content参数指定的内容。
[root@mysql-01 ansible]# ansible all -m copy -a 'src=/etc/hosts dest=/etc/hosts backup=yes'
#fetch模块,从远端抓取文件到本地,会针对每个主机在本地创建相关目录。
[root@mysql-01 ansible]# ansible db* -m fetch -a 'src=/var/log/messages dest=/data/ansible' 
192.168.31.16 | CHANGED => {
    "changed": true, 
    "checksum": "748f4307920e2eb194e5dde46a45f40b9e76c00a", 
    "dest": "/data/ansible/192.168.31.16/var/log/messages", 
    "md5sum": "1c94a98fc8065919c44e1f0a2f0e43ce", 
    "remote_checksum": "748f4307920e2eb194e5dde46a45f40b9e76c00a", 
    "remote_md5sum": null
}
192.168.31.18 | CHANGED => {
    "changed": true, 
    "checksum": "87e4095e5f908fa96f0b482dcba57a63a0539021", 
    "dest": "/data/ansible/192.168.31.18/var/log/messages", 
    "md5sum": "31cb39af78c640b6290f1f3e826f0dc4", 
    "remote_checksum": "87e4095e5f908fa96f0b482dcba57a63a0539021", 
    "remote_md5sum": null
}
[root@mysql-01 ansible]# ls
192.168.31.16  192.168.31.18
[root@mysql-01 ansible]# tree
.
├── 192.168.31.16
│   └── var
│       └── log
│           └── messages
└── 192.168.31.18
    └── var
        └── log
            └── messages

```

###### shell模块

```shell
#command模块无法处理管道等命令,一般用shell模式
[root@mysql-01 ansible]# ansible all -m shell -a "echo $HOSTNAME"
```

###### script模块

```shell
#script模块在远端运行本地脚本
[root@mysql-01 ansible]# ansible all -m script -a './hostname.sh'
192.168.31.16 | CHANGED => {
    "changed": true, 
    "rc": 0, 
    "stderr": "Shared connection to 192.168.31.16 closed.\r\n", 
    "stderr_lines": [
        "Shared connection to 192.168.31.16 closed."
    ], 
    "stdout": "mysql-01\r\n", 
    "stdout_lines": [
        "mysql-01"
    ]
}
192.168.31.18 | CHANGED => {
    "changed": true, 
    "rc": 0, 
    "stderr": "Shared connection to 192.168.31.18 closed.\r\n", 
    "stderr_lines": [
        "Shared connection to 192.168.31.18 closed."
    ], 
    "stdout": "mysql-02\r\n", 
    "stdout_lines": [
        "mysql-02"
    ]
}
```

###### yum模块

```shell
#yum模块,通过name参数指定安装包,安装多个包在name参数后用“,”隔开即可。
[root@mysql-01 data]# ansible 192.168.31.18 -m yum -a 'name=vsftpd'
##查看已安装的
[root@mysql-01 data]# ansible 192.168.31.18 -m yum -a 'list=installed'
##卸载
[root@mysql-01 data]# ansible 192.168.31.18 -m yum -a 'name=vsftpd state=absent'
##使用本地已有的包,挂载了光盘。
[root@mysql-01 data]# mkdir -p /mnt/cdrom
[root@mysql-01 data]# mount /dev/cdrom /mnt/cdrom/
[root@mysql-01 data]# ll /mnt/cdrom/Packages/vsftpd-3.0.2-28.el7.x86_64.rpm 
-rw-rw-r-- 3 root root 175944 10月 15 2020 /mnt/cdrom/Packages/vsftpd-3.0.2-28.el7.x86_64.rpm
#通过copy模块拷贝到远程主机
[root@mysql-01 data]# ansible 192.168.31.18 -m copy -a 'src=/mnt/cdrom/Packages/vsftpd-3.0.2-28.el7.x86_64.rpm dest=/data/ansible'
#通过name指定本地rpm包安装
[root@mysql-01 data]# ansible 192.168.31.18 -m yum -a 'name=/data/ansible/vsftpd-3.0.2-28.el7.x86_64.rpm'
#更新缓存,避免yum安装缓存问题,以下为安装dstat工具
[root@mysql-01 data]# ansible 192.168.31.18 -m yum -a 'update_cache=yes name=dstat'
```

###### service模块管理服务

```shell
#设置vsftpd服务启动且开机自启动。state状态可设置为stopped,restarted
[root@mysql-01 data]# ansible 192.168.31.18 -m service -a 'name=vsftpd state=started enabled=yes'
```

###### user模块管理用户

```shell
#创建nginx用户,指定其所属组等信息。还可指定uid,home目录等。通过state=absent参数即可删除用户等信息
[root@mysql-01 data]# ansible 192.168.31.18 -m user -a 'name=nginx shell=/sbin/nologin system=yes groups=root,man'
#查看创建的用户的用户信息
[root@mysql-01 data]# ansible 192.168.31.18 -a 'getent passwd nginx'
192.168.31.18 | CHANGED | rc=0 >>
nginx:x:997:995::/home/nginx:/sbin/nologin
```

###### group模块管理组

```shell
#创建组,也可指定name参数后通过state=absent删除
[root@mysql-01 data]# ansible 192.168.31.18 -m group -a 'name=nginx system=yes gid=80'

```


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值