文章目录

  • 环境介绍
    • 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

操作

  1. 创建自定义变量文件目录
# 创建默认目录
[root@master ansible]# mkdir -p /etc/ansible/group_vars
[root@master ansible]# mkdir -p /etc/ansible/host_vars
  1. 为主机和组各创建一个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 目录的配置.


  1. 即一台虚拟机的一个ip地址对应多个hostname ↩︎

  2. 系统变量像前面的ansible_ssh_host等ansible已经占有的变量 ↩︎

  3. 自定义变量就是自己定义的变量,并没有其他要求 ↩︎

Ansible Inventory详细使用介绍相关推荐

  1. 第一章、Ansible的详细介绍与安装

    文章目录 一.自动化与linux系统管理(为什么要学习自动化运维) 二.什么是ansible 三.ansible优点 四.ansible管理方式 五.ansible系统架构 六.openssh连接原理 ...

  2. Ansible Inventory指北进阶

    Ansible的inventory文件定义了它要操作的一些主机,它可以通过inventory对这些主机进行操控.默认的inventory文件是/etc/ansible/hosts .也可通过-i选项, ...

  3. 06 ansible剧本功能实践介绍

    以下例子的配置文件 [rsync:children] rsync_server rsync_client[rsync_server] 192.168.1.5[rsync_client] 192.168 ...

  4. Ansible Inventory内置参数

    参考文章:Ansible Inventory内置参数 - 简书 How to build your inventory - Ansible Documentation /etc/ansible/hos ...

  5. Ansible系列-基础篇-Ansible Inventory的合理化配置

    欢迎关注个人公众号 DailyJobOps 原文地址:Ansible系列-基础篇-Ansible Inventory的合理化配置 这里写目录标题 Ansible Inventory内置参数 Inven ...

  6. python简单代码画曲线图教程-Python绘制折线图和散点图的详细方法介绍(代码示例)...

    本篇文章给大家带来的内容是关于Python绘制折线图和散点图的详细方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.绘制折线图和散点图要用到matplotlib ...

  7. python画折线图代码-Python绘制折线图和散点图的详细方法介绍(代码示例)

    本篇文章给大家带来的内容是关于Python绘制折线图和散点图的详细方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.绘制折线图和散点图要用到matplotlib ...

  8. Window VNC远程控制LINUX:VNC详细配置介绍

    Window VNC远程控制LINUX:VNC详细配置介绍 //---------------------------------------vnc linux下的详细配置 1.VNC的启动/停止/重 ...

  9. linux 安装mysql 8.0_Linux安装mysql 8.0的详细方法介绍(代码示例)

    本篇文章给大家带来的内容是关于Linux安装mysql 8.0的详细方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 经过一番努力下载mysql文件,我们可以开始M ...

最新文章

  1. 如何设置GridView的内框线颜色
  2. 我用过的,我正在用的,比较高效、好用的命令
  3. maven使用出现的错误
  4. 类对象作为函数参数进行值传递
  5. 公司顾问岗位职责_集团公司法律顾问岗位职责
  6. Linux添加环境变量与GCC编译器添加INCLUDE与LIB环境变量
  7. 双十一凌晨苹果发布会,新 Mac 有望搭载 ARM 架构自研芯片
  8. C# Winform开发框架源码 Winform系统开发 图书借阅系统,图书管理系统,说明文档齐全
  9. iOS开发(OC)——音频播放AVPlayer
  10. stm32cubeide烧写程序_STM32Cube工具,覆盖开发全过程(一)
  11. tomcat 启动报错 registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister
  12. matlab失明的小猫,从小失明的小猫,手术后第一次见到猫妈妈,场面让人泪崩!...
  13. html旋转线条,html5 – 为什么我在移动浏览器上看到旋转的条纹?
  14. nginx的快速入门
  15. 计算机教师信息化大赛作品,全国“xx杯”计算机专业类说课大赛优秀作品:信息化色彩搭配训练说课课件.ppt...
  16. Android中DecimalFormat的用法
  17. 16g电脑内存有什么好处_开车播放车载音乐 选择车载U盘有什么好处?
  18. Java基础语法 (Java Doc)
  19. ABAP 创建、修改、删除内部交货单(VL31N/VL32N)
  20. 「VUE」前端实现真正的无感打印(可打印dom、file、url) CSDN首发

热门文章

  1. OpenVINO常用PythonAPI详解与演示
  2. html一般用那种方式定位,使用三种方式定位html中的元素
  3. 九型人格:三、The proformer 实干者 - 我若没有成就,就没有人会爱我。
  4. [Introduction to programming in Java 笔记] 1.3.8 Gambler's ruin simulation 赌徒破产模拟
  5. 今日新闻快讯摘要十条
  6. 《文明之光》第六章读书笔记
  7. COMPA: Detecting Compromised Accounts on Social Networks 论文分析
  8. 微信HTML5页面设计建议
  9. Android输入事件从读取到分发三:InputDispatcherThread线程分发事件的过程
  10. 开环控制系统与闭环控制系统