您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Python自動化運維之Ansible定義主機與組規則操作的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Python自動化運維之Ansible定義主機與組規則操作的示例分析”這篇文章吧。
一 點睛
Ansible通過定義好的主機與組規則(Inventory)對匹配的目標主機進行遠程操作,配置規則文件默認是/etc/ansible/hosts。
二 定義主機與組
所有定義的主機與組規則都在/etc/Ansible/hosts文件中,為ini文件格式,主機可以用域名、IP、別名進行標識,其中webservers、dbservers 為組名,緊跟著的主機為其成員。格式如下:
mail.example.com 192.168.1.21:2135 [webservers] foo.example.com bar.example.com 192.168.1.22 [dbservers] one.example.com two.example.com three.example.com 192.168.1.23
其中,192.168.1.21:2135的意思是定義一個SSH服務端口為2135的主機。
當然我們也可以使用別名來描述一臺主機。
jumper ansible_ssh_port=22 ansible_ssh_host=192.168.1.50
jumper為定義的一個別名,ansible_ssh_port為主機SSH服務端口, ansible_ssh_host為目標主機。
更多變量說明如下:
ansible_ssh_host:連接目標主機的地址。
ansible_ssh_port:連接目標主機SSH端口,端口22無需指定。
ansible_ssh_user:連接目標主機默認用戶。
ansible_ssh_pass:連接目標主機默認用戶密碼。
ansible_connection:目標主機連接類型,可以是local、ssh或 paramiko。
ansible_ssh_private_key_file:連接目標主機的ssh私鑰。
ansible_*_interpreter:指定采用非Python的其他腳本語言,如 Ruby、Perl或其他類似ansible_python_interpreter解釋器。
組成員主機名稱支持正則描述,例如:
[webservers] www[01:50].example.com [databases] db-[a:f].example.com
三 定義主機變量
主機可以指定變量,以便后面供Playbooks配置使用,比如定義主機hosts1及hosts2上Apache參數http_port及maxRequestsPerChild,目的是讓兩臺主機產生Apache配置文件httpd.conf差異化,定義格式如下:
[atlanta] host1 http_port=80 maxRequestsPerChild=808 host2 http_port=303 maxRequestsPerChild=909
四 定義組變量
組變量的作用域是覆蓋組所有成員,通過定義一個新塊,塊名由 組名+“:vars”組成,定義格式如下:
[atlanta] host1 host2 [atlanta:vars] ntp_server=ntp.atlanta.example.com proxy=proxy.atlanta.example.com
五 嵌套組
Ansible支持組嵌套組,通過定義一個新塊,塊名由組名+“: children”組成,舉例如下:
[atlanta] host1 host2 [raleigh] host2 host3 [southeast:children] atlanta raleigh [southeast:vars] some_server=foo.southeast.example.com halon_system_timeout=30 self_destruct_countdown=60 escape_pods=2 [usa:children] southeast northeast southwest southeast
六 分離主機與組特定數據
為了更好規范定義的主機與組變量,Ansible支持 將/etc/ansible/hosts定義的主機名與組變量單獨剝離出來存放到指定的文件中,將采用YAML格式存放,存放位置規定:“/etc/ansible/group_vars/+組名”和“/etc/ansible/host_vars/+主機名”分別存放指定組名或主機名定義的變量。
七 匹配目標
目標 (Patterns)匹配,格式為:ansible<pattern_goes_here>-m<module_name>-a<arguments>。
舉例說明:重啟webservers組的所有Apache服務。
ansible webservers -m service -a "name=httpd state=restarted"
<pattern_goes_here>參數的使用方法,詳細規則及含義見下表:
以上是“Python自動化運維之Ansible定義主機與組規則操作的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。