ansible的静态清单配置文件

news2024/12/23 8:54:50

清单文件

定义主机清单文件

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

编写主机清单文件


     主机清单文件默认存放在/etc/ansible/hosts下,文本编辑方式为INI,定义受控主机有三种方式 

     1、直接定义
     2、组
     3、嵌套组
值得注意的是嵌套组的定义格式为 [嵌套组名:children] 这个children是必带的

检验清单

第一种方式
#ansible 组名 --list-hosts
======================注意===============================
默认的两种组名有以下两种
all 主机组含有清单中明确列出的每一个主机
ungrouped 主机组含有清单中明确列出、但不属于任何其他组的每一个主机
=============================================================
第二种方式(图表形式显示)
查看主机组

Ansible-inventory --graph

当然也可以使用自定义的清单文件,只需要加上一个-i 的参数就行 

当然若每次执行命令都用-i较为麻烦 于是可以更改默认配置文件

配置文件


那如何查看自己现在的默认配置文件在哪里呢 

       第一行就是显示的是默认的配置文件在哪里 ansible与其他服务不一样 若有其他设置的话,那么只要执行命令时的路径不同,那么这个默认配置文件就有可能不同

      ansible默认配置文件在/etc/ansible/ansible.cfg下  由于现在系统的更新,该配置文件下面只有一些注释,若想要查到到一些示例,需要进行初始化操作一下

 然后执行如下命令即可,若不想覆盖可以使用   >>

ansible-config init --disabled > ansible.cfg

 ansible配置文件的优先级

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

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

优先匹配ANSIBLE_CONFIG环境变量,其次是匹配当前目录下是否有配置文件,然后是匹配用户家目录下是否有配置文件,最后匹配默认的/etc/ansible/ansible.cfg下 

ansible配置文件设置

[defaults]
inventory = ./inventory                          #主机列表配置文件
library = /usr/share/my_modules                #库文件存放目录
forks = 5             #默认并发数5 (同时可以处理5个命令--同时有20个节点主机5个主机执行在5个执行)
sudo_user = root     #默认的sudo用户 root
ask_sudo_pass = Ture   
ask_pass = false        #每次执行ansible命令是否询问ssh密码
remout_port = 22        
host_key_checking = False  #检查对应服务器的host_key,建议取消注释
log_path = /var/log/ansible.log   #ansible日志文件
module_name = command     #默认模块,可以改为shell
remote_user = user        #要在受管主机上登录的用户名称,没有指定则是当前用户(受管、管控、托管主机的用户名)
remote_tmp = ~/.ansible/tmp #临时的py命令文件存放在远程主机目录
 
[privilege_escalation]    #特权升级
become = true             #连接后是否在受管主机上切换用户,默认会切换到root下
become_method = sudo     #如何切换用户
become_user = root         #受管主机切换到的用户
become_ask_pass = false     #是否为become_method提示输入密码,默认为false
```

       而特权升级其实就是   控制端若想在受控端执行一些需要特定权限的命令时,不需要加上sudo命令了

Ansible三个命令模块


       command,shell,raw这三个模块尽量避免使用,因为都不支持幂等性 (幂等性:简单来讲,就是输入相同,输出相同,无论多少次比如说,确认接口,如果传入订单号,返回确认OK,如果已经确认过了,再次调用确认接口,返回如果还是确认OK,那么这个接口就是满足幂等性.)

command,shell,raw模块的区别


相同点:要求受管主机上安装Python。

不同点:command可以在受管主机上执行shell命令,但是不支持环境变量和操作符(例如 '|', '<', '>', '&')

​ shell模块调用的/bin/sh指令执行。

raw模块:

不需要受管主机上安装Python,直接使用远程shell运行命令,通常用于无法安装Python的系统(例如网络设备等)。

script模块可以运行shell脚本

练习:

安装并且配置ansible:

         1)安装和配置ansible以及ansible控制节点server.example.com如下:

         2)创建一个名为/home/student/ansible/inventory的静态库存文件如下所示:

                2.1)node1 是dev主机组的成员

                2.2)node2是test主机组的成员

                2.3)node1和node2是prod主机组的成员

                2.4)node1是balancers主机组的一员

                2.5)prod组是webservers主机组的成员


1)安装和配置ansible以及ansible控制节点server.example.com如下:


         1、需要保准三台主机能够互相通信,设置同一种网络模式(nat)

         2、配置静态ip地址

[root@localhost ~]# nmcli connection modify ens160  ipv4.addresses  192.168.186.100/24
 
[root@localhost ~]# nmcli connection modify ens160  ipv4.gateway 192.168.186.2 ipv4.dns192.168.186.2 ipv4.method  manualconnection.autoconnect yes
 
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160
 
[root@localhost ~]# nmcli connection up ens160
server--192.168.186.100     node1---192.168.186.111      node2---192.168.186.222

        3、更改主机名

hostnamectl set-hostname server.example.com
hostnamectl set-hostname node1.example.com
hostnamectl set-hostname node2.example.com

  控制主机server:

[root@localhost ~]# hostnamectl set-hostname server.example.com
[root@localhost ~]# bash
[root@server ~]# 

受控主机node1:

[root@localhost ~]# hostnamectl set-hostname node1.example.com
[root@localhost ~]# bash
[root@node1 ~]# 

受控主机node2:

[root@localhost ~]# hostnamectl set-hostname node2.example.com
[root@localhost ~]# bash
[root@node2 ~]# 

 4、更改时间:

timedatectl set-timezone Asia/Shanghai
 
[root@node1 ~]# timedatectl set-timezone Asia/Shanghai
[root@node1 ~]# date
2023年 01月 01日 星期日 18:28:24 CST
[root@node1 ~]# 

 5、安装常用软件工具

    配置yum源安装常用软件工具

[root@server ~]# yum install vim-enhanced net-tools bash-completion -y
正在更新 Subscription Management 软件仓库。
      机构
本系统已在权利服务器中注册,但没有接收更新。可使用 subscription-manager 分配订阅。
 
baseos                                                          2.0 MB/s | 2.7 kB     00:00    
AppStream                                                       3.1 MB/s | 3.2 kB     00:00    
Extra Packages for Enterprise Linux 9 - x86_64                   15 kB/s | 7.8 kB     00:00    
Extra Packages for Enterprise Linux 9 - x86_64                  3.5 MB/s |  12 MB     00:03    
软件包 vim-enhanced-2:8.2.2637-16.el9_0.3.x86_64 已安装。
软件包 net-tools-2.0-0.62.20160912git.el9.x86_64 已安装。
软件包 bash-completion-1:2.11-4.el9.noarch 已安装。
依赖关系解决。
无需任何处理。
完毕!
[root@server ~]# 

  6、配置centos8基础源

#vim  /etc/yum.repos.d/base.repo
[AppStream]
name=AppStream
baseurl=https://mirrors.aliyun.com/centos/8-stream/AppStream/x86_64/os/
gpgcheck=0
 
[BaseOS]
name=AppStream
baseurl=https://mirrors.aliyun.com/centos/8-stream/BaseOS/x86_64/os/
gpgcheck=0

 7、配置epel

(1)、#yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
 
(2)、#sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
 
(3)、#sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
 
(4)、#yum install ansible -y
 
(5)、#ansible --version

   8、修改/etc/hosts的内容信息

 #vim   /etc/hosts       
192.168.101.111  node1 node1.exmaple.com
192.168.101.222  node2 node2.exmaple.com
192.168.101.100  server server.example.com

2)创建一个名为/home/student/ansible/inventory的静态库存文件如下所示:

  1、server.example.com 主机创建student普通用户 

[root@server ~]# useradd student
[root@server ~]# su student
[student@server root]$ 

2、创建ansible文件

[student@server ~]$ pwd
/home/student
[root@server student]# mkdir /home/student/ansible

3、完成需求:

                3.1)node1 是dev主机组的成员

                3.2)node2是test主机组的成员

                3.3)node1和node2是prod主机组的成员

                3.4)node1是balancers主机组的一员

                3.5)prod组是webservers主机组的成员

[root@server student]# vim /home/student/ansible/inventory

[root@server ansible]# ansible-inventory --graph


4、创建一个名为/home/student/ansible.cfg的配置文件

 

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

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

相关文章

归置归置,我的 2022

J3code杂文&#xff08;程序人生 # 年终总结&#xff09; 记得 2021 年我没有进行年终总结&#xff0c;也就没有发出过相关的内容出来。总结原因就是一个&#xff0c;躺平了&#xff0c;自毕业换工作之后&#xff0c;就一直在适应工作环境与生活环境中默默的度过了 2021 年。 …

你真的懂树吗?二叉树、AVL平衡二叉树、伸展树、B-树和B+树原理和实现代码详解...

树&#xff08;Tree&#xff09;是一种相当灵活的数据结构&#xff08;上一节已经详细讲解了基本的数据结构&#xff1a;线性表、栈和队列&#xff09;&#xff0c;你可能接触过二叉树&#xff0c;但是树的使用并不限于此&#xff0c;从简单的使用二叉树进行数据排序&#xff0…

(深度学习快速入门)第三章第一节:多层感知器简介

文章目录一&#xff1a;引入二&#xff1a;定义三&#xff1a;反向传播算法四&#xff1a;构建多层感知器完成波士顿房价预测一&#xff1a;引入 前文所讲到的波士顿房价预测案例中&#xff0c;涉及到的仅仅是一个非常简单的神经网络&#xff0c;它只含有输入层和输出层 但观…

vue3 antd项目实战——Form表单的重置与清空【resetFields重置表单未生效(手写重置函数)】

vue3 antd项目实战——resetFields重置表单无效【手写重置函数重置表单数据】关于form表单的文章合集场景复现原因分析解决方案(手写清空函数)关于form表单的文章合集 文章内容文章链接Form表单提交和校验https://blog.csdn.net/XSL_HR/article/details/128495087?spm1001.20…

面向对象定义一个hero类

问题定义一个hero类&#xff0c;属性有power&#xff0c;name&#xff0c;分别代表体力值和英雄的名字&#xff0c;体力值默认为100&#xff1b;方法有&#xff1a;1.行走的方法如果体力值为0&#xff0c;则输出不能行走&#xff0c;此英雌已死亡的信息&#xff1b;2.吃的方法&…

双非二本、已获HCIA认证的大二学生与C站相遇的2022

目录 前言 2022年1月、2月——迷茫 2022年3月~6月——调整规划 ​2022年7月——在CSDN发布第一篇博客 2022年8月——步入正轨&#xff0c;获得2022谷歌开发者大会入场名额 2022年9月~10月——开学季&#xff0c;收获季 2022年11月——第一次接触项目并去公司学习实践&…

01通信/协议一些简要概念

通信的目的 将一个设备的数据传送到另一个设备&#xff0c;扩展硬件系统。 通信协议 制定通信的规则&#xff0c;通信双方按照协议规则进行数据收发。 每一种通讯协议都有硬件与软件上的要求。 常见的协议 USART TX、RX 全双工 异步 单端 点对点 I2C SCL、SDA 半双…

百度大规模知识图谱构建及技术应用实践

省时查报告-专业、及时、全面的行研报告库省时查方案-专业、及时、全面的营销策划方案库【免费下载】2022年11月份热门报告盘点罗振宇2023年跨年演讲PPT原稿2023年&#xff0c;如何科学制定年度规划&#xff1f;《底层逻辑》高清配图‍基于深度学习的个性化推荐系统实时化改造与…

【Node.js实战】一文带你开发博客项目之登录(对接完毕,cookie、session、redis各司其职)

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;也会涉及到服务端 &#x1f4c3;个人状态&#xff1a; 在校大学生一枚&#xff0c;已拿多个前端 offer&#xff08;秋招&#xff09; &#x1f680;未…

【蓝桥杯选拔赛真题54】Scratch小猫钓鱼 少儿编程scratch图形化编程 蓝桥杯选拔赛真题讲解

目录 scratch小猫钓鱼 一、题目要求 编程实现 二、案例分析 1、角色分析

河道船只识别系统 yolov5

河道船只识别系统通过Python基于YOLOv5深度学习框架模型技术对画面中船只进行监测&#xff0c;如识别到有船只违规行为&#xff0c;立即抓拍告警同步回传给平台。YOLOv5是一种单阶段目标检测算法&#xff0c;该算法在YOLOv4的基础上添加了一些新的改进思路&#xff0c;使其速度…

写了个自动巡检多个接口地址的脚本!

作者&#xff1a;JackTian 来源&#xff1a;公众号「杰哥的IT之旅」 ID&#xff1a;Jake_Internet 转载请联系授权&#xff08;微信ID&#xff1a;Hc220088&#xff09; 原文链接&#xff1a;写了个自动巡检多个接口地址的脚本&#xff01; 没错&#xff0c;这次我结合工作运用…

【C语言】你对动态内存分配有多少了解呢

&#x1f3d6;️作者&#xff1a;malloc不出对象 ⛺专栏&#xff1a;《初识C语言》 &#x1f466;个人简介&#xff1a;一名双非本科院校大二在读的科班编程菜鸟&#xff0c;努力编程只为赶上各位大佬的步伐&#x1f648;&#x1f648; 目录前言一、什么是动态内存分配二、为什…

SpringBoot(二)【学习笔记】

SpringBoot的配置文件 之前SSM项目: 每一个框架都有自己的配置文件, 每一个配置文件头文件不一样, 需要找到每个框架的头文件 SpringBoot的配置文件: 所有的框架的配置项,都可以在application.properties文件配置, 如果自定义一些配置, 修改SpringBoot默认的配置项, 可以在appl…

JAVA语言程序设计基础入门技术教程

JAVA语言程序设计基础 第一章&#xff1a;JAVA入门基础–开山篇 视频&#xff1a;https://edu.csdn.net/course/detail/8034 前言&#xff1a;什么是java 是咖啡飘香的清晨是斯坦福校园意浓情深是James的思想睿智是剁手党双十一挥舞的利刃是大数据服务的平台是春运时节那期…

Java高手速成│实战:应用数据库和GUI开发产品销售管理软件(1)

实战项目&#xff1a;应用数据库和GUI开发产品销售管理软件 01、项目分析 应用各种数据库编程技术&#xff0c;并利用GUI组件&#xff0c;例如按钮、标签、文本字段提供增添、更新、删除产品销售记录等功能。利用JTable显示产品销售数据表中的记录。图1显示了这个实战项目的典…

【目标检测】FPN网络全解

目录&#xff1a;FPN网络详解一、引言二、论文概述2.1 图像金字塔2.2 为什么需要构造特征金字塔三、论文详解四、FPN框架解析五、为什么FPN能够很好的处理小目标&#xff1f;六、FPN总结一、引言 这篇论文是CVPR2017年的文章&#xff0c;采用特征金字塔做目标检测&#xff0c;…

让程序“说话”pyttsx3模块

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 让程序“说话” pyttsx3模块 选择题 关于下列代码说法错误的是? import pyttsx3 enginepyttsx3.init() engine.setProperty(rate,180) engine.say(我喜欢学习python数据分析&#x…

统信软件根社区斩获CSDN两项大奖

在CSDN 2022中国开发者影响力盛典中&#xff0c;统信软件根社区凭借多年的深耕与投入以及社区影响力&#xff0c;荣获CSDN 2022年度开发者社区&#xff1b;旗下社区发行版deepin荣获CSDN 2022年度开源影响力项目。 CSDN颁奖现场 “CSDN 2022 中国开发者影响力年度评选”自 20…

温故知新:从计算机体系结构看操作系统

知识诅咒&#xff08;Curse of Knowledge&#xff09;&#xff0c;是指我们掌握了某知识&#xff0c;就很难体会没有它的感觉&#xff0c;不理解获得知识以前的状态及还未获得该知识的人&#xff0c;从而产生沟通障碍。计算机体系结构正在消亡 (Architecture is dying)&#xf…