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.pswp.cn/news/457768.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457768.shtml
英文地址,請注明出處:http://en.pswp.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