[Do374]ansible-nagivator考前整理

[Do374]ansible-nagivator考前整理

  • 1. Ansible-Navigator 升级后的变化
    • 1.1 主要变化
    • 1.2 重大改变
  • 2. ansible主要配置文件
    • 2.1 .ansible-navigator.yml
    • 2.2 ansible.cnf
  • 3. 常用模块
    • 3.1 file模块
    • 3.2 copy模块
    • 3.3 user模块和lookup模块
    • 3.4 yum和yum_repository模块
    • 3.5 systemd和service模块
  • 4. collection和role
    • 4.1 Collections(集合)
      • 4.1.1 定义
      • 4.1.2 特点
      • 4.1.3 使用场景
    • 4.2 Roles(角色)
      • 4.2.1 定义
      • 4.2.2 特点
      • 4.2.3 使用场景
    • 4.3 collection和role综合示例
      • 4.3.1 创建collection
      • 4.3.2 创建role
  • 5. ansible-builder构建执行环境
    • 5.1 示例

1. Ansible-Navigator 升级后的变化

从rhel7开始使用ansible已经7,8年了,之前的rhce8和DO447也都是考的ansible,ansible 2.9之后开始使用ansible-navigator但一直没系统的看过.这次正好有个ansible-navigator内部培训,系统的撸一遍顺带给CA加个等级.

Ansible Navigator 是 Red Hat 在 Ansible 2.9 之后推出的新工具,旨在提供更高效、更安全的自动化运维体验。

以下是 Ansible Navigator 相对于 Ansible Playbook 的主要变化和优势:

1.1 主要变化

  1. 容器化执行环境

    • Ansible Navigator 通过在容器中运行 Playbook,提供了一个隔离且一致的执行环境。这有助于确保 Playbook 在开发和测试环境中与生产环境的行为一致。
  2. 自动化执行环境(Automation Execution Environments, AEE)

    • Ansible Navigator 允许用户选择不同的 AEE 来运行 Playbook。这些 AEE 是预配置的容器镜像,包含 Ansible Core、Ansible Content Collections 以及运行 Playbook 所需的所有依赖项。这为用户提供了更大的灵活性和可定制性。
  3. 改进的用户体验

    • Ansible Navigator 提供了一个更友好的用户界面和更丰富的命令行工具,使得编写、测试和调试 Playbook 更加容易。它还提供了更好的错误处理和调试信息,帮助用户更快地定位和解决问题。

1.2 重大改变

  1. 从命令行工具到集成开发环境(IDE)

    • Ansible Navigator 不仅仅是一个命令行工具,它还提供了一个集成的开发环境,支持代码补全、语法高亮、调试等功能。这使得开发人员能够更高效地编写和维护 Playbook。
  2. 安全性增强

    • 通过使用容器化技术,Ansible Navigator 提供了更高的安全性。每个 Playbook 的执行都在独立的容器中进行,避免了潜在的安全风险。此外,Ansible Navigator 还支持更细粒度的权限控制和审计功能。
  3. 性能优化

    • Ansible Navigator 通过优化执行流程和使用更高效的通信机制,显著提高了 Playbook 的执行效率。这对于大规模自动化任务尤为重要,可以大幅减少任务执行时间。

2. ansible主要配置文件

2.1 .ansible-navigator.yml

  1. 获取文件例子
ansible-navigator settings  --eei hub.lab.example.com/ee-supported-rhel8 -m stdout > 1.txt
  1. 配置 .ansible-navigator.yml(以下内容都来自上一条命令产生的1.txt中进行查询)
ansible-navigator:
  execution-environment:
    image: ee-supported-rhel8
    pull:
      policy: missing

2.2 ansible.cnf

  1. 配置参数获取方法
ansible-config init --disabled > ansible.cfg
  1. 常见配置及含义
    以下是 ansible.cnf 文件中常用配置项的表格格式:
参数含义例子
inventory指定默认的库存文件路径inventory = inventory
gathering指定默认是否收集服务器实时变量参数gathering=explicit
forks并行执行任务的最大主机数forks = 45
become是否使用提升权限(如 sudo)执行任务become = True
become_method提升权限的方法,常用的有 sudosubecome_method = sudo
become_user提升权限后使用的用户become_user = root
become_ask_pass是否在提升权限时提示输入密码become_ask_pass = False
roles_path定义 Ansible 查找角色的路径,多个路径用冒号分隔roles_path = ./roles:/usr/share/ansible/roles
ask_pass是否在连接时提示输入 SSH 密码ask_pass = False
ask_su_pass是否在以超级用户身份执行任务时提示输入密码ask_su_pass = False
ask_vault_pass是否在访问加密文件时提示输入 Vault 密码ask_vault_pass = False
host_key_checking是否检查远程主机的 SSH 主机密钥host_key_checking = True
timeoutSSH 连接的超时时间(秒)timeout = 10
ssh_args传递给 SSH 客户端的额外参数ssh_args = -o ControlMaster=auto -o ControlPersist=60s
pipelining是否启用 pipelining 以减少 SSH 连接次数pipelining = True
control_master是否启用 SSH 控制主连接control_master = auto
connection_timeout持久连接的超时时间(秒)connection_timeout = 30
keepalive持久连接的保持活动间隔(秒)keepalive = 30
library自定义模块的路径library = ./library
filter_plugins自定义过滤器插件的路径filter_plugins = ./filter_plugins
action_plugins自定义动作插件的路径action_plugins = ./action_plugins
log_pathAnsible 日志文件的路径log_path = /var/log/ansible.log
remote_user默认的远程连接用户remote_user = ansible
ansible_python_interpreter指定远程主机上使用的 Python 解释器路径ansible_python_interpreter = /usr/bin/python3

3. 常用模块

3.1 file模块

设置文件、符号链接或目录的属性。或者,删除文件、符号链接或目录。
以下是通过变量传递来创建目录

根据变量创建给定的目录

- name: Create a directory if it does not exist
  ansible.builtin.file:
    path: "{{ directory }}"
    state: directory
  when: directory is defined

3.2 copy模块

主要功能是将文件从本地或远程计算机复制到远程计算机上的某个位置。但考试常考的点是将某段内容填充到文件中
以下是通过tag来生成不同的文件

根据env文件创建文件及生成内容
play:

---
- name: Deploy content
  hosts: dev
  become: yes
  vars_files:
  - env.yml
  tasks:
    - block:
        - name: create dir
          file:
            dest: "{{ directory }}"
            state: directory
        - name: alpha
          ansible.builtin.copy:
            content: 'The sun rises in the east and sets in the west'
            dest: "{{ directory }}/{{ file }}"
          tags: [ never, alpha ]
        - name: beta
          ansible.builtin.copy:
            content: 'Which seasons do you like best?'
            dest: "{{ directory }}/{{ file }}"
          tags: [ never, beta ]
      when:
      - directory is defined
      - file is defined

env: 这部分的变量也可以通过-e进行传递

file: "exam.txt"
directory: "/opt"

3.3 user模块和lookup模块

user模块用做管理用户帐户和用户属性。
lookup模块主要用来生成随机明文密码,并将其存储在给定文件路径的文件中。

根据给定的用户清单文件,在web服务器组中所有服务器上按要求创建用户.

---
- name: Create user from user_list.yml file.
  become: true
  hosts: webserver
  vars_files:
  - from user_list.yml
  tasks:
  - name: Add the user from user_list.yml.
    ansible.builtin.user:
      name: "{{ item.name }}"
      comment: "{{ item.first | capitalize }} {{ item.middle | capitalize }} {{ item.last | capitalize }}"
      uid: "{{ item.uid }}"
      password: password: "{{ lookup('ansible.builtin.password', '{{ item.name }}_password length=14 chars=ascii_letters,digits,punctuation') }}"
    loop: "{{ users }}" 

3.4 yum和yum_repository模块

yum_repository模块用来配置yum仓库
yum模块用来安装或删除yum包

配置yum仓库并安装git包

- name: Add multiple repositories into the same file (1/2)
  ansible.builtin.yum_repository:
    name: BaseOS
    description: BaseOS YUM repo
    file: BaseOS
    baseurl: https://hub.lab.example.com/pub/epel/$releasever/$basearch/BaseOS
    gpgcheck: no
    enabled: yes


- name: Add multiple repositories into the same file (2/2)
  ansible.builtin.yum_repository:
    name: AppStream
    description: AppStream YUM repo
    file: AppStream
    baseurl: https://hub.lab.example.com/pub/epel/$releasever/$basearch/AppStream
    gpgcheck: no
    enabled: yes
    
- name: Install the latest version of Git
  ansible.builtin.yum:
    name: git
    state: latest

3.5 systemd和service模块

这2个模块除了模块名不一样以外基本一样
如果生成文件成功,那么重启httpd服务

tasks:
- name: create index html
  copy:
    dest: /var/www/html/index.html
    content: 'The sun is up,the sky is blue.Wake up old lazy man'
  notyfi: restart httpd
handlers:
- name: restart httpd
  ansible.builtin.systemd:
    state: restarted
    name: httpd

4. collection和role

4.1 Collections(集合)

4.1.1 定义

Ansible Collections 是一种打包和分发自动化内容(如模块、插件、角色等)的方式。它们允许开发者将相关的组件组织在一起,便于管理和分发。

4.1.2 特点

模块和插件:Collections 可以包含自定义模块和插件,扩展 Ansible 的功能。
角色:虽然 Collections 主要用于模块和插件,但也可以包含角色。
版本管理:每个 Collection 都有独立的版本号,便于管理和升级。
分发渠道:Collections 可以通过 Ansible Galaxy、私有仓库或其他方式进行分发。

4.1.3 使用场景

扩展功能:当你需要使用或分发自定义模块、插件时,Collections 是理想的选择。
组织复杂内容:对于包含多个模块和插件的复杂项目,Collections 可以提供更好的组织结构。

4.2 Roles(角色)

4.2.1 定义

Ansible Roles 是一种组织 Playbooks、任务、变量、文件和模板的方式,使得自动化内容更具可重用性和可维护性。角色通常用于定义特定功能或应用的配置和部署。

4.2.2 特点

结构化组织:角色有固定的目录结构,包括 tasks/、handlers/、templates/、files/、vars/ 等子目录。
可重用性:角色可以在不同的 Playbooks 和项目中重复使用。
易于共享:角色可以通过 Ansible Galaxy 分享和分发。
版本控制:角色可以有自己的版本号,便于管理和升级。

4.2.3 使用场景

标准化配置:当你需要标准化某些配置或部署流程时,角色非常有用。
简化 Playbooks:通过将重复的任务和配置抽象成角色,可以简化 Playbooks 的编写和维护。

4.3 collection和role综合示例

创建collection,包含以下文件:

  • main.yml
  • user.conf
    collection 名为rhel.user
    Role名为createuser

4.3.1 创建collection

在命令行中执行:

ansible-galaxy collection init rhel.user

4.3.2 创建role

在命令行中执行

cd rhel/user/
ansible-galaxy role init createuser --init-path roles 
cp ../../main.yml roles/createuser/tasks/main.yml
cp ../../user.conf roles/createuser/files/
mkdir meta
echo 'requires_ansible: ">=2.90"' > meta/runtime.yml
ansible-galaxy collection build

执行以上命令后会生成文件: rhel-user-1.0.0.tar.gz

5. ansible-builder构建执行环境

ansible-builder 是一个用于构建 Ansible 运行环境的工具,它可以帮助你创建一个包含所有必要依赖项的 Podman 镜像。使用 ansible-builder create 命令生成的镜像主要用于以下几个方面:

  1. 隔离和一致性
    隔离环境:通过创建一个独立的 Podman 镜像,你可以确保 Ansible 运行在一个隔离的环境中,不受宿主机或其他环境的影响。
    一致性:镜像可以确保在不同的开发和生产环境中,Ansible 的运行环境是一致的,从而减少“在我机器上可以运行”的问题。
  2. 可移植性
    跨平台:生成的 Podman 镜像可以在任何支持 Podman 的平台上运行,无论是本地开发环境、CI/CD 管道还是云服务提供商。
    简化部署:通过使用 Podman 镜像,你可以简化 Ansible 运行环境的部署过程,无需在目标机器上手动安装和配置所有依赖项。
  3. 依赖管理
    自动处理依赖:ansible-builder 会自动处理 Ansible 及其插件的依赖关系,确保所有必要的库和工具都包含在镜像中。
    版本控制:你可以通过 builder.yml 文件明确指定所需的 Ansible 版本和插件版本,从而实现精确的版本控制。
  4. 安全性
    最小化攻击面:通过仅包含必要的组件,可以减少镜像的攻击面,提高安全性。
    审计和合规性:Podman 镜像可以更容易地进行审计和合规性检查,确保符合安全标准。
  5. 性能优化
    缓存和优化:Podman 镜像可以利用缓存机制,加快构建和部署速度。此外,通过优化镜像大小和层数,可以提高运行时的性能。

5.1 示例

编辑execution-environment.yml

---
version: v1.0
build_arg_defaults:
  EE_BASE_IMAGE: hub.lab.example.com/ee-29-rhel8:latest
  EE_BUILDER_IMAGE: hub.lab.example.com/ansible-builder-rhel8:latest
dependencies:
  system: python.yml

编辑python.yml

python3-ldap: [platform:rpm]
python36: [platform:rpm]

生成镜像并上传至hub

ansible-builder create
ansible-builder build -t hub.lab.example.com/ee-ansible-image:1.0
podman push hub.lab.example.com/ee-ansible-image:1.0

总结
ansible-builder create 命令生成的 Docker 镜像主要用于提供一个隔离、一致、可移植且安全的 Ansible 运行环境。通过这种方式,你可以简化环境配置和依赖管理,提高开发和部署的效率。

至此ex374大部分考试内容已经包含在内了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/968670.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Oracle篇】浅谈执行计划中的多表连接(含内连接、外连接、半连接、反连接、笛卡尔连接五种连接方式和嵌套、哈希、排序合并三种连接算法)

💫《博主介绍》:✨又是一天没白过,我是奈斯,从事IT领域✨ 💫《擅长领域》:✌️擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控;并对SQLserver、NoSQL(…

TCP 端口号为何位于首部前四个字节?协议设计的智慧与启示

知乎的一个问题很有意思:“为什么在TCP首部中要把TCP的端口号放入最开始的四个字节?” 这种问题很适合我这种搞历史的人,大年初一我给出了一个简短的解释,但仔细探究这个问题,我们将会获得 TCP/IP 被定义的过程。 文…

oracle表分区--范围分区

文章目录 oracle表分区分区的原因分区的优势oracle表分区的作用oracle表分区类型一、范围分区二、 创建分区表和使用:1、按照数值范围划分2、按照时间范围3、MAXVALUE2. 向现有表添加新的分区3、 分区维护和重新组织(合并/删除) oracle表分区…

蓝桥杯(B组)-每日一题(求最大公约数最小公倍数)

题目&#xff1a; 代码展现&#xff1a; #include<iostream> using namespace std; int main() {int m,n,x,y;cin>>m>>n;//输入两个整数int b;bm%n;//取余数xm;//赋值yn;while(b)//当余数不为0的时候{xy;//辗转相除求最小公约数yb;bx%y;}cout<<y<&…

基于STM32的学习环境控制系统设计

&#x1f91e;&#x1f91e;大家好&#xff0c;这里是5132单片机毕设设计项目分享&#xff0c;今天给大家分享的是学习环境控制。 设备的详细功能见网盘中的文章《21、基于STM32的学习环境控制系统设计》&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1uWSZX2zbZwy9sY…

WPS接入DeepSeek模型

1.wps 下载安装 WPS-支持多人在线协作编辑Word、Excel和PPT文档_WPS官方网站 &#xff08;最好是安装最新的wps&#xff09; 2.offieceAi工具下载安装 软件下载 | OfficeAI助手 下载后安装下载下来的两个工具。安装路径可以自行修改 3.打开WPS,点击文件-》 选项-》信任中心 勾…

4. React 中的 CSS

用例中的干净的脚手架的创建可以参考另一篇文章&#xff1a;3.React 组件化开发React官方并没有给出在React中统一的样式风格&#xff1a; 由此&#xff0c;从普通的css&#xff0c;到css modules&#xff0c;再到css in js&#xff0c;有几十种不同的解决方案&#xff0c;上百…

Unity进阶教程AOI算法原理详解

最新课程《全栈双客户端(Unity/Cocos) TurnKey方案》更新了AOI专题&#xff0c;今天分享一下AOI算法的实现原理。 AOI的功能和作用 在MMORPG网路游戏当中&#xff0c;单服同时在线一般都会有几千人。当有个玩家执行一个操作&#xff0c;理想情况下要把玩家的操作广播同步给单…

w~大模型~合集30

我自己的原文哦~ https://blog.51cto.com/whaosoft/13284996 #VideoMamba 视频理解因大量时空冗余和复杂时空依赖&#xff0c;同时克服两个问题难度巨大&#xff0c;CNN 和 Transformer 及 Uniformer 都难以胜任&#xff0c;Mamba 是个好思路&#xff0c;让我们看看本文是…

【ThreeJS Basics 1-3】Hello ThreeJS,实现第一个场景

文章目录 环境创建一个项目安装依赖基础 Web 页面概念解释编写代码运行项目 环境 我的环境是 node version 22 创建一个项目 首先&#xff0c;新建一个空的文件夹&#xff0c;然后 npm init -y , 此时会快速生成好默认的 package.json 安装依赖 在新建的项目下用 npm 安装依…

Python----PyQt开发(PyQt基础,环境搭建,Pycharm中PyQttools工具配置,第一个PyQt程序)

一、QT与PyQT的概念和特点 1.1、QT QT是一个1991年由The Qt Company开发的跨平台C图形用户界面应用程序开发 框架&#xff0c;可构建高性能的桌面、移动及Web应用程序。也可用于开发非GUI程序&#xff0c;比如 控制台工具和服务器。Qt是面向对象的框架&#xff0c;使用特殊的代…

PostgreSQL 开发利器:Navicat 核心功能与资源攻略

近几年&#xff0c;&#x1f418; PostgreSQL 在全球数据库排名中表现优异。在 2025 年 2 月 DB-Engines 排名中 (如图)&#xff0c;PostgreSQL 稳居第四名&#xff0c;并逐渐逼近第三名的 Microsoft SQL Server&#xff0c;其评分和受欢迎度持续增长&#xff0c;成为开源数据库…

大模型数据集全面整理:444个数据集下载地址

本文针对Datasets for Large Language Models: A Comprehensive Survey 中的 444 个数据集&#xff08;涵盖8种语言类别和32个领域&#xff09;进行完整下载地址整理收集。 2024-02-28&#xff0c;由杨刘、曹家欢、刘崇宇、丁凯、金连文等作者编写&#xff0c;深入探讨了大型语…

【AI大模型】Ollama部署本地大模型DeepSeek-R1,交互界面Open-WebUI,RagFlow构建私有知识库

文章目录 DeepSeek介绍公司背景核心技术产品与服务应用场景优势与特点访问与体验各个DeepSeek-R系列模型的硬件需求和适用场景 Ollama主要特点优势应用场景安装和使用配置环境变量总结 安装open-webui下载和安装docker desktop配置镜像源安装open-webui运行和使用 RagFlow介绍主…

修改docker内容器中的某配置文件的命令

先找到配置文件config.php find / -name "config.php" 2>/dev/null 然后用vi编辑器修改配置文件 vi /var/www/config.php 最后就是vi的基本操作&#xff0c;根据具体需求使用&#xff1a; vi 有两种主要模式&#xff1a; 命令模式&#xff1a;进入 vi 后的默认…

23.[前端开发]Day23-移动端适配方案-考拉海购移动端项目

01-05 移动端适配rem方案 适配方案 – rem动态html的font-size rem的font-size尺寸 方式一&#xff1a;动态font-size-媒体查询 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Com…

数据中心网络监控

数据中心是全球协作的特定设备网络&#xff0c;用来在internet网络基础设施上传递、加速、展示、计算、存储数据信息。 对于任何利用IT基础设施的企业来说&#xff0c;数据中心都是运营的核心&#xff0c;它本质上为整个业务网络托管业务应用程序和存储空间。数据中心可以是任…

网络初识-

网络的相关概念 一、局域网和广域网 将各种计算机、外部设备等相互连接起来&#xff0c;实现在这个范围内数据通信和资源共享的计算机网络。它的覆盖范围通常在几百米到几公里之内。例如&#xff0c;一个小型企业的办公室&#xff0c;通过交换机将多台电脑连接在一起&#xf…

如何使用DHTMLX Scheduler的拖放功能,在 JS 日程安排日历中创建一组相同的事件

DHTMLX Scheduler 是一个全面的调度解决方案&#xff0c;涵盖了与规划事件相关的广泛需求。假设您在我们的 Scheduler 文档中找不到任何功能&#xff0c;并且希望在我们的 Scheduler 文档中看到您的项目。在这种情况下&#xff0c;很可能可以使用自定义解决方案来实现此类功能。…

haproxy+nginx负载均衡实验

准备三台虚拟机&#xff1a; HAProxy 服务器192.168.65.131Web 服务器 1192.168.65.132Web 服务器 2192.168.65.133 在 HAProxy 服务器&#xff08;192.168.65.131&#xff09;上操作&#xff1a; 安装 HAProxy&#xff1a; sudo yum install -y haproxy编辑 HAProxy 配置…