ansible基本使用

2022-03-26 17:34:42 字數 3216 閱讀 8184

ansible是個配置管理工具,可以批量處理一些任務。ansible只需要依賴ssh即可使用,而不需要在受管主機上安裝客戶端工具。

ansible具有冪等性,即以結果為導向。比如,當我們拉取檔案到本地時,如果本地有該檔案則不再拉取,如果本地沒有該檔案則拉取。

使用ansible需要滿足兩個基本條件:

安裝首先使用pip可以安裝ansible

sudo pip install ansible
安裝方法有多種,可參考:

基於密碼連線配置

ansible的管理清單檔案是/etc/ansible/hosts

在該檔案底部加上:

192.168.0.45 ansible_port=22 ansible_user=root ansible_ssh_pass=123456
ansible_port:埠號

ansible_user:使用者名稱

ansible_ssh_pass:密碼

然後就可以使用命令了,如ansible 192.168.0.45 -m ping

使用ip位址比較麻煩,我們可以為主機指定別名

test ansible_host=192.168.0.45 ansible_port=22 ansible_user=root ansible_ssh_pass=123456
然後就可以使用別名進行連線,ansible test -m ping

基於金鑰連線配置

修改配置檔案為

192.168.0.45 ansible_port=22
使用別名時改為

test ansible_host=192.168.0.45 ansible_port=22
當有多個金鑰時可以使用ssh-agent進行管理,也可以在配置中通過ansible_ssh_private_key_file指定連線主機使用的金鑰。

以上介紹的都是對乙個主機執行命令,實際上可以對多台機器同時進行

ansible all -m ping
上面的命令是對配置檔案中所有的機器執行ping命令,由此得到啟發,對某一部分機器執行相同的命令,所以就需要對機器進行分組。

[a]

192.168.0.45

192.168.0.46

[b]192.168.0.47

所以可以對某乙個組內的機器執行同乙個命令

ansible a -m ping
當ip位址連續時也可以採用如下方式

[a]

192.168.0.[45:46]

同樣的,如果是網域名稱中某個字母是連續的也可以採用類似的方式

[a]

suraer-a.book.net

suraer-b.book.net

[a]

suraer-[a:b].book.com

當組之間有包含關係時,還可以使用子組的方式,如下

[a]

192.168.0.45

[b]192.168.0.46

[c:children]

[a][b]

等價於

[a]

192.168.0.45

[b]192.168.0.46

[c]192.168.0.45

192.168.0.46

# yaml格式

all:

hosts:

192.168.0.45

192.168.0.46

# 對應的ini配置

192.168.0.45

192.168.0.46

採用yaml格式有兩個要注意的地方:

下面舉兩個栗子說明yaml格式與ini格式之間的轉換關係:

# ini格式

192.168.0.47

[a]192.168.0.45

[b]192.168.0.46

# yaml格式

all:

hosts:

192.168.0.47

children:

a:hosts:

192.168.0.45

b:hosts:

192.168.0.46

# ini格式

[a]192.168.0.45

[b]192.168.0.46

[c:children]

[a][b]

# yaml格式

all:

children:

c:children:

a:hosts:

192.168.0.45

b:hosts:

192.168.0.46

yaml格式同樣可以使用別名,如下:

# ini格式

192.168.0.45

test ansible_host=192.168.0.46 ansible_port=22

192.168.0.47

# yaml格式

all:

hosts:

192.168.0.45

test:

ansible_host: 192.168.0.46

ansible_port: 22

192.168.0.47

注意,上面的冒號後面一定要有空格。

在前面的例子中,我們都是使用ping模組,實際上ansible有許多模組,可以使用如下命令檢視那ansible有哪些模組:

ansible-doc -l
檢視具體模組的詳細使用方法,使用如下命令:

ansible-doc -s fetch
檢視了命令就可以對照引數進行使用了,比如將a組中的所有主機的/etc/fstab檔案拉取到本地:

ansible a -m fetch -a "src=/etc/fstab dest=/test/ansible"

Ansible基本使用

角色 作業系統 網路位址 管理主機 ubuntu 14.04 tls 192.168.200.250 託管節點 ubuntu 16.04 tls 192.168.200.11 192.168.200.12 sudo apt get install software properties common...

ansible 基本使用 1

ansible 當前主流的批量配置管理工具,相比於saltstack 它是無agent 模式,基於ssh 去遠端管理主機。有密碼和金鑰兩種方式遠端認證方式。yum y install ansible 前提是有epel 源,如果沒有需要安裝 pip install ansible github原始碼包...

ansible的安裝及基本使用

1.安裝ansible 如果沒有版本和別的要求,這裡直接使用yum安裝 yum y install ansible 檢視版本 root 0006 ansible version ansible 2.4.2.0 config file etc ansible ansible.cfg executabl...