Ansible中inventory配置說明

2022-06-11 11:30:12 字數 3662 閱讀 2321

1.配置檔案位置

預設的檔案路徑為 /etc/ansible/hosts

除此之外還可以使用動態inventory,如有這個需求可以參考ansible中文指南**:

2.配置檔案格式

方括號「」中表示組名,其下方是主機配置,乙個主機可以屬於多個不同的組。

組內引數通過「[組名:vars]」格式表示。

組的包含關係通過「[組名:children]」格式表示,其下方是成員組。

3.指定主機ssh埠

如果主機ssh埠不是預設22埠,可以在主機後新增「:埠」指明埠號,例如:abcd.example.com:9922

注:ansible使用paramiko進行ssh連線時,不會使用你ssh配置檔案中列出的埠,但是如果修改ansible使用openssh進行ssh連線時將會使用

4.指定主機別名

如果打算給主機起別名給ansible使用,格式如下

web1 ansible_ssh_port = 3333 ansible_ssh_host = 192.168.1.2

注:實際上這是在使用主機變數

5.指定主機範圍

可以按照如下格式對主機名中部分字元進行範圍匹配

[webservers]

www[01:50].yanruogu.com

[databases]

db-[a:f].yanruogu.com

6.inventory自帶變數說明

ansible_ssh_host     #用於指定被管理的主機的真實ip

ansible_ssh_port     #用於指定連線到被管理主機的ssh埠號,預設是22

ansible_ssh_user     #ssh連線時預設使用的使用者名稱

ansible_ssh_pass     #ssh連線時的密碼

ansible_sudo_pass     #使用sudo連線使用者時的密碼

ansible_sudo_exec     #如果sudo命令不在預設路徑,需要指定sudo命令路徑

ansible_ssh_private_key_file     #秘鑰檔案路徑,秘鑰檔案如果不想使用ssh-agent管理時可以使用此選項

ansible_shell_type     #目標系統的shell的型別,預設sh

ansible_connection     #ssh 連線的型別: local ,

ssh , paramiko,在 ansible 1.2 之前預設是 paramiko ,後來智慧型選擇,優先使用基於 controlpersist 的 ssh (支援的前提)

ansible_python_interpreter     #用來指定python直譯器的路徑,預設為/usr/bin/python 同樣可以指定ruby 、perl 的路徑

ansible_*_interpreter     #其他直譯器路徑,用法與ansible_python_interpreter類似,這裡"*"可以是ruby或才perl等其他語言

使用方法例如:

[test]

192.168.1.1 ansible_ssh_user=root ansible_ssh_pass='p@ssw0rd'

192.168.1.2 ansible_ssh_user=breeze ansible_ssh_pass='123456'

192.168.1.3 ansible_ssh_user=bernie ansible_ssh_port=3055

ansible_ssh_pass='456789'

7.主機變數的使用

可以在主機後邊追加變數k/v,如:

8.組內變數的使用

通過「[組名:vars]」的方式定義組內變數

[test]

host1

host2

[test:vars]

ntp_server=192.168.1.10

proxy=192.168.1.20

9.組內包含與組內變數

[haidian]

web1

web2

[yizhuang]

web4

web3

[beijing:children]

haidian

yizhuang

[beijing:vars]

ntp_server=192.168.1.10

zabbix_server=192.168.1.10

[china:children]

beijing

shanghai

上面的示例中,指定了海淀機房有web1、web2;亦莊機房有web3、web4主機;又指定了乙個北京組代表北京地區資料中心,同時包含海淀和亦莊機房;為該組內的所有主機指定了2個vars變數。之後設定了乙個組中國組,包含北京和上海兩地資料中心。

注:vars變數主要用在ansible-playbook中,不支援ad-hoc。

10.單獨的變數檔案或目錄

在 inventory 主檔案中儲存所有的變數並不是最佳的方式。還可以儲存在獨立的檔案中,這些獨立檔案與 inventory 檔案保持關聯。

配置檔案名稱要跟主機或組名完全相同。

主機變數檔案應放在:/etc/ansible/host_vars

組內變數檔案應放在:/etc/ansible/ group_vars

例如建立檔案「/etc/ansible/group_vars/raleigh」來儲存raleigh組的組內變數

vim /etc/ansible/group_vars/raleigh

ntp_server: acme.example.org

database_server: storage.example.org

如果使用變數目錄,變數的目錄名要跟主機或組的名字完全相同,目錄內部的配置檔名可以自行命名。

注:分檔案定義變數的方式只適用於 ansible 1.4 及以上版本

例如建立目錄「/etc/ansible/group_vars/raleigh/」來儲存raleigh組的組內變數,那麼還需要再建立乙個「/etc/ansible/group_vars/raleigh/db_settings」檔案儲存raleigh組的資料庫配置相關變數

vim /etc/ansible/group_vars/raleigh/db_settings

ntp_server: acme.example.org

database_server: storage.example.org

ansible中的變數

ansible中變數的優先順序 命令列中的變數 yml檔案中的變數 roles目錄下vars目錄中的變數 roles目錄下default目錄中的變數 變數寫法 1.命令列變數 ansible playbook i hosts host playbooks echo.yml e key ooo val...

Centos中的ansible安裝

ansible簡單的說是乙個配置管理系統,只需要在管理伺服器上面安裝,就可以通過ssh遠端管理你的其它裝置了。客戶端機器上面需要有python2.5及以上環境,且不支援windows。ansible的使用場景非常廣泛,比如我們需要將乙份檔案拷貝到100臺伺服器,我們只需要呼叫ansible的copy...

使用Ansible中的playbook

playbook 是由乙個或多個play 組成的列表 playbook 檔案使用yaml來寫的 簡介 是一種表達資料序列的格式,類似xml 特點 可讀性好 和指令碼語言互動性號 易於實現 適用程式執行流梳理方式 可擴充套件性強 在檔案中用 開始 在檔案中用 結尾 次行一般書寫檔案內容 縮排嚴格 大小...