【RHCE】ansible的简单配置

news2025/7/11 3:42:52

目录

使用静态清单文件指定受管主机

定义主机清单

定义方式

 使用静态主机清单指定受管主机(默认)

 验证清单

第一种方式

第二种方式(图表形式显示)

选择主机和组:

1>匹配所有主机

2>匹配指定的主机或者主机组

3>通配符匹配

4>通配符组合匹配

5>正则表达式匹配

管理ansible的配置文件

配置ansible

根据优先级选择执行ansible配置文件

管理配置文件中的设置

ad-hoc与模块帮助查询

ansible的基本用法

总结

Linux返回结果的颜色:


使用静态清单文件指定受管主机

        构建ansible主机清单

定义主机清单

        清单中定义ansible将要管理的一批主机,这些主机也可以分配到组中,以进行集中管理。组中也可以包含子组,一台主机也可以是多个组中的成员。清单还可以设置应用到它所定义的主机和组的变量。

定义方式

        可以通过两种方式定义主机清单。静态主机清单可以通过文本文件定义。动态主机清单可以根据需要使用外部信息提供程序通过脚本或其他程序生成。

 使用静态主机清单指定受管主机(默认)

        静态主机清单文件是指定的ansible目标受管主机的文本文件。文件编辑格式有多种格式INI和YAML格式。INI格式较为常见建议使用INI格式编辑。

 【vim /root/ansible/inventory👆】

定义注意事项:默认安装ansible匹配的主机清单文件是/etc/ansible/hosts

(1) 在主机清单文件中每一行一个主机ip(主机名) servera.example.com serverb.example.com

(2) 主机组中定义受管主机,用[ ]扩起受管主机组的名称,然后每一行添加一个受管主机名称(ip) [usa] serverb.example.com serverc.example.com [canada] w1.example.com w2.example.com

(3) 定义嵌套组(多个主机组所构成新的主机组)嵌套主机组名称定义前面写组名后面:children来实现 [america:children] usa canada

(4) 通过范围简化主机规格 格式[START:END] eg:192.168.[4:7].[10:20] / [a:c].example.com

 验证清单

第一种方式

        #ansible 主机组or主机名 --list-hosts

======================注意===============================

        all 主机组含有清单中明确列出的每一个主机

        ungrouped 主机组含有清单中明确列出、但不属于任何其他组的每一个主机

=============================================================

第二种方式(图表形式显示)

        查看主机组

        Ansible-inventory  --graph 

选择主机和组:

1>匹配所有主机

        all 或者*

2>匹配指定的主机或者主机组

        (1)匹配单个组

        (2)匹配单个主机

        (3)匹配多个主机

        (4)匹配多个组

         (5)匹配不属于任何组的主机

3>通配符匹配

        *

        ansible server* --list-hosts

4>通配符组合匹配

        [root@servera ~]# ansible 'web:ftp' --list-hosts

         hosts (2):

         servera.openlab.com

         serverb.openlab.com

        [root@servera ~]# ansible 'web:mail' --list-hosts

         hosts (2):

         servera.openlab.com

         serverb.openlab.com

        [root@servera ~]# ansible 'web:&mail' --list-hosts

         hosts (1):

         servera.openlab.com

        [root@servera ~]# ansible 'web:!mail' --list-hosts

        [WARNING]: No hosts matched, nothing to do

         hosts (0):

        [root@servera ~]# ansible 'mail:!web' --list-hosts

         hosts (1):

         serverb.openlab.com

5>正则表达式匹配

         ansible "~(web|db).*.example.com" -m ping

        注:

         .任意单个字符

        "~"开始表示正则匹配

        * 匹配前面的子表达式零次或多次

        \转义

总结

        主机清单格式(交、并、补)

        \>all 所有主机

        \>通配符

         ansible "*" -m ping

         ansible 192.168.60.* -m ping

         ansible "web*" -m ping

        \>或  :   (并)属于A或属于B的元素的集合A并B AUB  ,也表示或者的意思

         ansible "websrv:appsrv" -m ping

        \>与  :& (交集)属于A且属于B

         ansible 'websrv:&appsrv' -m ping

        \>非  :!  (补集)属于全集U不属于集合A

         ansible 'websrv:!dbsrv' -m ping  (在websrv主但不在dbsrv组)

        综合逻辑

         ansible 'websrv:dbsrv:&appsrv:!ftsrv' -m ping

        正则表达式

         ansible "~(web|db).*\.example\.com" -m ping

注:

         .任意单个字符 

         "~"开始表示正则匹配

         * 匹配前面的子表达式零次或多次

         \转义

管理ansible的配置文件

配置ansible

         通过修改ansible配置文件中的设置来定义ansible安装行为。通过控制节点上多个可能位置之一选择相应位置的配置文件。

根据优先级选择执行ansible配置文件

         执行ansible命令根据所在目录匹配相关ansible配置文件,实践中一般使用ansible命令的目录中创建ansible.cfg文件,此目录中也将包含任何你的ansible项目使用的文件,有清单或者主机清单。

        ANSIBLE_CONFIG(ansible环境变量中指向的配置文件)---->./ansible.cfg ---->~/.ansible.cfg ----> /etc/ansible/ansible.conf

        #ansible --version         查看当前使用的是哪个ansible.cfg配置文件

管理配置文件中的设置

       

        主配置文件 /etc/ansible/ansible.cfg

        ansible中配置文件是有优先级的:

        如果你在某个目录中执行ansible的命令,需要加载配置文件ansible.cfg

        寻找ansible.cfg的顺序

        首先去查看环境变量:ANSIBLE_CONFIG如果有这个环境变量那么就去加载这个环境变量对应ansible.cfg配置

        之后:如果没有这个环境变量,会在当前目录下查找ansible.cfg如果有的话就去加载

        再后:如果当前目录下也没有,去加载用户家目录~/.ansible.cfg 如果有去加载

        最后,如果没有,去加载默认的ansible配置文件:/etc/ansible/ansible.cfg

【ping一下看看】

案例一:ansible使用ssh连接受管主机,一般不建议用管理用户,要求通过普通用户student进行链接

        [defaults]

        inventory = /etc/ansible/hosts

        remote_user =  student

        ask_pass  = True

案例二: 关闭主机秘钥验证

        在管控主机中通过指定用户发起操作指令,在受管主机中通过ssh远程连接方式以student用户身份执行,并验证密码;如果ask_pass为false 则可以通过-k  或者--ask-pass来提示接收密码进行验证。

        host_key_checking = False   关闭主机秘钥验证:

        或者直接在控制主机的操作系统中设置环境变量, 如下所示:

        $export ANSIBLE_HOST_KEY_CHECKING=False

案例三:主机免密登陆,关闭秘钥

        如果不需要密码验证(忽略密码验证)则需要配置秘钥验证

        ssh-keygen  -t rsa -f ~/.ssh/id_rsa -P '' -q

        for  host   in server{a,b};do ssh-copy-id -i  $host ;done

案例四:远程用户sudo提权

        如果在受管主机中需要通过管理员身份运行命令则配置sudo

        vim /etc/sudoers

        student    ALL=(ALL)   NOPASSWD: ALL

        注:在受管主机中进行配置,建议管理sudo用户提权密码验证,如果没有关闭则ask_sudo_pass = True 来开启执行命令sudo提权密码验证;但是ask_sudo_pass = False那么可以空过-K    --ask-become-pass来开启执行命令sudo提权密码验证

案例五:特权升级。

        在受管主机中通过sudo提权可在ansible配置中进行优化,开启远程用户在受管主机中执行特权升级。控制主机执行特权命令不需要指定sudo命令

        [student@localhost ~]$  ansible web -a 'sudo useradd haha'

        [WARNING]: Consider using 'become', 'become_method', and 'become_user' rather

        than running sudo

        servera | CHANGED | rc=0 >>

        serverb | CHANGED | rc=0 >>

        Vim /etc/ansible/ansible.cfg

        [privilege_escalation]

        become=True

        become_method=sudo

        become_user=root

        become_ask_pass=False

        [student@localhost ~]$ ansible web -a 'useradd xixi'

        servera | CHANGED | rc=0 >>

        serverb | CHANGED | rc=0 >>

 ad-hoc与模块帮助查询

ansible的基本用法

        ansible是指令核心部分,其主要用于执行ad-hoc命令,即单条命令。默认后面需要跟主机和选项部分,默认不指定模块时,使用的是command模块。

        ansible运行临时命令语法

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

ansible-doc 查找关于本地系统上安装的模块信息==显示模块帮助(ansible里man命令)

-l,--lsit 查看控制节点上可用的模块列表以及其功能的概要;列出可用模块

-s,--snippet 列岀某个模块支持的动作 显示模块的playbook

ansible-doc [module name] 查看指定模块的概要、选项、详细信息、以及基本用法

模块文档文档网站:http://docs.ansible.com

        注意:帮助显示中模块维护标记

         由于有些模块可能处于不同的开发阶段查看模块开发状态,是在ansible-doc输出末尾的METEDATA部分中指明 

        stableinterface: 模块的关键字稳定,将尽力确保不删除关键字或更改其含义 

        preview:模块处于阶段预览,可能不稳定 

        deprecated: 模块弃用 

        removed:模块已从发行版中移除 

总结

1.ansible****运行临时命令**

          语法:ansible 主机或组 -m 模块名 -a '模块参数' -i 清单文件 

2.如何获取有哪些模块

          ansible-doc -l 

3.模块帮助

        3.1参数帮助

                ansible-doc -s   modname    

                ansible-doc -s   user 

        3.2模块帮助示例:

                ansible-doc user 

Linux返回结果的颜色:

        绿色:执行成功并且不需要做出任何改变  # 绿色: 使用ping模块返回的结果就是绿色: 代表执行成功,且并没有做出任何改变

        黄色:执行成功并且对目标主机做出变更  # 黄色:使用shell模块执行useradd时候:在被管理主机node1上创建了一个用户,所以做出了更改,因此它显示成黄色

        红色:执行失败 # 执行失败: 第一个连接不上,第二个执行过程中遇到问题

        蓝色:显示详细过程

        紫色:显示警告 # warning警告

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二叉树与树、森林之间的转换

关于树的概念 树可以称为特殊的森林 , 其中二叉树是树中一些节点度数最大为2 ,并且分左右孩子的树 ● 二叉树很重要 • 结构简单 • 存储效率高 • 运算算法相对简单 • 任何森林、树都可以转换成二叉树 ● 讨论 • 二叉树 度为2 的树 ? 答: 树的度就是…

官方盘点 .NET 7 新功能

.NET 7 为C# 11/F# 7、.NET MAUI、ASP.NET Core/Blazor、Web API、WinForms、WPF 等应用程序带来了更高的性能和新功能。使用 .NET 7,您还可以轻松地将 .NET 7 项目容器化,在 GitHub 操作中设置 CI/CD 工作流,并实现云原生可观察性。欢迎下载…

java之Fork/Join框架

文章目录前言工作窃取算法Fork/Join框架的设计Fork/Join框架的异常处理Fork/Join框架的实现原理总结前言 Fork/Join框架是java7提供的一个用于执行并行任务的框架,是一个把大部分任务分割成若干个小任务,最终汇总每个小任务结果后,得到大任务…

4进程地址空间

文章目录前言1. 概念引入2. CPU和物理内存关系3.何为进程地址空间4. 为什么存在地址空间?前言 本节主要是讲解进程地址空间,区分和物理内存地址空间的差别,并且向读者解释四个疑问: 怎样验证地址空间的排布; 进程地址空间是什么; 进程地址空间和物理内存之间的关系; 为什么要…

[附源码]java毕业设计基于web的球类体育馆预定系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

数据链路层(2层 Data Link Layer)

1、数据链路层属于2层 2、传输单元:帧 帧格式: 802.3 有线网卡 802.11 无线网卡,无线路由器都支持802.11 802开头的都是国际标准,是由IEEE国际学术组织制定的标准 3、帧结构的构成:MAC子层(帧头&…

MySQL表的增删改查(进阶)

目录1.数据库约束1.1约束类型1.2 NULL约束1.3 UNIQUE:唯一约束1.4 PRIMARY KEY: 主键约束1.5 DEFAULT:默认值约束1.6 FOREIGN KEY:外键约束2. 表的设计3. 新增4. 查询4.1 聚合查询4.1.2 GROUP BY子句4.2 联合查询4.2.1内连接4.2.2外连接4.2.3…

2022 第十四届蓝桥杯模拟赛第一期(题解与标程)

第十四届蓝桥杯模拟赛第一期1. 二进制位数问题描述答案提交参考答案2. 晨跑问题描述答案提交参考答案3. 调和级数问题描述答案提交参考答案程序验证4. 山谷问题描述答案提交参考答案5. 最小矩阵问题描述答案提交参考答案6. 核酸日期问题描述输入格式输出格式样例输入样例输出评…

项目风险管理的5大关键点,你做了几点?

1、全方位科学分析项目风险 为了提高项目抗风险能力,我们需要对项目风险进行科学全面的分析。一般我们从3个维度对风险进行科学分析:影响的严重性、发生的可能性、产生的影响性。 根据风险或机会对项目的影响程度,一般我们会从三个维度将其划…

javascript大作业《web课程设计》用html做一个期末作业网站,梅西足球体育网页,css

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

STING 与 cGAS的结合导致TBK1 激酶募集和活化

来自细菌或病毒的核酸在受感染的细胞中会产生强效的免疫反应,而病原体衍生核酸的检测是宿主感知感染并启动保护性免疫反应的核心策略。cGAS (Cyclic GMP-AMP synthase) 是一种双链 DNA 传感器,可催化 cGAMP(cyclic GMP-AMP)的合成…

二级导航栏

简介&#xff1a;本文通过HTML与CSS相集合的方式&#xff0c;来实现二级导航菜单。 HTML构建骨架 <body><ul class"nav1"><li>水果<ul class"nav2"><li>苹果</li><li>香梨</li><li>火龙果</li…

前端CSS射门动画-为梅西最后一届世界杯加油

☆ 距离2022卡塔尔世界杯只有6天时间了&#xff0c;众多球星我喜欢梅西和奥乔亚。 ☆ 我们不能到现场去&#xff0c;只能手中的代码自娱自乐一下&#xff0c;就当为梅西加油了。这是梅西最后一届世界杯了。 梅西给我的感觉&#xff0c;踢球足够利落干净&#xff0c;你不会从他的…

AI遮天传 ML/DL-感知机

感知机的出现是人工智能发展史一大重要里程碑&#xff0c;其后才诞生了&#xff1a;多层感知机、卷积神经网络等一系列的经典网络模型。 在我看来&#xff0c;它虽然是深度学习领域的一大开端&#xff0c;但本身解决的只是线性二分类问题&#xff0c;它本身与机器学习经典模型线…

RORγ 反向激动剂-XY101 小分子化合物

早在 2016 年&#xff0c;中国科学院广州生物医药与健康研究院许永教授团队就曾与加州大学戴维斯分校的陈宏武教授合作&#xff0c;首次发现核激素受体 RORγ 是作用于雄激素受体 AR 上游的关键驱动因子&#xff0c;直接调控雄激素受体 AR 的表达。因此&#xff0c;RORγ 成为前…

gitlab+jenkins+harbor次完整CI链条

用一台机器搭harbor 先安装docker工具&#xff0c;因为装harbor需要docker [rootharbor ~]# cd /etc/yum.repos.d [rootharbor yum.repos.d]# wget https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo [rootharbor yum.repos.d]# sed -i s#download.docke…

HTML做一个个人博客页面(纯html代码)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

【网页设计】期末大作业html+css (个人生活记录介绍网站)

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

CNC程序管理NC文件版本管理CNC程序生命周期管理NC程序版本管理

CNC程序管理NC文件版本管理CNC程序生命周期管理NC程序版本管理 ROZRZ 数控程序文档流程管理系统能够实现 NC 数控程序文档及流程的管理&#xff0c;且为企业日后能够进行整体生产资料信息的综合管理做好了在程序代码方面的数据准备&#xff0c;提供了更为方便、快捷、安全的系…

Java——后端开发经验总结(持续更新中)

目录 一、判断实体类 二、图片无法正常显示 三、图片路径存储问题 四、xml注释 五、常用快捷键使用 每日三问 重要配置 一、判断实体类 Assert.notNull&#xff1a; 断言某个值是否为空 优点&#xff1a;告别了if判断为空。缺点&#xff1a;场景比较单一&#xff0c;基本…