1.爲何須要自動化部署?node
2.Docker的配置管理nginx
3.使用Chef
(1)安裝docker-engine軟件包示例web
package 'docker-engine' do action :install end
(2)Chef環境部署
A. 註冊Chef服務器
Chef服務器包括cookbook、策略、Docker宿主機的元信息docker
B. 搭建工做站
與Chef服務器進行交互。
Chef資源庫包含了全部須要交互的信息而且保持與Chef服務器同步,還保存了私有密鑰以及其餘須要受權的配置文件。bootstrap
Chef開發工具包包含了全部與讀取chef-repo中配置信息有關的程序。(去官網下載適合的工具包)vim
C. 啓動節點
chef-client負責Chef服務器並下載必要的配置文件,同時將節點配置到預期狀態。服務器
knife bootstrap dockerhost 訪問網站肯定宿主機已註冊成功。
(3)配置Docker宿主機ssh
生成cookbook模板 cd cookbooks chef generate cookbook dockerhost 編輯cookbook cd dockerhost vim metadata.rb name 'dockerhost' maintainer 'The Authors' maintainer_email 'dayun@163.com' license 'all_rights' description 'Installs/Configures dockerhost' long_description 'Installs/Configures dockerhost' version '0.1.0' depends 'apt', '~> 2.7.0' depends 'docker', '~> 0.40.3' 開始安裝 berks install 編寫Chef recipe vim recipes/default.rb apt_repository 'docker' do uri 'http://apt.dockerproject.org/repo' components %w(debian-jessie main) keyserver 'p80.pool.sks-keyservers.net' key '5813fh193f8834fjqewifj9348j34ifjq' cache_rebuild true end package 'docker-engine' 應用部署 上傳Chef cookbook到Chef服務器 berks upload 經過設置run_list應用dockerhost recipe到節點 knife node run_list set dockerhost dockerhost 在dockerhost中執行chef-client ssh dockerhost sudo chef-client
(4)部署Docker容器
解決的問題:工具
建立Chef recipe chef generate recipe . containers (將在dockerhost目錄下建立recipes/containers.rb) 拉取Nginx的Docker鏡像 在containers.rb文件中加入以下行: docker_image 'nginx' do tag '1.9.3' end 配置宿主機運行容器 在containers.rb中添加以下行: node.set['docker']['container_init_type'] = 'systemd' directory '/usr/lib/systemd/system' docker_container 'nginx' do tag '1.9.3' container_name 'webserver' detach true ort '80:80' end 發佈cookbook,經過metadata.rb中指定信息實現 name 'dockerhost' maintainer 'the Authors' maintainer_email 'hdlptz@163.com' license 'all_rights' description 'Installs/Configures dockerhost' long_description 'Installs/Configures dockerhost' version '0.2.0' depends 'apt', '~> 2.7.0' depends 'docker', '~> 0.40.3' 更新Berksfile.lock文件來鎖定全部將要上傳到Chef服務器的cookbook文件版本 berks install 上傳cookbook到Chef服務器 berks upload 添加recipes/containers.rb到Docker宿主機的運行列表 knife node run_list add dockerhost dockerhost::containers 從新運行chef-client來更新Docker宿主機配置 ssh dockerhost sudo chef-client 訪問http://dockerhost確認工做正常
雲提供商開發工具
部署工具