RHCL8_Linux_ansible的使用

本章主要介绍ansible的基本使用

  • 编写ansible.cfg和清单文件
  • ansible的基本用法

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

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

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

[privilege_escalation]
become=True
become_method=sudo
become_user=root

[blab@node01 ~]$ 

这里在[defaults]字段下只添加了一句inventory = ./hosts,表示把当前目录下名称为hosts的文件当作清单文件(什么是清单文件马上就要讲到)。
在 [privilege_escalation]字段下定义了如何提升权限,因为是使用lduan用户登录到被管理主机的,所以需要提升权限。这个字段下写了3条,分别如下:

  1. become=True:登录到被管理主机时要切换到其他用户。
  2. become_method=sudo:以 sudo的方式切换。
  3. become_user-root :切换到root用户。

这三句的意思是,当用ssh登录到被管理主机时,以 sudo的方式切换到root,这也是为什么一开始要在被管理主机上配置好sudo的原因。

2)所有的被管理机器都要写入清单文件中。在实验环境中有两台被管理主机,那么分别写在hosts中,内容如下。
[blab@node01 ~]$ cat hosts 
node02
node03
[blab@node01 ~]$

这里一行一台主机,我们在使用ansible或ansible-playbook命令时,指定的主机名必须是这个名称才行。要确保能解析node02和node03,写成相应的IP也可以。
如果环境中被管理的主机很多,把主机一台台地写进去太冗繁,所以可以改成如下写法。

[blab@node01 ~]$ cat hosts 
node02
node03
node[10:15]
[blab@node01 ~]$ 

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

[blab@node01 ~]$ cat hosts 
node02
node03
node[10:15]

[db1]
node[2:5]

[db2]
node6
node7
[blab@node01 ~]$ 

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

[blab@node01 ~]$ cat hosts 
node02
node03

[db1]
node02
node03
node04
node05

[db2]
node6
node7

[db3:children]
db1
db2
[blab@node01 ~]$ 

这里定义了一个主机组db3,但是后面加了":children",则这个主机组下面的db1和db2就不再表示主机了,而是表示主机组。所以,db3这个主机组中所包括的主机是node01到node02及node06和 node07这6台主机。

3)下面查看每个主机组中有多少主机。首先查看主机组db1中的主机
[blab@node01 ~]$ ansible db1 --list-hosts
  hosts (4):
    node02
    node03
    node04
    node05
[blab@node01 ~]$ 
4)查看主机组db2中的主机,命令如下。
[blab@node01 ~]$ ansible db2 --list-hosts
  hosts (2):
    node6
    node7
[blab@node01 ~]$ 
5)查看主机组 db3中的主机,命令如下。
[blab@node01 ~]$ ansible db3 --list-hosts
  hosts (6):
    node02
    node03
    node04
    node05
    node6
    node7
[blab@node01 ~]$ 

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

6)了解了清单文件的写法之后,最终把清单文件写成如下内容。
[blab@node01 ~]$ cat hosts 
node02
node03

[db1]
node02
node04
[blab@node01 ~]$ 

这里就包括了一个主机组 db,里面含有node01和node03。

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模块名"来查看。
下章内容会详细讲解

相关推荐
紫晓宁1 天前
jmeter结合ansible分布式压测--3压测执行
分布式·jmeter·ansible
紫晓宁2 天前
jmeter结合ansible分布式压测--1数据准备
分布式·jmeter·ansible
紫晓宁3 天前
jmeter结合ansible分布式压测--2jmter环境准备
分布式·jmeter·ansible
SG.xf6 天前
ansible中的任务执行控制
ansible
赶紧回家去8 天前
Ansible基本使用
运维·ansible
我就是全世界9 天前
ansible详细介绍和具体步骤
ansible
福大大架构师每日一题9 天前
27.9 调用go-ansible执行playbook拷贝json文件重载采集器
golang·json·ansible·prometheus
SG.xf9 天前
Ansible
运维·ansible
避凉闲庭9 天前
ansible开局配置-openEuler
linux·运维·ansible·脚本·openeuler·免密登录·批量化
运维小白。。12 天前
Ansible 批量部署
ansible