Ansible Inventory详细使用介绍
文章目录
- 环境介绍
- ansible ssh配置
- 操作
- 测试
- /etc/hosts 配置
- Inventory文件
- 主机与组
- 主机变量、组变量
- 把一个组变成另一个组的子成员
- 变量太多了,不好管理怎么办?来,分文件定义主机变量和组变量
- 操作
环境介绍
为了练习方便,本次使用一台虚拟机,多个主机名模拟多台虚拟机操作1,省事省力,方便学习。
- 操作系统 centos7
- 虚拟机数量 1台
- 使用root账户进行操作
ansible ssh配置
操作
# 若已经配置,则无须再次执行此处命令
[root@master ~]# ssh-keygen
[root@master ~]# cd .ssh/
[root@master .ssh]# cat id_rsa.pub >> authorized_keys
测试
ssh localhost
/etc/hosts 配置
[root@master ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6172.16.176.200 master test1 test2 test3
Inventory文件
Ansible 可同时操作属于一个组的多台主机,组和主机之间的关系通过 inventory 文件配置. 默认的文件路径为 /etc/ansible/hosts。简单理解
/etc/ansible/hosts
就是Inventory文件。目的就是存储主机与组之间的关系。
有点懵?主机我可能知道,但什么是组,靠什么定义组
主机与组
主机: /etc/hosts 配置的主机名,通过DNS获取的域名,都可称为主机
组:一类主机的组合
[root@master ansible]# cat /etc/ansible/hosts
master #主机,此处和/etc/hosts内容对应
test1[test] # 主机组,包含一系列主机,可以附加端口号的
test1:22
test2[test_other] # test2 机属于 test组也属于test_other组
test2
test3
方括号
[]
中是组名,用于对系统进行分类,便于对不同系统进行个别的管理。一个主机可以属于多个组哦
如果有主机的SSH端口不是标准的22端口,可在主机名之后加上端口号,用冒号分隔。
端口号不是默认设置时,可明确的表示为:
master:5309
假设你有一些静态IP地址,希望设置一些别名,但不是在系统的 host 文件中设置,又或者你是通过隧道在连接,那么可以设置如下:
testhost ansible_ssh_host=192.168.0.200 ansible_ssh_port=22
主机变量、组变量
变量:变量可分为系统变量2和自定义变量3
系统变量说明
ansible_ssh_host将要连接的远程主机名.与你想要设定的主机的别名不同的话,可通过此变量设置.ansible_ssh_portssh端口号.如果不是默认的端口号,通过此变量设置.ansible_ssh_user默认的 ssh 用户名ansible_ssh_passssh 密码(这种方式并不安全,我们强烈建议使用 --ask-pass 或 SSH 密钥)ansible_sudo_passsudo 密码(这种方式并不安全,我们强烈建议使用 --ask-sudo-pass)ansible_sudo_exe (new in version 1.8)sudo 命令路径(适用于1.8及以上版本)ansible_connection与主机的连接类型.比如:local, ssh 或者 paramiko. Ansible 1.2 以前默认使用 paramiko.1.2 以后默认使用 'smart','smart' 方式会根据是否支持 ControlPersist, 来判断'ssh' 方式是否可行.ansible_ssh_private_key_filessh 使用的私钥文件.适用于有多个密钥,而你不想使用 SSH 代理的情况.ansible_shell_type目标系统的shell类型.默认情况下,命令的执行使用 'sh' 语法,可设置为 'csh' 或 'fish'.ansible_python_interpreter目标主机的 python 路径.适用于的情况: 系统中有多个 Python, 或者命令路径不是"/usr/bin/python",比如 \*BSD, 或者 /usr/bin/python不是 2.X 版本的 Python.我们不使用 "/usr/bin/env" 机制,因为这要求远程用户的路径设置正确,且要求 "python" 可执行程序名不可为 python以外的名字(实际有可能名为python26).与 ansible_python_interpreter 的工作方式相同,可设定如 ruby 或 perl 的路径....
主机变量:就是一个主机可携带其他参数,而这些参数可以给playbooks使用
组变量:一个组下的变量可供给这个组的全部成员使用,目的就是减少重复配置
[root@master ansible]# cat hosts
master
test1
test_local ansible_ssh_host=192.168.0.200[test]
test1
test2[test_other]
test2
test3[test:vars] # 组变量标识:vars,要设置组变量这个标志是必须的
http_port=2222 # test组内的所有主机都可以拿到此变量
max_proc=20# test组内的所有主机都可以拿到此变量
把一个组变成另一个组的子成员
[root@master ansible]# cat hosts
master
test1
test_local ansible_ssh_host=192.168.0.200[test]
test1
test2[test_other]
test2
test3[test:vars]
http_port=2222
max_proc=20# 在这里 test_all = test + test_other 是等于关系哦
[test_all:children] # test_all组包含 test组及test_other组的所有成员
test
test_other
变量太多了,不好管理怎么办?来,分文件定义主机变量和组变量
不同于 inventory 文件
/etc/ansible/hosts
(INI 格式),这些独立(子)文件的格式为 YAML
操作
- 创建自定义变量文件目录
# 创建默认目录
[root@master ansible]# mkdir -p /etc/ansible/group_vars
[root@master ansible]# mkdir -p /etc/ansible/host_vars
- 为主机和组各创建一个yaml格式文件
# 主机变量,对应test1
[root@master host_vars]# cat /etc/ansible/host_vars/test1
---
ntp_server: 192.168.202.111# 组变量,对应[test]组
[root@master group_vars]# cat /etc/ansible/group_vars/test
---
http_port: 22
database: localhost
还有更进一步的运用,你可以为一个主机
,或一个组
,创建一个目录
,目录名就是主机名或组名.目录中的可以创建多个文件, 文件中的变量都会被读取为主机或组的变量,支持版本
Ansible1.4+
# 主机变量,对应test1
[root@master host_vars]# cat /etc/ansible/host_vars/test1/config
---
ntp_server: 192.168.202.111# 组变量,对应[test]组
[root@master group_vars]# cat /etc/ansible/group_vars/test/config
---
http_port: 22
database: localhost
Tip
: Ansible 1.2
及以上的版本中,group_vars/ 和 host_vars/ 目录可放在 inventory 目录下,或是 playbook 目录下. 如果两个目录下都存在,那么 playbook 目录下的配置会覆盖 inventory 目录的配置.
即一台虚拟机的一个ip地址对应多个hostname ↩︎
系统变量像前面的
ansible_ssh_host
等ansible已经占有的变量 ↩︎自定义变量就是自己定义的变量,并没有其他要求 ↩︎
Ansible Inventory详细使用介绍相关推荐
- 第一章、Ansible的详细介绍与安装
文章目录 一.自动化与linux系统管理(为什么要学习自动化运维) 二.什么是ansible 三.ansible优点 四.ansible管理方式 五.ansible系统架构 六.openssh连接原理 ...
- Ansible Inventory指北进阶
Ansible的inventory文件定义了它要操作的一些主机,它可以通过inventory对这些主机进行操控.默认的inventory文件是/etc/ansible/hosts .也可通过-i选项, ...
- 06 ansible剧本功能实践介绍
以下例子的配置文件 [rsync:children] rsync_server rsync_client[rsync_server] 192.168.1.5[rsync_client] 192.168 ...
- Ansible Inventory内置参数
参考文章:Ansible Inventory内置参数 - 简书 How to build your inventory - Ansible Documentation /etc/ansible/hos ...
- Ansible系列-基础篇-Ansible Inventory的合理化配置
欢迎关注个人公众号 DailyJobOps 原文地址:Ansible系列-基础篇-Ansible Inventory的合理化配置 这里写目录标题 Ansible Inventory内置参数 Inven ...
- python简单代码画曲线图教程-Python绘制折线图和散点图的详细方法介绍(代码示例)...
本篇文章给大家带来的内容是关于Python绘制折线图和散点图的详细方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.绘制折线图和散点图要用到matplotlib ...
- python画折线图代码-Python绘制折线图和散点图的详细方法介绍(代码示例)
本篇文章给大家带来的内容是关于Python绘制折线图和散点图的详细方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.绘制折线图和散点图要用到matplotlib ...
- Window VNC远程控制LINUX:VNC详细配置介绍
Window VNC远程控制LINUX:VNC详细配置介绍 //---------------------------------------vnc linux下的详细配置 1.VNC的启动/停止/重 ...
- linux 安装mysql 8.0_Linux安装mysql 8.0的详细方法介绍(代码示例)
本篇文章给大家带来的内容是关于Linux安装mysql 8.0的详细方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 经过一番努力下载mysql文件,我们可以开始M ...
最新文章
- 如何设置GridView的内框线颜色
- 我用过的,我正在用的,比较高效、好用的命令
- maven使用出现的错误
- 类对象作为函数参数进行值传递
- 公司顾问岗位职责_集团公司法律顾问岗位职责
- Linux添加环境变量与GCC编译器添加INCLUDE与LIB环境变量
- 双十一凌晨苹果发布会,新 Mac 有望搭载 ARM 架构自研芯片
- C# Winform开发框架源码 Winform系统开发 图书借阅系统,图书管理系统,说明文档齐全
- iOS开发(OC)——音频播放AVPlayer
- stm32cubeide烧写程序_STM32Cube工具,覆盖开发全过程(一)
- tomcat 启动报错 registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister
- matlab失明的小猫,从小失明的小猫,手术后第一次见到猫妈妈,场面让人泪崩!...
- html旋转线条,html5 – 为什么我在移动浏览器上看到旋转的条纹?
- nginx的快速入门
- 计算机教师信息化大赛作品,全国“xx杯”计算机专业类说课大赛优秀作品:信息化色彩搭配训练说课课件.ppt...
- Android中DecimalFormat的用法
- 16g电脑内存有什么好处_开车播放车载音乐 选择车载U盘有什么好处?
- Java基础语法 (Java Doc)
- ABAP 创建、修改、删除内部交货单(VL31N/VL32N)
- 「VUE」前端实现真正的无感打印(可打印dom、file、url) CSDN首发
热门文章
- OpenVINO常用PythonAPI详解与演示
- html一般用那种方式定位,使用三种方式定位html中的元素
- 九型人格:三、The proformer 实干者 - 我若没有成就,就没有人会爱我。
- [Introduction to programming in Java 笔记] 1.3.8 Gambler's ruin simulation 赌徒破产模拟
- 今日新闻快讯摘要十条
- 《文明之光》第六章读书笔记
- COMPA: Detecting Compromised Accounts on Social Networks 论文分析
- 微信HTML5页面设计建议
- Android输入事件从读取到分发三:InputDispatcherThread线程分发事件的过程
- 开环控制系统与闭环控制系统