RHCE学习笔记(RHEL8) - RH294

Chapter Ⅰ 介绍Ansible

在这里插入图片描述
ansible
ansible是一款开源自动化平台
ansible围绕一种无代理架构构建,在控制节点上安装ansible,且客户端不需要任何特殊的代理软件;ansible使用SSH等标准协议连接受管主机,并在受管主机上运行代码或命令来确保他们处于ansible指定的状态

Ansible帮助:
1、官方网站:https://docs.ansible.com/ansible/2.8/modules/modules_by_category.html
2、ansible-doc 模块名称
在这里插入图片描述

Chapter Ⅱ 部署Ansible

类别文件说明
配置文件ansible.cfg通过哪个账号、登录方式(用户名密码/密钥)、提权
管理清单inventory管理设备的清单列表(支持分组)
运行脚本playbookansible的语法、具体执行任务脚本

1、配置文件
三种配置文件

配置文件所在路径优先级
ansible.cfg当前目录
~/.ansible.cfg家目录次高
/etc/ansible/ansible.cfg全局配置目录
# some basic default values...
[defaults]
# 指定清单文件
inventory      = /home/student/ansible/inventory
# 登录是否需要输入密码,因为已经在sshd中设置密钥登录,所以此处可以设置为False
ask_pass      = False
# 指定登录到被管主机的账号
remote_user = devops[privilege_escalation]
# 是否可以切换高权限账号
become=True
# 切换的方式采用sudo
become_method=sudo
# 切换到什么账号
become_user=root
# 切换时是否需要密码
become_ask_pass=False

注:提权sudo等相关配置在/etc/sudoers中配置

2、管理清单
清单定义Ansible将要管理的一批主机。这些主机也可以分配到组中,以进行集中管理。组可以包含子组,主机也可以是多个组的成员。清单还可以设置应用到它所定义的主机和组的变量。
在这里插入图片描述
验证inventory
ansible 主机名或组名 --list-hosts,或者直接用all也可以
在这里插入图片描述
3、运行临时命令
Ansible有两种方式运行:临时运行(单词命令行)和脚本运行(playbook)

ansible host-pattern -m moudule [-a 'module arguments'] [-i inventory]

Ansible模块

模块类别模块
文件模块▪ copy:将本地文件复制到受管主机
▪ file:设置文件的权限和其他属性,如创建、删除等
▪ lineinfile:确保特定行是否在文件中
▪ synchronize:使用rsync同步内容
软件包模块▪ package:使用操作系统本机的自动监测软件包管理器管理软件包
▪ yum:使用YUM软件包管理器管理软件包
▪ apt:使用APT软件包管理器管理软件包
▪ dnf:使用DNF软件包管理器管理软件包▪ gem:管理Ruby gem
▪ pip:从PyPI管理Python软件包
系统模块▪ firewalld:使用firewalld管理任意端口和服务
▪ reboot:重启计算机
▪ service:管理服务
▪ user:添加、删除和管理用户账户
Net Tools模块▪ get_url:通过HTTP、HTTPS或FTP下载文件
▪ nmcli:管理网络
▪ uri:与web服务交互

在受管主机上运行任意命令
command模块允许管理员在受管主机的命令行中运行任意命令,要运行的命令通过-a选项指定为该模块的参数
在这里插入图片描述

Chapter Ⅲ 实施PLAYBOOK

1、规范
Playbook是以YAML格式编写的文本文件,通常使用扩展名yml或yaml保存。Playbook使用空格字符缩进来表示其数据结构。
- 处于层次结构中同一级别的数据元素必须具有相同的缩进量
- 如果项目属于其他项目的子项,其缩进量必须大于父项

YAML语法规则:
- 大小写敏感
- 使用缩进量表示层级关系
- 缩进时不允许使用tab键,只可以使用空格
- 缩进时空格数量不重要,只要相同元素左侧对齐,表示这些元素属于同一个层级
- #表示当行注释
- 字符串可以不用引号标注(但建议加上引号,便于理解和阅读)

Playbook开头的一行由三个破折号(—)组成,标记文档开始;末尾可能使用三个圆点(…),实际中通常会省略;首末标记位之间,会以play列表的形式定义playbook,YAML列表中的项目以一个破折号加空格开头。

---
- name: "install and start http"hosts: intranetwebvars:tasks:- name: "install http"yum:name: httpdstate: present- name: "start http"service:name: httpdstate: startedenabled: true

在这里插入图片描述
2、语法检查
ansible-playbook --syntax-check test.yaml

3、显示详细信息verbose
ansible-playbook -vvv test.yaml

选项描述
-v显示任务结果
-vv任务结果和任务配置都会显示
-vvv包含关于与受管主机连接的信息
-vvvv增加了连接插件相关的额外详细程度选项,包括受管主机上用于执行脚本的用户,以及所执行的脚本

4、模拟仿真(空运行)
ansible-playbook -C test.yaml
返回结果,但不会真的到受管主机上执行

Ansible模块维护
用ansible-doc查询模块时,需要注意维护属性,有些非商用的模块有可能后期会下线,尽量使用stableinterface和core的模块
1、status(开发状态)
- stableinterface:模块的关键字稳定,将尽力确保不删除关键字或更改其含义
- preview:模块处于技术预览阶段,可能不稳定,其关键字可能会更改,或者可能需要本身受到不兼容更改的库或web服务
- deprecated:模块已被弃用,未来某一发行版中将不再提供
- removed:模块已从发行版中移除,但因文档需要存根,以帮助之前的用户迁移到新的模块
2、supported_by(维护人)
- core:由上游“核心”Ansible开发人员维护,始终随Ansible提供
- curated:模块由社区中的合作伙伴或公司提交并维护
community:模块不受到核心上游开发人员、合作伙伴或公司的支持,完全由一般开源社区维护
在这里插入图片描述

Chapter Ⅳ 管理变量和事实

https://docs.ansible.com/ansible/2.8/user_guide/playbooks_variables.html

命名变量:变量的名称必须以字母开头,并且只能含有字母、数字和下划线
1、全局范围变量:从命令行或Ansible配置设置的变量
2、Play范围变量:在play和相关结构中设置的变量
3、主机范围变量:由清单、事实收集或注册的任务,在主机组和个别主机上设置的变量
优先级:1<2<3,不同级别定义相同变量,采用优先级最高的变量,即低优先级会被高优先级覆盖
注:清单中的变量优先级小于playbook中的变量,一般在其中定义与playbook相同的变量,作用是防止playbook未定义变量导致执行错误

变量的使用

  • 双花括号
  • 以变量开始的时候,必须加"“,即”{{ var }}"(建议都加)
  • 在when语句中调用变量不能加{{}}
    在这里插入图片描述
    在这里插入图片描述

变量数组
如下代码可以转换为名为users的数组

user1_first_name: Bob
user1_last_name: Jones
user1_home_dir: /users/bjones
user2_first_name: Anne
user2_last_name: Cook
user2_home_dir: /users/acook
users:bjones:first_name: Boblast_name: Joneshome_dir: /users/bjonesacook:first_name: Annelast_name: Cookhome_dir: /users/acook

可以用如下两种形式访问数据:

# Returns 'Bob'
users.bjones.first_name# Returns '/users/acook'
users.acook.home_dir# Returns 'Bob'
users['bjones']['first_name']# Returns '/users/acook'
users['accok']['home_dir']

模块debug
在调试的时候使用,相当于打印
var:取变量值打印

使用目录填充主机和组变量
根据被管主机或组进行分别定义的变量
目录group_hosts、hosts_group的名字必须这么写,不能改
文件名必须和Inventory中定义的主机相同
实验:servera归属groupA,serverB归属groupB,其中groupA安装ntpd、groupB安装httpd、servera添加用户devops、serverb添加用户student
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

---
- name:hosts: groupA, groupBvars:ignore_errors: yestasks:- name: "group: install software"yum:name: "{{ package }}"state: present- name: "hosts: add user"user:name: "{{ user_name }}"

在这里插入图片描述

注册变量register
register变量,可以临时保存本模块执行后的结果,一般用在判断关系中,决定后续语句如何执行
示例:在servera上安装httpd,通过结果判断是否已经预先安装,第一个显示全部结果信息,第二个只显示msg字段信息

---
- name: "test httpd is installed"hosts: servera.lab.example.comvars:tasks:- name: "install httpd"yum:name: httpdstate: presentregister: result_install- name: "display result"debug:var: result_install- name: "display simple result"debug:var: result_install['msg']

在这里插入图片描述
facts变量
Ansible执行YAML前,会去被管主机上采集信息,并通过json格式存储在内存中。(Gathering Facts)
目的:做环境状态的判断
可以收集IP地址、硬件信息(CPU、内存

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[每周一更]-(第75期):Go相关粗浅的防破解方案

Go作为编译语言&#xff0c;天然存在跨平台的属性&#xff0c;我们在编译完成后&#xff0c;可以再不暴露源代码的情况下&#xff0c;运行在对应的平台中&#xff0c;但是 还是架不住有逆向工程师的反编译、反汇编的情形&#xff1b;&#xff08;当然我们写的都不希望被别人偷了…

oops-framework框架 之 创建项目(二)

引擎&#xff1a; CocosCreator 3.8.0 环境&#xff1a; Mac Gitee: oops-game-kit 构建 本篇博客将使用oops-game-kit 构建一个新的开发项目&#xff0c; 关于 oops-framework 框架的了解&#xff0c;可参考上篇博客&#xff1a; oops-framework框架 之 初始了解(一) 大概…

『 Linux 』环境变量

文章目录 &#x1f680;什么是环境变量&#x1f680;&#x1f680;查看环境变量&#x1f680;&#x1f579;️和环境变量有关的命令&#x1f579;️ &#x1f680;PATH环境变量&#x1f680;&#x1f579;️设置PATH环境变量&#x1f579;️ &#x1f680;HOME环境变量&#x1…

redis主从复制模式和哨兵机制

目录 第一章、主从复制模式1.1&#xff09;Redis 主从复制模式介绍1.2&#xff09;Redis 主从复制实现、 第二章、哨兵机制2.1&#xff09;容灾处理之哨兵2.2&#xff09;Sentinel 配置 第一章、主从复制模式 1.1&#xff09;Redis 主从复制模式介绍 ①单点故障&#xff1a;数…

ASP.NET Core 使用IIS调试出现505.24错误

最近一直再学习asp.net 相关的东西&#xff0c;主要是为前端app提供一个webapi接口。在使用iis调试程序时出现HTTP Error 500.24 - Internal Server Error错误&#xff0c;搞了好久才最终解决。 1.在项目中增加web.config配置文件 2.将配置文件改为如下内容 <?xml version…

【蓝桥杯软件赛 零基础备赛20周】第6周——栈

文章目录 1. 基本数据结构概述1.1 数据结构和算法的关系1.2 线性数据结构概述1.3 二叉树简介 2. 栈2.1 手写栈2.2 CSTL栈2.3 Java 栈2.4 Python栈 3 习题 1. 基本数据结构概述 很多计算机教材提到&#xff1a;程序 数据结构 算法。 “以数据结构为弓&#xff0c;以算法为箭”…

Vue3 的 inject 和 provide (附源码)

一&#xff1a;前言 在前端项目中牵扯的最多的莫过于组件之间的传值了&#xff0c;除了最最常用的 props 和 emit&#xff0c;其实在 Vue 中还额外提供了另外几种方法。今天分享一种组件之间通信的方法&#xff1a;provide 和 inject。 二&#xff1a;使用 1、目录结构 以下是…

网页开发 JS基础

目录 JS概述 基本语法 数据类型内置方法 DOM对象 查找标签 绑定事件 操作标签 jQuery 查找标签 绑定事件 操作标签 Ajax请求 数据接口 前后端分离 ajax的使用 JS概述 一门弱类型的编程语言,属于基于对象和基于原型的脚本语言. 1 直接编写<script>console…

在 AlmaLinux9 上安装Oracle Database 23c

在 AlmaLinux9 上安装Oracle Database 23c 0. 下载 Oracle Database 23c 安装文件1. 安装 Oracle Database 23c3. 连接 Oracle Database 23c4. &#xff08;谨慎&#xff09;卸载 Oracle Database 23c 0. 下载 Oracle Database 23c 安装文件 版权问题&#xff0c;下载地址请等待…

怎么让百度快速收录,百度SEO收录工具

百度收录对于一个网站的重要性不言而喻。拥有良好的百度收录意味着网站能够更好地被搜索引擎收录&#xff0c;为用户提供更精准的搜索结果。而怎样实现百度快速收录成为了许多网站管理员关注的焦点。 百度收录的重要性 百度是国内最大的搜索引擎之一&#xff0c;拥有数以亿计的…

卷积神经网络(VGG-16)猫狗识别

文章目录 一、前言二、前期工作1. 设置GPU&#xff08;如果使用的是CPU可以忽略这步&#xff09;2. 导入数据3. 查看数据 二、数据预处理1. 加载数据2. 再次检查数据3. 配置数据集4. 可视化数据 三、构建VG-16网络四、编译五、训练模型六、模型评估七、保存and加载模型八、预测…

[github全教程]github版本控制最全教学------- 大厂找工作面试必备!

作者&#xff1a;20岁爱吃必胜客&#xff08;坤制作人&#xff09;&#xff0c;近十年开发经验, 跨域学习者&#xff0c;目前于新西兰奥克兰大学攻读IT硕士学位。荣誉&#xff1a;阿里云博客专家认证、腾讯开发者社区优质创作者&#xff0c;在CTF省赛校赛多次取得好成绩。跨领域…