Ansible常见基础模块介绍及使用(一)

        上一篇已经介绍了Ansible架构的介绍及安装,这一篇我们来通过文字讲解及实践进一步学习了解Ansible常见模块的使用。众所周知,Ansible是模块化、插件化的,支持的插件也是非常的众多,所有的操作基本都是通过调用不同的插件去完成的。

1、command/shell模块

语法格式:

ansible $hostgroup -i 主机清单 -m  模块名 -a "命令/参数"

需要注意的是:

  • 所有可以使用command模块完成的任务基本都可以使用shell模块实现
  • command模块不支持管道符
  • 能使用shell模块就尽量不要使用command模块

一下通过几个例子进行说明

  • 使用Ansible执行lsblk命令,查看输出
# 分别使用command和shell模块执行lsblk命令
[root@Ansible opt]# ansible client -i hosts -m command -a "lsblk"
192.168.91.110 | CHANGED | rc=0 >>
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0   20G  0 disk 
├─sda1        8:1    0    1G  0 part /boot
└─sda2        8:2    0   19G  0 part 
  ├─rl-root 253:0    0   17G  0 lvm  /
  └─rl-swap 253:1    0    2G  0 lvm  [SWAP]
sr0          11:0    1  2.1G  0 rom  
[root@Ansible opt]# ansible client -i hosts -m shell -a "lsblk"
192.168.91.110 | CHANGED | rc=0 >>
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0   20G  0 disk 
├─sda1        8:1    0    1G  0 part /boot
└─sda2        8:2    0   19G  0 part 
  ├─rl-root 253:0    0   17G  0 lvm  /
  └─rl-swap 253:1    0    2G  0 lvm  [SWAP]
sr0          11:0    1  2.1G  0 rom

# 分别使用command和shell模块执行lsblk命令并使用管道符过滤sr0关键字
[root@Ansible opt]# ansible client -i hosts -m command -a "lsblk |grep sr0"
192.168.91.110 | FAILED | rc=32 >>
lsblk: |grep:不是一个块设备
lsblk: sr0:不是一个块设备non-zero return code
[root@Ansible opt]# ansible client -i hosts -m shell -a "lsblk |grep sr0"
192.168.91.110 | CHANGED | rc=0 >>
sr0          11:0    1  2.1G  0 rom

        通过上面的执行结果,可以看出使用command模块加上管道符时会报错,shell模块显示正常。以上通过一个简单的例子说明了command模块与shell模块在使用上的差异,但以上介绍的两个模块的用法可远不止于此,command和shell模块可以结合几乎所有的可执行命令

# 查看目标主机/etc/passwd文件内容
[root@Ansible opt]# ansible client -i hosts -m shell -a "cat /etc/passwd"
[root@Ansible opt]# ansible client -i hosts -m command -a "cat /etc/passwd"
# 查看目标主机的内存使用情况
[root@Ansible opt]# ansible client -i hosts -m shell -a "free -m"
192.168.91.110 | CHANGED | rc=0 >>
              total        used        free      shared  buff/cache   available
Mem:            739         190         110           4         438         421
Swap:          2047           1        2046
[root@Ansible opt]# ansible client -i hosts -m command -a "free -m"
192.168.91.110 | CHANGED | rc=0 >>
              total        used        free      shared  buff/cache   available
Mem:            739         190         110           4         438         421
Swap:          2047           1        2046
# 查看目标主机的系统时间
[root@Ansible opt]# ansible client -i hosts -m shell -a "date"
192.168.91.110 | CHANGED | rc=0 >>
2023年 06月 26日 星期一 18:46:04 CST
[root@Ansible opt]# ansible client -i hosts -m command -a "date"
192.168.91.110 | CHANGED | rc=0 >>
2023年 06月 26日 星期一 18:46:11 CST

2、yum模块

        在我们的日常工作中面不了需要在大批量的主机上安装软件,这个时候我们就可以使用Ansible的yum模块进行批量部署。同时Ansible为我们提供了一个查看模块使用方法的帮助命令:ansible-doc我们可以使用此命令查看yum模块的具体用法:

# 查看支持的模块
ansible-doc -l
# 查看模块用法
ansible-doc -s 模块名
# 查看yum模块用法
ansible-doc -s yum

yum模块是用于在远程主机上安装、升级、删除和查询软件包的模块。它使用yum包管理器来执行这些操作 

 使用yum模块安装mariadb-server

[root@Ansible opt]# ansible client -i hosts -m yum -a "name=mariadb-server state=present"
192.168.91.110 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "msg": "",
    "rc": 0,
    "results": [
        "Installed: mariadb-server-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.x86_64",
        "Installed: mariadb-server-utils-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.x86_64",
        "Installed: mariadb-backup-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.x86_64",
        "Installed: mariadb-gssapi-server-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.x86_64"
    ]
}

以上命令中各参数的含义:

name:指定要安装的软件名

state:指定状态(包含安装和卸载,present表示安装,absent表示卸载)

从输出信息可以看出,mariadb已经在192.168.91.110节点上安装成功了,同时我们也可以在192.168.91.110节点上验证

[root@192-168-91-110 ~]# rpm -q mariadb-server
mariadb-server-10.3.35-1.module+el8.6.0+1005+cdf19c22.x86_64

 yum模块还支持很多的安装参数,大家可以自行通过命令帮助进行尝试,类如:

  • enablerepo/disablerepo    # 指定使用或禁用哪个repo源来安装
  • download_only/download_dir   # 指定仅下载不安装及rpm包的的保存目录

3、service/systemd模块

        顾名思义,service/systemd模块主要是用来管理各种服务的启停及是否开机自启动的模块。两个模块的用法基本相同,service模块更多的用在7系类之前的操作系统上,systemd模块则更多的用于管理systemd类型的服务。

        同样的可以使用上面的方法查看其模块的用法,下面我就演示将以上例子中安装的mariadb-server启动并设置为开机自启动,因为上面的例子当中只是在节点上安装了mariadb-server,并未启动。

可以通过ansible-doc命令查看模块帮助

查看当前状态,刚好我们可以使用shell模块进行远程查看

# 查看当前状态
[root@Ansible opt]# ansible client -i hosts -m shell -a "systemctl status mariadb"
192.168.91.110 | FAILED | rc=3 >>
● mariadb.service - MariaDB 10.3 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/non-zero return code
# 启动
[root@Ansible opt]# ansible client -i hosts -m service -a "name=mariadb state=started enabled=yes"
192.168.91.110 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "enabled": true,
    "name": "mariadb",
    "state": "started",
...
...
...
# 输出信息过多,进行了删除

# 再次查看状态
[root@Ansible opt]# ansible client -i hosts -m shell -a "systemctl status mariadb"
192.168.91.110 | CHANGED | rc=0 >>
● mariadb.service - MariaDB 10.3 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2023-06-26 19:35:10 CST; 3min 2s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
  Process: 12308 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS)
  Process: 12163 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mariadb.service (code=exited, status=0/SUCCESS)
  Process: 12139 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
 Main PID: 12273 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 30 (limit: 4498)
   Memory: 58.4M
   CGroup: /system.slice/mariadb.service
           └─12273 /usr/libexec/mysqld --basedir=/usr

6月 26 19:35:09 192-168-91-110 mysql-prepare-db-dir[12210]: which will also give you the option of removing the test
6月 26 19:35:09 192-168-91-110 mysql-prepare-db-dir[12210]: databases and anonymous user created by default.  This is
6月 26 19:35:09 192-168-91-110 mysql-prepare-db-dir[12210]: strongly recommended for production servers.
6月 26 19:35:09 192-168-91-110 mysql-prepare-db-dir[12210]: See the MariaDB Knowledgebase at http://mariadb.com/kb
6月 26 19:35:09 192-168-91-110 mysql-prepare-db-dir[12210]: Please report any problems at http://mariadb.org/jira
6月 26 19:35:09 192-168-91-110 mysql-prepare-db-dir[12210]: The latest information about MariaDB is available at http://mariadb.org/.
6月 26 19:35:09 192-168-91-110 mysql-prepare-db-dir[12210]: Consider joining MariaDB's strong and vibrant community:
6月 26 19:35:09 192-168-91-110 mysql-prepare-db-dir[12210]: https://mariadb.org/get-involved/
6月 26 19:35:09 192-168-91-110 mysqld[12273]: 2023-06-26 19:35:09 0 [Note] /usr/libexec/mysqld (mysqld 10.3.35-MariaDB) starting as process 12273 ...
6月 26 19:35:10 192-168-91-110 systemd[1]: Started MariaDB 10.3 database server.

可以看到mariadb目前已处于运行状态,并设置为了开机自启动。

关于使用service模块时,涉及参数的说明:

  • name:指定要操作的服务名
  • state:指定服务状态,包括started、stoped、restarted、reloaded
  • enabled:布尔值(yes/no),指定是否开机自启动
  • runlevel:指定服务启动级别
  • sleep:当state设置为restarted时,表示执行stop与start操作时,中间间隔的时间,单位为秒。

以上为本章节的全部内容,希望大家参考学习、举一反三、勤加练习加深印象。后期还有很多更高级的模块进行介绍。后面的内容会更加精彩,敬请关注!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值