1、Inventory 庫存清單文件html
1.Inventory 做用python
Ansible 能夠在同一時間針對多個系統設施進行管理工做。它經過選擇Ansible 資源清單文件中列出的系統,該清單文件默認是在/etc/ansible/hosts,也能夠使用 -i <path> 進行路徑的指定。文件內的格式INI 風格,中括號內爲分組名。 除了這個文件以後,還能夠同時使用多個清單文件,能夠動態的獲取,也能夠從外部獲取外部庫存清單文件。雲平臺上去拉取(如AWS,或者Cobbler 的API結合)。web
2.hosts文件格式是INI的格式,以及如何添加主機docker
和以前咱們上篇文中的同樣,以下所示:shell
[centos_group] 172.17.0.2 172.17.0.3
爲了有所區別,學習須要,咱們在添加1個centos-3主機(建立完成後,記得將management的公鑰放到該主機上去,實現免密碼登錄)centos
[root@docker ~]# docker run -d -it --name centos-3 --expose 222 centos_sshd_3
查看下新主機的ipruby
[root@docker ~]# docker exec centos-3 hostname -I 172.17.0.4
而後,咱們在hosts 文件中原有 centos_group組下面,在添加單個組名webserver,組內主機設備爲剛建立的centos-3,也能夠以單個主機ip的方式存在(不過建議同一功能類型都分在組名裏,爲了後期管理方便)完整內容以下:服務器
[centos_group] 172.17.0.2 172.17.0.3 [webserver] 172.17.0.4
[webserver 是組名,用於對系統主機進行功能分類,便於你在統一給web服務器部署管理時,不影響其它主機。這樣你在使用ansible 命令執行時,輸入組名就能夠對.2 和 .3進行管理了。以下:ssh
[root@docker ~]# ansible webserver -m ping 172.17.0.4 | SUCCESS => { "changed": false, "ping": "pong" }
3.非標準的 ssh 端口tcp
這裏有個題外話:在我對centos-3 容器修改sshd 運行端口時,編輯好sshd_config 配置文件後,重啓ssh服務會報一下提示:
[root@731705364b56 /]# systemctl restart sshd Failed to get D-Bus connection: Operation not permitted
我又想到用kill 命令,將sshd 服務進程殺掉,誰知容器卻退出了。成了exited 狀態。
後來查詢資料瞭解到,由於容器的主進程就是CMD運行的命令 ,主進程退出時會退出容器, 在我kill sshd 進程的時候 主進程先退出了, 這時候docker容器也跟着退出了,原來要想讓服務重啓,要用docker 的restart命令。以下:
docker restart centos_3
重啓後,端口運行在配置文件裏指定的端口上啦。
若是你的主機ssh服務不是運行在 標準的22 端口時,在hosts裏面就得更改定義方法了,目前有2種方式:
第一種:
[webserver] 172.17.0.4:222
第二種:
[webserver] web1 ansible_port=222 ansible_host=172.17.0.4
這裏的web1 至關因而個別名。驗證下:
[root@docker ~]# ansible webserver -m ping web1 | SUCCESS => { "changed": false, "ping": "pong" } [root@docker ~]# ansible web1 -m ping web1 | SUCCESS => { "changed": false, "ping": "pong" }
4.大量的主機
若是有不少同一網段和功能,並有規律的主機的話,能夠使用像正則匹配的方式去修改hosts文件。以下:
[webserver] web1 ansible_port=222 ansible_host=172.17.0.4 [test] 172.17.0.[2:3]
運行ansible 驗證下:
[root@docker ~]# ansible test -m ping 172.17.0.2 | SUCCESS => { "changed": false, "ping": "pong" } 172.17.0.3 | SUCCESS => { "changed": false, "ping": "pong" }
除了用數字 定義範圍外,還能夠用字母的方式去匹配主機名,如a到z,a到c 等。
5.包含組的組名
若是你的webserver組的主機因爲centos 系統須要更新一個系統文件,這個時候你在更新centos_group組的組機時,就能夠把webserver組的主機帶上。就出現了帶有 :children關鍵字的組名.
配置文件以下:
[root@docker ~]# cat /etc/ansible/hosts [centos_group] 172.17.0.2 172.17.0.3 [webserver] web1 ansible_port=222 ansible_host=172.17.0.4 [centos:children] centos_group webserver
驗證下:
[root@docker ~]# ansible centos -m ping web1 | SUCCESS => { "changed": false, "ping": "pong" } 172.17.0.2 | SUCCESS => { "changed": false, "ping": "pong" } 172.17.0.3 | SUCCESS => { "changed": false, "ping": "pong" }
2、Inventory 清單參數列表
1.主機鏈接:
ansible_connection:鏈接主機的類型,這裏能夠是ansible鏈接插件的名稱中的一個,如ssh 協議中的 smart,ssh或者paramiko。默認值是smart。
2.ssh 鏈接
使用特權命令(如sudo)
遠程主機環境參數
ansible_shell_type:目標系統的shell 類型,你不該該設置這個參數,除非你設置的 ansible_shell_executable 與默認的sh 不兼容。默認狀況下,命令是在sh shell 環境風格下運行的。此處能夠設置爲csh或fish shell。
some_host ansible_port=2222 ansible_user=manager aws_host ansible_ssh_private_key_file=/home/example/.ssh/aws.pem freebsd_host ansible_python_interpreter=/usr/local/bin/python ruby_module_host ansible_ruby_interpreter=/usr/bin/ruby.1.9.3
非SSH 的鏈接類型
如上面所說,ansible 執行劇本時經過ssh鏈接,可是它又不單單隻侷限於ssh這種鏈接類型。鏈接的類型是能夠變的。以下面的幾種
local:該鏈接類型將在控制機自己上執行劇本。
docker:該鏈接類型將使用本地docker直接將 劇本部署到 docker 容器中。如下是有鏈接器處理的參數:
ansible_host :要鏈接的docker 容器名稱
ansible_user :在容器中操做的用戶名,必須是容器內存在的用戶
ansible_become :若是設置爲 true,這個用戶將被用於在容器內進行操做
ansible_docker_extra_args :能夠是Docker 程序 啓動時支持的額外參數,不是特定的命令,此參數主要用於配置遠程Docker 守護進程使用。
以下是一個建立容器並進行部署的示例:
- name: create jenkins container docker: name: my_jenkins image: jenkins - name: add container to inventory add_host: name: my_jenkins ansible_connection: docker ansible_docker_extra_args: "--tlsverify --tlscacert=/path/to/ca.pem --tlscert=/path/to/client-cert.pem --tlskey=/path/to/client-key.pem -H=tcp://myserver.net:4243" ansible_user: jenkins changed_when: false - name: create directory for ssh keys delegate_to: my_jenkins file: path: "/var/jenkins_home/.ssh/jupiter" state: directory
若是文中有錯誤之處,還但願你們多多指出,互相學習,謝謝。
下一篇再學習下ansible 裏的 patterns。
注:本文屬於飛走不可原創,若有轉載,請務必在文首註明出處。飛走不可:-_-# http://www.cnblogs.com/hanyifeng/p/6137905.html