一、ansible主機和組的配置
1、簡單的主機和組
ansible的配置文件位於/etc/ansible目錄下,主要有ansible.cfg、hosts文件。本節重點介紹主機與組定義文件/etc/ansible/hosts.
/etc/ansible/hosts最簡單的格式如下:
www.ixdba.net
[webservers]
ixdba1.net
ixdba2.net
[dbservers]
db.ixdba1.net
db.ixdba2.net
中括號中的名字代表組名,可以根據需求將龐大的主機分成具有標識的組,如上面分了兩個組webservers和dbservers組;
主機(hosts)部分可以使用域名、主機名、IP地址表示;當然使用前兩者時,也需要主機能反解析到相應的IP地址,一般此類配置中多使用IP地址;
未分組的機器需保留在hosts的頂部。
2、指定主機范圍
可在/etc/ansible/hosts文件中,指定主機的范圍,示例如下:
[web]
www[01:50].ixdba.net
[db]
db[a:f].ixdba.ent
3、主機變量
以下是Hosts部分中經常用到的變量部分:
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,在ansible1.2之前默認是paramiko ,后來智能選擇,優先使用基於ControlPersist 的ssh
ansible_python_interpreter #用來指定python解釋器的路徑,默認為/usr/bin/python 同樣可以指定ruby 、perl的路徑
ansible_*_interpreter #其他解釋器路徑,用法與ansible_python_interpreter類似,這里"*"可以是ruby或perl等其它語言
示例:
[web]
192.168.78.11 http_port=80
192.168.78.12 http_port=80
還可以改成這樣:
[web]
192.168.78.11
192.168.78.12
[web:vars]
http_port=80
[webhost]
host1
host2
[dbhost]
host2
host3
[allhosts:children]
webhost
Dbhost
主機組可以包含主機組,主機的變量可以通過繼承關系,繼承到最高等級的組的變量。定義主機組之間的繼承關系我們使用":children"來表示
二、ansible.cfg與默認配置
/etc/ansible/ansible.cfg文件中定義了ansible的主機的默認配置部分,如默認是否需要輸入密碼、是否開啟sudo認證、action_plugins插件的位置、hosts主機組的位置、是否開啟log功能、默認端口、key文件位置等等。
#inventory = /etc/ansible/hosts 該參數表示資源清單inventory文件的位置,資源清單就是一些Ansible需要連接管理的主機列表
#library = /usr/share/my_modules/ Ansible的操作動作,無論是本地或遠程,都使用一小段代碼來執行,這小段代碼稱為模塊,這個library參數就是指向存放Ansible模塊的目錄
#module_utils= /usr/share/my_module_utils/
#remote_tmp= ~/.ansible/tmp指定遠程執行的路徑
#local_tmp= ~/.ansible/tmpansible管理節點的執行路徑
#forks = 5 forks 設置默認情況下Ansible最多能有多少個進程同時工作,默認設置最多5個進程並行處理。具體需要設置多少個,可以根據控制主機的性能和被管理節點的數量來確定。
#poll_interval= 15 輪詢間隔
#sudo_user= root sudo使用的默認用戶,默認是root
#ask_sudo_pass= True 是否需要用戶輸入sudo密碼
#ask_pass= True 是否需要用戶輸入連接密碼
#remote_port= 22 這是指定連接對端節點的管理端口,默認是22,除非設置了特殊的SSH端口,不然這個參數一般是不需要修改的
#module_lang= C 這是默認模塊和系統之間通信的計算機語言,默認為'C'語言.
host_key_checking= False 跳過ssh首次連接提示驗證部分,False表示跳過。
#timeout = 10 連接超時時間
#module_name= command 指定ansible默認的執行模塊
#nocolor= 1 默認ansible會為輸出結果加上顏色,用來更好的區分狀態信息和失敗信息.如果你想關閉這一功能,可以把'nocolor'設置為'1':
#private_key_file=/path/to/file.pem在使用ssh公鑰私鑰登錄系統時候,使用的密鑰路徑。