rhce-b9.利用playbooke生成主机清单文件

白-胖-子      2022-03-21     178

关键词:

红帽RHCE考试下午-RHCE(RH294)

RH294任务概览

  • 考试时间4个小时,6台虚拟机,15道题
  • 原来通过脚本或者集群做的题现在都需要使用playbook实现
  • 考试时大概有6台虚拟服务器,都已经做好了互相的免密
  • 做题在ansible控制节点workstation做,但是需要去其他虚拟服务器进行验证
  • 考试时需要将6台虚拟服务器在考试环境全部开启,物理机界面点击左侧按钮启动
  • 考试时Ansible所有playbook都放在普通用户目录中且都以普通用户执行
  1. 注意:考试时一定注意要求将playbook放在指定用户的家目录中,用指定的用户登录做题!
  2. 注意:考试的判分方式通过普通用户远程执行指定目录下的playbook或者脚本,如果使用root做题,则没有权限就是零分

9. 利用playbooke生成主机清单文件

  • 使用playbook在所有主机组生成指定格式的文件

任务要求

  • 将一个初始模板文件从 http://172.25.250.250/ansible2.8/fifiles/hosts.j2 下载到 /home/student/ansible
  • 完成该模板,以便用它生成以下文件:针对每个清单主机包含一行内容,其格式与 /etc/hosts 相同创建名为 /home/student/ansible/hosts.yml 的 playbook,
  • 它将使用此模板在 dev 主机组中的主机上生成文件 /etc/myhosts。
  • 该 playbook 运行后,dev 主机组中主机上的文件/etc/myhosts 应针对每个受管主机包含一行内容:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.24.1.6 servera.lab1.example.com servera
172.24.1.7 serverb.lab1.example.com serverb
172.24.1.8 serverc.lab1.example.com serverc
172.24.1.9 serverd.lab1.example.com serverd 172.24.1.10 bastion.lab1.example.com bastion

注意:主要是考察ansible内部变量的使用

准备个工作

  • 我们没有 hosts.j2 模板,如果修改模板需要添加一下内容,考试也需要添加的
[student@workstation ansible]$ wget http://172.25.250.250/ansible2.8//hosts.j2 
[student@workstation ansible]$ vim hosts.j2 
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
## 考试的时候只有上面的内容,没有下面的内容
#考试需要添加一下内容
% for host in groups.all %
 hostvars[host].ansible_enp1s0.ipv4.address  hostvars[host].ansible_fqdn   hostvars[host].ansible_hostname 
% endfor %

完成步骤

  • 考试的时候先把模板文件下载下来,放到指定的目录中去
    [student@workstation ansible]$ wget http://172.25.250.250/ansible2.8//hosts.j2
  • 查看文件内容并发现规律
  1. 第一部分是主机的IP地址 hostvars[host].ansible_enp1s0.ipv4.address
  2. 第二部分是主机的完整域名 hostvars[host].ansible_fqdn
  3. 第三部分是主机的主机名 hostvars[host].ansible_hostname
  • 我们写一个循环用来生成要求格式的内容,用到的都是setup变量,通过ansible servera -m setup > setup.log获取
% for host in groups.all % ## groups.all是ansible的内置变量
 hostvars[host].ansible_enp1s0.ipv4.address   hostvars[host].ansible_fqdn   hostvars[host].ansible_hostname 
% endfor %

注意:在之前题目中安装过的role觉得目录中是存在类似模板文件见的,比如之前的apache角色,可以找到类似德模板文件进行参考

  • 将写好的循环添加到下载的模板中去
[student@workstation ansible]$ vim hosts.j2 
  • 在/home/student/ansible目录下创建名为hosts.yml的playbook,
    它将使用此模板在dev主机组中的主机上生成/etc/myhosts文件
[student@workstation ansible]$ vim hosts.yml
---
## 先执行空的play,用来获取所有主机的内容
- name: gather facts
  hosts: all
## 使用template模块根据模板部署文件
- name: config myhosts
  hosts: dev 
  tasks:
    - template:
        src: hosts.j2 ## 模板源文件和playbook在同一目录下,则可以直接写文件名
        dest: /etc/myhosts
  • 做完以后随便找台服务器登录上去确认一下,是否和题中要求的一样

考察的知识点

template 模板

  • 模板是一个文本文件,可以做为生成文件的模版,并且模板文件中还可嵌套jinja2语法
  • template中也可以使用流程控制 for 循环和 if 条件判断,实现动态生成文件功能
% for i in EXPR %
...
% endfor %
## 示例:
% for i in range(1,10) %
server_name webi;
% endfor %

template 模块

  • template使用了Jinjia2格式作为文件模版,进行文档内变量的替换的模块。它的每次使用都会被ansible标记为”changed”状态。
  • 通过template模块,可以根据内置变量或者循环和判断的模板文件生成不同的目标文件。
#temlnginx2.yml
---
- hosts: websrvs
  remote_user: root
  vars:
    nginx_vhosts:
      - 81
      - 82
      - 83
  tasks:
    - name: template config
      template: src=nginx.conf2.j2 dest=/data/nginx.conf
#templates/nginx.conf2.j2
% for vhost in nginx_vhosts %
server 
  listen  vhost 

% endfor %
ansible-playbook -C templnginx2.yml --limit 10.0.0.8
#生成的结果:
server 
  listen 81

server 
  listen 82

server 
  listen 83

rhce-b12.利用playbook生成所有清单主机指定硬件信息报告

...#xff0c;15道题原来通过脚本或者集群做的题现在都需要使用playbook实现考试时大概有6台虚拟服务器,都已经做好了互相的免密做题在ansible控制节点workstation做,但是需要去其他虚拟服务器进行验证考试时需要将6台虚拟 查看详情

rhce-b12.利用playbook生成所有清单主机指定硬件信息报告(代码片段)

...#xff0c;15道题原来通过脚本或者集群做的题现在都需要使用playbook实现考试时大概有6台虚拟服务器,都已经做好了互相的免密做题在ansible控制节点workstation做,但是需要去其他虚拟服务器进行验证考试时需要将6台虚拟 查看详情

rhce-b10.利用playbook在不同主机组修改文件内容

...#xff0c;15道题原来通过脚本或者集群做的题现在都需要使用playbook实现考试时大概有6台虚拟服务器,都已经做好了互相的免密做题在ansible控制节点workstation做,但是需要去其他虚拟服务器进行验证考试时需要将6台虚拟 查看详情

rhce-b8.利用playbook在指定主机组创建和使用逻辑卷

...#xff0c;15道题原来通过脚本或者集群做的题现在都需要使用playbook实现考试时大概有6台虚拟服务器,都已经做好了互相的免密做题在ansible控制节点workstation做,但是需要去其他虚拟服务器进行验证考试时需要将6台虚拟 查看详情

rhce-b10.利用playbook在不同主机组修改文件内容(代码片段)

...#xff0c;15道题原来通过脚本或者集群做的题现在都需要使用playbook实现考试时大概有6台虚拟服务器,都已经做好了互相的免密做题在ansible控制节点workstation做,但是需要去其他虚拟服务器进行验证考试时需要将6台虚拟 查看详情

rhce-b8.利用playbook在指定主机组创建和使用逻辑卷(代码片段)

...#xff0c;15道题原来通过脚本或者集群做的题现在都需要使用playbook实现考试时大概有6台虚拟服务器,都已经做好了互相的免密做题在ansible控制节点workstation做,但是需要去其他虚拟服务器进行验证考试时需要将6台虚拟 查看详情

rhce-b11.利用playbook创建web内容目录并能够访问(代码片段)

...#xff0c;15道题原来通过脚本或者集群做的题现在都需要使用playbook实现考试时大概有6台虚拟服务器,都已经做好了互相的免密做题在ansible控制节点workstation做,但是需要去其他虚拟服务器进行验证考试时需要将6台虚拟 查看详情

rhce-b11.利用playbook创建web内容目录并能够访问(代码片段)

...#xff0c;15道题原来通过脚本或者集群做的题现在都需要使用playbook实现考试时大概有6台虚拟服务器,都已经做好了互相的免密做题在ansible控制节点workstation做,但是需要去其他虚拟服务器进行验证考试时需要将6台虚拟 查看详情

rhce-b3.创建playbook安装php和mariadb软件包到指定主机组(代码片段)

...#xff0c;15道题原来通过脚本或者集群做的题现在都需要使用playbook实现考试时大概有6台虚拟服务器,都已经做好了互相的免密做题在ansible控制节点workstation做,但是需要去其他虚拟服务器进行验证考试时需要将6台虚拟 查看详情

ansible之主机清单及playbook剧本(代码片段)

Ansible之主机清单及playbook剧本一、主机清单inventory变量参数Inventory中的变量二、YAML1.基本语法规则2.YAML支持的数据结构三、playbook1.组成部分2.运行playbook3.定义、引用变量4.指定远程主机sudo切换用户5.when条件判断6.迭代四、Templates... 查看详情

ansible的脚本------playbook剧本

@[toc]一、剧本的前置知识点1、主机清单ansible默认的主机清单是/etc/ansible/hosts文件主机清单可以手动设置,也可以通过DynamicInventory动态生成一般主机名使用FQDNvi/etc/ansible/hosts[webserver]#使用方括号设置组名www1.example.org#定义被监控... 查看详情

ansible之主机清单及playbook剧本(代码片段)

Ansible之主机清单及playbook剧本一、主机清单inventory变量参数Inventory中的变量二、YAML1.基本语法规则2.YAML支持的数据结构三、playbook1.组成部分2.运行playbook3.定义、引用变量4.指定远程主机sudo切换用户5.when条件判断6.迭代四、Templates... 查看详情

ansible的主机清单,yml语法,playbook详解+操作(代码片段)

本章内容:一.inventory主机清单二.yml语法三.playbook详解+操作inventory主机清单ansible默认的主机清单是/etc/ansible/hosts文件主机清单可以手动设置,也可以通过DynamicInventory动态生成一般主机名使用FQDNvi/etc/ansible/hosts[webserver]#方括号设... 查看详情

ansible深入理解和操作——02(主机清单,yml语法,playbook详解+操作)(代码片段)

本章内容:一.inventory主机清单二.yml语法三.playbook详解+操作inventory主机清单ansible默认的主机清单是/etc/ansible/hosts文件主机清单可以手动设置,也可以通过DynamicInventory动态生成一般主机名使用FQDNvi/etc/ansible/hosts[webserver]#方括号设... 查看详情

自动化运维管理工具ansible的详细解读之inventory主机清单和playbook剧本(代码片段)

Ansible的详细解读之【inventory主机清单和playbook剧本】一、inventory主机清单1.1主机变量1.2组变量1.3组嵌套二、剧本(playbook)2.1playbook介绍2.2playbooks的组成2.3案例:编写httpd的playbook一、inventory主机清单Inventory支持对主机... 查看详情

Ansible Azure 动态清单和在单个 playbook 中的主机之间共享变量

】AnsibleAzure动态清单和在单个playbook中的主机之间共享变量【英文标题】:AnsibleAzureDynamicInventoryandSharingvariablesbetweenhostsinasingleplaybook【发布时间】:2020-05-2205:27:29【问题描述】:问题:使用通配符从剧本中的另一台主机引用有关... 查看详情

Ansible-playbook 针对不在清单文件中并包含组变量的任意主机运行

】Ansible-playbook针对不在清单文件中并包含组变量的任意主机运行【英文标题】:Ansible-playbookrunagainstarbitraryhostwhichisnotininventoryfileandincludegroupvars【发布时间】:2017-06-0419:10:33【问题描述】:当我以这种方式运行剧本runrole.yml时:a... 查看详情

利用ansible的playbook实现简单的案例和http的简单介绍

1、ansible-playbook实现MySQL5.7.37的二进制部署1.1、简单的架构和主机准备上面的图是我用来做学习的简单小实验用的主机的准备:7台虚拟机1、Ansible主控制端:主机名:ansible系统:CentOS8.5IP:10.0.0.8ansible版本:2.9.272、Ansible被控制端-w... 查看详情