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

操作

  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. 自定义变量就是自己定义的变量,并没有其他要求 ↩︎

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

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

相关文章

python(26)查看文件的大小

有时候,在写文件的时候需要判断文件的大小,或者删除空的文件 import os from os.path import join, getsizedef getdirsize(dir):size 0Lfor root, dirs, files in os.walk(dir):print filesfor name in files:print nameprint join(root,name) #输出文…

java 数据结构_Java版-数据结构-队列(数组队列)

前言看过笔者前两篇介绍的 Java版数据结构 数组和 栈的盆友,都给予了笔者一致的好评,在这里笔者感谢大家的认可!!!由于本章介绍的数据结构是 队列,在队列的实现上会基于前面写的 动态数组来实现&#xff0c…

ssh 介绍 和使用 程序不挂起

目录 SSH的安全机制 SSH的安装 启动服务器的SSH服务 SSH两种级别的远程登录 SSH的高级应用 Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在应用层基础上的安全网络协议。它是专为远程登录会话(甚至可以用Windows远程登录Linux服务器进行…

corpus  academic writing

http://micusp.elicorpora.info/ http://corpus.byu.edu/coca/ http://rcpce.engl.polyu.edu.hk/RACorpus/转载于:https://www.cnblogs.com/gisalameda/p/5590034.html

vim命令练习题。

练习题。1. vi 与 vim 有什么区别呢,它们之间有什么关系?答:vi 和vim最大的区别就是编辑一个文本时,vi不会显示颜色,而vim会显示颜色。显示颜色更易于用户进行编辑。vim的这些优势主要体现在以下几个方面:1…

java 四舍五入_Java常用类

每个人的心里,都藏着一个了不起的自己,只要你不颓废,不消极,一直悄悄酝酿着乐观,培养着豁达,坚持着善良,只要在路上,就没有到达不了的远方!BigInteger在Java中&#xff0…

Sublime 插件- px 转rem

一个CSS的px值转rem值的Sublime Text 3自动完成插件。 插件效果如下: 安装 克隆项目 https://github.com/hyb628/cssrem.git进入packages目录:Sublime Text -> Preferences -> Browse Packages...复制下载的cssrem目录到刚才的packges目录里。重…

ansible 批量部署ssh免密钥

1 创建ssh秘钥 yum install epel-release -y yum install sshpass -y ssh-keygen -t rsa 2 批量复制秘钥并授权 ansible web -m shell -a ‘mkdir ~/.ssh’ -k ansible web -m copy -a ‘src~/.ssh/id_rsa.pub dest~/.ssh/authorized_keys mode0600’ -k 3 测试 ssh 10.0.0.2…

window8下安装RabbitMQ

2019独角兽企业重金招聘Python工程师标准>>> 1.下载并安装erlang,http://www.erlang.org/download.html。64位的下载的是otp_win64_19.1.exe 查看是否安装成功: 2.下载RabbitMQ,最新版是2.8.1,http://www.rabbitmq.com/releases/r…

python如何避免转义字符_如何解决因转义字符而报错的问题(在使用python导入文件时)...

有些萌新在初次使用python导入文件时,可能会遇到遇到各种各样的报错。今天我们就来讲讲其中最常见的一种报错---转义字符“\”冲突。问题重述:比如像下面这样,当我们想导入一个常见的csv文件时,发现居然报了这样一个错误&#xff…

同意条款按钮可用

// 同意条款function isaccepted(){ if(document.getElementById("read").checkedtrue){ document.getElementById("submit").disabled false; $(#submit).css("background","#f25618"); }else{ document.getElementById("s…

Ansible执行过程分析、异步模式和速度优化

Ansible系列(七):执行过程分析、异步模式和速度优化 分类: Linux服务篇 undefined 我写了更完善的Ansible专栏文章:一步到位玩儿透Ansible Ansible系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 1.1 ansible执行过程分析 …

gdb 收到SIGPIPE信号

2019独角兽企业重金招聘Python工程师标准>>> handle SIGPIPE noprint nostop 转载于:https://my.oschina.net/u/1176097/blog/761957

列的数目比列的名字要多_你们要的甘特图来啦!还有具体做法哦!

作为项目的负责人,“时间管理”也是极为重要的一环。甘特图作为常用的项目管理工具之一,有助于把一个大型项目划分为几个小部分,并有条理地展示。甘特图(Gantt chart)又称为横道图、条状图(Bar chart)。以提出者亨利劳伦斯甘特(Henry Laurenc…

图片处理拓展篇 : 图片转字符画(ascii)

首先要明确思路, 图片是由像素组成的, 不同的像素有不同的颜色(rgb), 那么既然我们要转化为字符画, 最直接的办法就是利用字符串来替代像素, 也就是用不同的字符串来代表不同的像素. 另外图片一般来讲是彩色的, 而acsii(一般打印在终端上吧) 都是黑白的, 此时就要介绍另外一个概…

使用fping 查看局域网中有哪些ip

安装 fping arp-get install fping 使用方法 fping -g 自己ip地址/24 使用 nmap 也可以查看 但是速度慢些 nmap 功能比fping 功能强大 nmap -sP 自己ip地址/24

算法题:判断字符串是否为 ipv4 地址

#include <stdio.h>typedef char bool; #define true 1 #define false 0/**1.判断字符串是否形如“192.168.1.1”2.字符串两端含有空格视为合法ip&#xff0c;形如“ 192.168.1.1 ”3.字符串中间含有空格视为非法ip&#xff0c;形如“192.168. 1.2”4.字符串0开头视…

未捕获typeerror: $形象。cropper不是函数_没有学不会的python--细说自定义函数的细节...

没有学不会的python函数是什么&#xff1f;老调常谈&#xff0c;还是那老一套&#xff0c;学习一个东西前&#xff0c;先搞懂是什么&#xff0c;再来学习怎么用。函数函数&#xff0c;如果你是刚经历过高考肯定很熟悉&#xff0c;数学中就经常出现这个名词&#xff0c;比如什么…

centos 7.0上RabbitMQ 3.5.6版本多实例启动操作讲解

在很多场景中&#xff0c;我们可能需要单机上启动多个rabbitmq实例&#xff0c;启动多个实例其实就是启用不同的端口。rabbitmq的默认端口为5672,15672,25672&#xff0c;以下经过实际操作绝对原创&#xff0c;亲测有效&#xff0c;耗费了老半天时间&#xff0c;怎么没有白费啊…

win2008r2 AD用户账户的批量导入方法

win2008r2 AD用户账户的批量导入方法 http://www.jb51.net/article/38423.htm 转载于:https://www.cnblogs.com/cl1024cl/p/6205798.html