RHEL中ansible常用模块

本章主要介绍ansible中最常见模块的使用

文件管理模块

软件包管理模块

服务管理模块

磁盘管理模块

用户管理模块

防火墙管理模块

ansible的基本用法如下

ansible 机器名 -m 模块x -a “模块的参数”

1.编写ansible.cfg和清单文件

执行ansible或ansible-playbook命令时优先使用当前目录中ansible.cfg的配置。如果当前目录中没有,则使用默认的/etc/ansible.cfg中的配置。

(1)下面的操作都是主机1上的用户lu操作的,先在家目录下创建ansible.cfg,内容如下。
[lu@Hal55 ~]$ vim ansible.cfg
[lu@Hal55 ~]$ cat ansible.cfg
[defaults]
inventory = ./hosts

[privilege_escalation]
become=True
become_method=sudo
become_user=root
[lu@Hal55 ~]$ 

这里在[defaults]字段下只添加了一句inventory = ./hosts,表示把当前目录下名称为hosts的文件当作清单文件(什么是清单文件马上就要讲到)。
        在 [privilege_escalation]字段下定义了如何提升权限,因为是使用lduan用户登录到被管理主机的,所以需要提升权限。这个字段下写了3条,分别如下:
become=True:登录到被管理主机时要切换到其他用户。
become_method=sudo:以 sudo的方式切换。
become_user-root :切换到root用户。
        这三句的意思是,当用ssh登录到被管理主机时,以 sudo的方式切换到root,这也是为什么一开始要在被管理主机上配置好sudo的原因。

(2)所有的被管理机器都要写入清单文件中。在实验环境中有两台被管理主机,那么分别写在hosts中,内容如下。

[u@Hal55 ~]$ cat hosts
aaa2
aaa3
aaa[10:15]
[lu@Hal55 ~]$ 

  这里加了一行node[10:15],表示 node10到 node15,这样在清单文件中就写了8台主机(需要注意的是,在我们的练习环境中node10到node15不存在)。
        如果在执行ansible命令时只是想在部分主机上执行,那么在清单文件中可以对主机进行分组。定义主机组时,组名写在中括号“[]”中,在[下面写的主机名都属于这个组,直到定义下一个组的位置为止。修改清单文件的内容如下。

[lu@Hal55 ~]$ cat hosts
aaa2
aaa3
aaa[10:15]

[db1]
node[2:5]

[db2]
node6
node7
[lu@Hal55 ~]$ 

  这里定义了两个主机组db1和db2,db1组中包括的主机有server2到server5,db2组中包括的主机有server6和 server7。
        如果想定义一个主机组,这个组中包括db1和db2两个主机组的主机,可以用 children关键字,修改hosts的内容如下。

[lu@Hal55 ~]$ vim hosts
[lu@Hal55 ~]$ cat hosts
aaa2
aaa3

[db1]
aaa2
aaa3
aaa4
aaa5

[db2]
aaa6
aaa7

[db3:children]
db1
db2
[lu@Hal55 ~]$ 

(3)下面查看每个主机组中有多少主机,首先查看主机组db1中的主机

[lu@Hal55 ~]$ ansible db1 --list-hosts
  hosts (4):
    aaa2
    aaa3
    aaa4
    aaa5
4)查看主机组db2中的主机,命令如下。
[lu@Hal55 ~]$ ansible db2 --list-hosts
  hosts (2):
    aaa6
    aaa7
[lu@Hal55 ~]$ 
5)查看主机组 db3中的主机,命令如下。
[lu@Hal55 ~]$ ansible db3 --list-hosts
  hosts (6):
    aaa2
    aaa3
    aaa4
    aaa5
    aaa6
    aaa7
[lu@Hal55 ~]$ 

共6台主机,与分析的是一样的。还有一个内置主机组叫作all,表示所有主机

6)了解了清单文件的写法之后,最终把清单文件写成如下内容。
[lu@Hal55 ~]$ cat hosts
aaa2
aaa3

[db1]
aaa2
aaa4
[lu@Hal55 ~]$ 
2.ansible的基本用法

ansible的基本用法如下


ansible 机器名 -m 模块x -a "模块的参数"

这里的机器名必须出现在清单文件中,整体的意思是在指定的机器上执行模块x

1)例如,在server2上执行hostname命令,命令如下
[blab@node01 ~]$ ansible node02 -m shell -a "hostname"
node02 | CHANGED | rc=0 >>
node02
[blab@node01 ~]$

shell模块用于执行操作系统命令,执行的命令就作为shell模块的参数,这里在-a中写要执行的系统命令。所以,上面的命令就是在node02上执行hostname命令,显示的结果是node02
机器名称是不同的本实验机器用的是纯机器名称 修改/etc/hosts文件可以修改多个主机名
        要完成不同的任务就需要调用不同的模块来实现,系统中存在的所有 ansible模块可以通过ansible-doc -l来查看。
不同的模块有不同的参数,模块的参数及使用方法可以通过“ansible-doc模块名”来查看。
下章内容会详细讲解

你可能感兴趣的:(Red,hat红帽操作系统,ansible)