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. RHCL8_Linux_ansible使用

    2023-12-16 07:06:05       40 阅读
  2. RHEL8中ansible使用

    2023-12-16 07:06:05       43 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-16 07:06:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-16 07:06:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-16 07:06:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-16 07:06:05       20 阅读

热门阅读

  1. vue与angular以及react的区别

    2023-12-16 07:06:05       32 阅读
  2. 浅谈“前端已死”论

    2023-12-16 07:06:05       37 阅读
  3. Vue双向数据绑定和小程序数据驱动有何异同?

    2023-12-16 07:06:05       38 阅读
  4. urllib.parse 用于解析 URL

    2023-12-16 07:06:05       37 阅读
  5. TOGAF—架构(Architecture)项目管理

    2023-12-16 07:06:05       40 阅读
  6. 华纳云:如何解决ubuntu中libsqlite3-0依赖问题?

    2023-12-16 07:06:05       41 阅读
  7. Scrapy的crawlspider爬虫

    2023-12-16 07:06:05       37 阅读
  8. 组件v-model和自定义v-model修饰符(vModelText)

    2023-12-16 07:06:05       40 阅读
  9. 腾讯云部署服务问题汇总

    2023-12-16 07:06:05       43 阅读