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

相关推荐
风清再凯5 小时前
自动化工具ansible,以及playbook剧本
运维·自动化·ansible
IT乌鸦坐飞机5 小时前
ansible部署数据库服务随机启动并创建用户和设置用户有完全权限
数据库·ansible·centos7
遇见火星13 天前
如何使用Ansible一键部署MinIO集群?
ansible
粥周粥13 天前
ANSIBLE
ansible
码农101号13 天前
Linux中ansible模块补充和playbook讲解
linux·运维·ansible
码农101号13 天前
Linux的Ansible软件基础使用讲解和ssh远程连接
ansible
烟雨书信15 天前
ANSIBLE运维自动化管理端部署
运维·自动化·ansible
碎碎-li15 天前
ANSIBLE(运维自动化)
运维·自动化·ansible
@donshu@18 天前
Linux运维-ansible-python开发-获取inventroy信息
linux·运维·ansible
Kendra91921 天前
Ansible
ansible