Ansible學(xué)習(xí)——安裝ansible day2

一、環(huán)境

系統(tǒng):centos7
主機(jī) :4臺(tái) 一個(gè)控制節(jié)點(diǎn) 3個(gè)被控制節(jié)點(diǎn)
解析:本地互相解析
192.168.2.37 master
192.168.2.168 node1
192.168.2.145 node2
192.168.2.178 node3

配置ssh公鑰認(rèn)證:
控制節(jié)點(diǎn)需要發(fā)送ssh公鑰給所有非被控制節(jié)點(diǎn)

我將主機(jī)192.168.2.37作為配置管理主機(jī),所以我們需要在192.168.2.37上安裝ansible,剩下的主機(jī)作為受管主機(jī)。

二、配置yum源

[root@manager ~]# yum install epel-release -y

安裝ansible

[root@manager ~]# yum install ansible -y

[root@manager ~]# ansible --version

ansible 2.9.6
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Oct 30 2018, 23:45:53) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
三、ansible程序結(jié)構(gòu)
安裝目錄

通過(guò)使用rpm -ql ansible指令可以查看ansible安裝的所有文件位置!

配置文件目錄:/etc/ansible/
執(zhí)行文件目錄:/usr/bin/
Lib庫(kù)依賴目錄:/usr/lib/PythonX.X/site-packages/ansible/
Help文檔目錄:/usr/share/doc/ansible-X.X.X/
Man文檔目錄:/usr/share/man/man1/
ansible配置文件的查找順序

(1)、檢查環(huán)境變量ANSIBLE_CONFIG指向的路徑文件(export ANSIBLE_CONFIG=/etc/ansible.cfg )
(2)、~/.ansible.cfg,檢查當(dāng)前目錄(/etc/ansible)下的ansible.cfg配置文件
(3)、/etc/ansible.cfg 檢查etc目錄的配置文件

四、ansible配置文件

設(shè)置/etc/ansible/ansible.cfg配置參數(shù),ansible有許多參數(shù),下面列出常用的參數(shù):

inventory:#這個(gè)參數(shù)表示資源清單inventory文件的位置,資源清單就是一些ansible需要連接管理的主 機(jī)列表。這個(gè)參數(shù)的配置實(shí)例如下:

inventory = /etc/ansible/hosts
library: ansible的操作動(dòng)作,無(wú)論是本地或遠(yuǎn)程,都使用一小段代碼來(lái)執(zhí)行,這小段代碼稱為模塊,這個(gè)library參數(shù)就是指向存放ansible模塊的目錄。配置實(shí)例如下:

library = /usr/share/ansible
ansible支持多個(gè)目錄方式,只要用冒號(hào)“ : ”隔開(kāi)就可以,同時(shí)也會(huì)檢查當(dāng)前執(zhí)行playbook位置下的./library目錄。

forks:設(shè)置默認(rèn)情況下ansible最多能有多少個(gè)進(jìn)程同時(shí)工作, 從ansible 1.3開(kāi)始,fork數(shù)量默認(rèn)自動(dòng)設(shè)置為主機(jī)數(shù)量或者潛在的主機(jī)數(shù)量,默認(rèn)設(shè)置最多5個(gè)進(jìn)程并行處理。具體需要設(shè)置多少個(gè),可以根據(jù)控制主機(jī)的性能和被管節(jié)點(diǎn)的數(shù)量來(lái)確定,可能是 50或100。默認(rèn)值5是非常保守的值,配置實(shí)例如下:

forks = 5
sudo_user:這是設(shè)置默認(rèn)執(zhí)行命令的用戶,也可以在playbook中重新設(shè)置這個(gè)參數(shù)。配置實(shí)例如下:

sudo_user = root
remote_port:這是指定連接被管節(jié)點(diǎn)的管理端口,默認(rèn)是22。除非設(shè)置了特殊的SSH端口,不然這個(gè)參數(shù)一般是不需要修改的。
配置實(shí)例如下:

remote_port = 22
host_key_checking:這是設(shè)置是否檢查SSH主機(jī)的密鑰??梢栽O(shè)置為True或False,關(guān)閉后第一次連接沒(méi)有提示配置實(shí)例

host_key_checking = False
timeout:這是設(shè)置SSH連接的超時(shí)間隔,單位是秒。配置實(shí)例如下:

timeout = 60
log_path:ansible系統(tǒng)默認(rèn)是不記錄日志的,如果想把a(bǔ)nsible系統(tǒng)的輸出記錄到日志文件中,需要設(shè)置log_path來(lái)指定一個(gè)存儲(chǔ)ansible日志的文件。配置實(shí)例如下:

log_path = /var/log/ansible.log
另外需要注意,執(zhí)行ansible的用戶需要有寫入日志的權(quán)限,模塊將會(huì)調(diào)用被管節(jié)點(diǎn)的syslog來(lái)記錄。

五、ansible主機(jī)清單

在配置文件中,我們提到了資源清單,這個(gè)清單就是我們的主機(jī)清單,里面保存的是一些 ansible 需要連接管理
的主機(jī)列表。我們可以來(lái)看看他的定義方式:

ansible主機(jī)清單設(shè)置
編輯/etc/ansible/hosts:

[root@manager ~]# vim /etc/ansible/hosts #定義方式:

1、直接指明主機(jī)地址或主機(jī)名
192.168.2.168
192.168.2.145
192.168.2.178

2、定義一個(gè)主機(jī)組[組名]把地址或主機(jī)名加進(jìn)去
[webservers]
192.168.2.168
192.168.2.145
組成員可以使用通配符來(lái)匹配,如下 192.168.2.145.[1:6] #表示匹配從192.168.2.1------192.168.2.6的主機(jī)

需要注意的是,這里的組成員可以使用通配符來(lái)匹配,這樣對(duì)于一些標(biāo)準(zhǔn)化的管理來(lái)說(shuō)就很輕松方便了。
我們可以根據(jù)實(shí)際情況來(lái)配置我們的主機(jī)列表,具體操作如下:
[root@manager ~]# vim /etc/ansible/hosts
[web]
192.168.2.168
192.168.2.145

六、ansible配置公私鑰

配置ansible使用公鑰驗(yàn)證
配置這個(gè)的原因是為了方便ansible可以實(shí)現(xiàn)無(wú)秘訪問(wèn)控制其他機(jī)器,是實(shí)現(xiàn)自動(dòng)化的前提。這一步可以再配置好ansible.cfg文件以及hosts主機(jī)清單后執(zhí)行。

雖然ansible支持其他主機(jī)認(rèn)證方式,但是我們最常用的的還是基于秘鑰的認(rèn)證:
1、首先生成秘鑰

執(zhí)行下條指令后一路回車即可!
[root@manager ~]# ssh-keygen -t rsa
2、然后向主機(jī)分發(fā)秘鑰:

所有添加到主機(jī)清單中的IP地址或者主機(jī)名,全部都要用下條指令執(zhí)行一遍。
[root@manager ~]# ssh-copy-id root@IP地址
3、如果出現(xiàn)以下情況:

-bash: ssh-copy-id: command not found

請(qǐng)嘗試:

[root@manager ~]# yum -y install openssh-clientsansible
七、測(cè)試

語(yǔ)法:
ansible <pattern> -m <module_name> -a <arguments>
pattern--主機(jī)清單里定義的主機(jī)組名,主機(jī)名,IP,別名等,all表示所有的主機(jī),支持通配符,正則
: --多個(gè)組,組名之間用冒號(hào)隔開(kāi)
web --組名或主機(jī)名中含web的
webservers[0] - webservers組中的第一臺(tái)主機(jī)
以~開(kāi)頭,匹配正則
-m module_name: 模塊名稱,默認(rèn)為command
-a arguments: 傳遞給模塊的參數(shù)

使用ping模塊檢查ansible節(jié)點(diǎn)的連通性:
[root@manager ~]# ansible 192.168.2.168 -m ping

192.168.2.168 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

[root@manager ~]# ansible 192.168.2.168 -m ping -o

192.168.2.168 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"}

這樣就說(shuō)明我們的主機(jī)是連通狀態(tài)的。接下來(lái)的操作才可以正常進(jìn)行。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容